TI中文支持网
TI专业的中文技术问题咨询交流网站

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;
}

Star Xu:

您好,可能跟时钟频率有关。您可以调整时钟频率看会不会有变化。

赞(0)
未经允许不得转载:TI中文支持网 » BQ27542-G1 I2C通信问题
分享到: 更多 (0)