你好,我在BQ76942这款AFE配置了SCD保护,短路保护阈值为120A,但是在测试过程中会出现误报SCD的现象,在期间接的负载最大电流为3A,CC2电流采样也未出现超过3A的电流。
当触发了SCD故障,CHG、DSG FET会被断开。
尝试将 Protections:SCD:Threshold提高为100mV(电阻0.5毫欧姆,即短路电流阈值200A),仍然会频繁出现误报SCD的现象。
当我将SCD功能关闭后,不会出现该现象。
下图是我在调试时回读寄存器Safety status A的值:
显示触发了SCD故障。
保护功能的相关寄存器配置下:
//配置Enabled Protections A 见datasheet146 OCC SCD OCD1
u8WriteBuff[0] = 0x80;
ret_fg = bq76942_AFE_WRITE_FUNC(MEM_ENABLED_PROTECTIONS_A,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置Enabled Protections B 见datasheet146 COV CUV
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_ENABLED_PROTECTIONS_B,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置Enabled Protections C 见datasheet148 Host Watchdog Fault
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_ENABLED_PROTECTIONS_C,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置CHG FET Protections A 见datasheet148 OCC
u8WriteBuff[0] = 0x98;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_CHG_FET_PROTECTIONS_A,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置CHG FET Protections B 见datasheet148
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_CHG_FET_PROTECTIONS_B,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置CHG FET Protections C 见datasheet149
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_CHG_FET_PROTECTIONS_C,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
#endif
//配置DSG FET Protections A 见datasheet150 OCD1和SCD
u8WriteBuff[0] = 0x80;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_DSG_FET_PROTECTIONS_A,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置SCD:Threshold 见datasheet171 SCD
u8WriteBuff[0] = 3; //超过60mV(120A)切断DSG
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_SCD_THRESHOLD,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置SCD:Delay 见datasheet171 SCD
u8WriteBuff[0] = 17; //延时240us
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_SCD_DELAY,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置DSG FET Protections B 见datasheet150
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_DSG_FET_PROTECTIONS_B,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);
//配置DSG FET Protections C 见datasheet151
u8WriteBuff[0] = 0x00;
ret_fg &= bq76942_AFE_WRITE_FUNC(MEM_DSG_FET_PROTECTIONS_C,1,u8WriteBuff, SUBCOMMAND);
delay_ms(55);