This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ27542-G1 I2C通信问题



STM32通过I2C与BQ27542通信,以获取电池电压为例,发送完0x08地址信息以后、等待,然后必须延时2s(如下标红的代码所示)左右才能获取到电压值,否则获取的值都是0xFF,为什么需要这么长的延时时间,这是什么原因?

static T_U16 DrvBQ27542Read(T_U8 reg)
{

T_U16 reg_value;


DrvIICStart();

//send write command
DrvIICSendByte(COMMAND_BQ27542_WRITE);
//wait ack
DrvIICWaitAck();

//send address
DrvIICSendByte(reg);
//wait ack
DrvIICWaitAck();

DelayMs(2000);

//I2C start
DrvIICStart();
//send read command
DrvIICSendByte(COMMAND_BQ27542_READ);

//wait ack
DrvIICWaitAck();

DelayUs(500);

//lsb value
reg_value_lsb = DrvIICReadByte(1);

DelayUs(100);

//msb value
reg_value_msb = DrvIICReadByte(0);

reg_value = ((reg_value_msb << 8)&0xff00)|(reg_value_lsb&0x00ff);

//I2C stop
DrvIICStop();

return reg_value;

}