工具/软件:Code Composer Studio
我选择
Registers.OVTrip = (unsigned char)(((unsigned short)(((OVPThreshold - Registers.ADCOffset)/增益 + 0.5) - OV_THRESH_base) >> 4) & 0xFF);
Registers.UVTrip = (unsigned char)((((unsigned short)((UVPThreshold - Registers.ADCOffset)/增益 + 0.5) - UV_THRESH_base) >> 4) & 0xFF);
我的电池4系列的实际电压为(位4短接): VC[0]= 3270 MV VC[1]= 3272 MV VC[2]= 3276 MV VC[3]= 46 MV VC[4]= 3268 MV
我将 OV 阈值设置为3700、将 UV 阈值设置为3500、并发现芯片上没有操作、并且未设置 SysStatus 的 UV。
我将 OV 阈值设置为2、700、UV 阈值设置为2、500。 我发现芯片中没有活动、并且不会设置 SysStatus 的 OV。
为什么??
下面是寄存器 BQ76920的初始化值。 看看是否有任何问题。
/**SYS_STAT=0x0**/
/**CELLBAL1=0x0**/
/**SYS_CTRL1=0x90**/
/**SYS_CTRL2=0x40**/
/**PROTECT1=0xA**/
/**PROTECT2=0x51**/
/**PROTECT3=0x90**/
/**OV_TRIP=b7 **/
/**UV_TRIP=0x86**/
/*** CC_CFG=0x19**/
另一个问题是、当我使用 MCU 运行 DSG 时、如果没有额外的延迟、通常无法将 SYS_CTRL2的 DSG 设置为1。
通常是写入1进入、再次读取、发现仍然为0。 添加了延迟、以便稍后进入、正常。 麻烦帮助你看,谢谢!
空操作数 DSG (无符号字符_DSG)
{
while (BQ_ReadRegisterByte (SYS_CTRL2、&(Registers.SysCtrl2.SysCtrl2Byte)));
if (Registers.SysCtrl2.SysCtrl2BIT.DSG_on!=_DSG)
{
代尔马女士(3);
register.SysCtrl2.SysCtrl2BIT.DSG_ON=_DSG;
代尔马女士(3);
while (BQ_WriteRegisterByte (SYS_CTRL2、Registers.SysCtrl2.SysCtrl2Byte));
}
}