各位工程师!
我在使用BQ76940的过程中,能够正常打开CHG_ON,DSG_ON,但是,我清除CC_Ready 标志的时候,CHG_ON,DSG_ON被断开。我的具体步骤和读写寄存器如下:
result = I2CReadBlockWithCRC(BQMAXIMO, SYS_CTRL2, &bqMaximoSYS_STATConfig, 1); //获取SYS_CTRL2的值,回读bqMaximoSYS_STATConfig=0x03
result = I2CReadBlockWithCRC(BQMAXIMO, SYS_STAT, &bqMaximoSYS_STATConfig, 1); //获取SYS_STAT的值,回读bqMaximoSYS_STATConfig=0x80
result = I2CWriteBlockWithCRC(BQMAXIMO, SYS_STAT, &bqMaximoSYS_STATWrite, 1); //清除CC_READY,写入bqMaximoSYS_STATWrite=0x80,写入后,CHG_ON,DSG_ON被断开。
result = I2CReadBlockWithCRC(BQMAXIMO, SYS_STAT, &bqMaximoSYS_STATConfig, 1); //获取SYS_STAT的值,回读bqMaximoSYS_STATConfig=0x10
result = I2CReadBlockWithCRC(BQMAXIMO, SYS_CTRL2, &bqMaximoSYS_STATConfig, 1); //获取SYS_CTRL2的值,回读bqMaximoSYS_STATConfig=0x00
我不明白,我只是清除了CC_Ready 标志,为什么会引起我的CHG_ON和DSG_ON被断开,这样,我就采集不了电流,并且也没办法让系统正常运行。同时,我的ALERT pin也一是高电平。该引脚,我是用了一个910K电阻下拉到地。下面给出我读取电流的一小段代码。请各位工程师给予指导。谢谢。
double CCReadings = 0; //uv
int UpdateCurrent(void)
{
int result = 0;
unsigned char *pRawADCData = NULL;
s16 iTemp = 0;
u8 isCCReadyFlag = 0;
isCCReadyFlag = IsCCReady();
if( isCCReadyFlag )
{
result = I2CReadBlockWithCRC(BQMAXIMO,0x32,&(Registers.CC.CCByte.CC_HI),2);
pRawADCData = &Registers.CC.CCByte.CC_HI;
iTemp = (s16)((*pRawADCData << 8) + *(pRawADCData + 1));
CCReadings = iTemp * CCADCLSB; //uV
fShuntCurrent = VoltageToCurrent(CCReadings); //mA
}
result = HandleSYS_STAT_CC_READY();
}
WU LANBIN:
使用BQ76940的时候,CHG_ON,DSG_ON打开,电压只有3.3V?我通过控制,能够正常开断CHG_ON和DSG_ON,电压值为0-3.3V。请问,这是为什么?不是应该是0-12V吗?请指教。
haibing xu:
回复 WU LANBIN:
您是如何解决的啊 ?