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:
@@ -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,上位机波形下半周丢失。
|
||||
|
||||
Reference in New Issue
Block a user