feat(adc): 添加三相电流零点配平并扩展初始化错误上报

- ADC: 新增 zero_calibrate() 函数,在上电后采集 200 帧计算各通道零点偏差
- ADC: 修改 current_adc_to_ma() 支持逐通道扣除配平后的零点偏移
- ADC: 调整电流采样引脚为模拟输入模式并优化采样时间至 13.5 周期
- CAN: STATUS 帧字节 32~35 新增 InitStatus 字段,反馈初始化错误位图
- main: 细化初始化错误检测,分别标记角度/ADC/CAN/Kalman/FOC/门驱动故障
- config.h: 新增 INIT_ERR_* 错误码定义及 CURRENT_ZERO_CAL_LIMIT 阈值
This commit is contained in:
cbb
2026-09-07 03:34:47 +08:00
parent 7c4aaa5ee6
commit 25ed2a2bde
7 changed files with 250 additions and 36 deletions
+12
View File
@@ -38,6 +38,18 @@ static inline void pack_u16_to_bytes(u8 *buffer, u16 offset, u16 value) {
buffer[offset + 1] = (u8)((value >> 8) & 0xFF);
}
/**
* @brief pack_u32_to_bytes 函数(小端)
* @param[in] buffer 参数
* @param[in] offset 参数
* @param[in] value 参数
* @return void
*/
static inline void pack_u32_to_bytes(u8 *buffer, u16 offset, u32 value) {
pack_u16_to_bytes(buffer, offset, (u16)(value & 0xFFFF));
pack_u16_to_bytes(buffer, offset + 2, (u16)((value >> 16) & 0xFFFF));
}
// 将 mA 电流值饱和转换为 int16 后按小端打包。
// DBC 中 U/V/W current 定义为 signed int16([-32768,32767] mA);
// 相电流有正有负,此前用 u16() 打包负值被削成 0,上位机波形下半周丢失。