TI中文支持网
TI专业的中文技术问题搜集分享网站

单片机与bq34z100评估板 I2C通信,读取无应答

bq34z100评估板与EV2300通信正常,

与单片机模拟I2C通信时,发送数据,无读取应答。

*****************************************************************

读取一个字节的SoC,指令是0x02,程序流程如下:

开始I2C;发送(0xaa);读取应答;

发送(0x02);读取应答;

开始I2C;发送(0xab);读取应答;

读取数据;发送应答;

停止I2C;

*****************************************************************************

以下是示波器截图,4张图是连续的,对应上面的程序流程

Cheng.W:

发送地址就没有ACK,

在发送数据时,最好不要用MCU内部上拉, 用外部上拉,并且,在等待ACK时,将SDA需要 配置成输入高阻,读取ACK应答信号

Wei Zhang29:

回复 Cheng.W:

单片机设置的是输入并且没设置上拉,用的评估板的外部上拉,  就是没应答。 EV2300却一切正常,这个芯片是不是需要什么特别的时序需要注意。

我程序中的I2C驱动,和TI的INA226进行I2C通信是没有问题的。同样的程序和bq34z100就没应答。

harry wu1:

回复 Wei Zhang29:

可否把I2C通讯的代码放上来,共享一下。

harry wu1:

回复 Wei Zhang29:

如果要读电压 ,对应的Command code为0x08/0x09,这怎么还有两个command啊?怎么怎么去读电压呢?(STAR->AA->08->09->RESTAR-AB-DATA1-DATA2)是这样吗?可否分享一下EV2300读BQ34Z100电压时的波形呢?

Wei Zhang29:

回复 harry wu1:

0x08,0x09类似数据存放的地址,电压的低字节在0x08,高字节在0x09。

读电压:

START/

写0xaa/ 读ACK/*********************每次写数据后,读ACK也要等待,不断检测SDA 直到被拉低,再跳出ACK

写0x08/ 读ACK/****************

RESTART/ 

写0xab/ 读ACK/****************

延时(约140us)********************读数据前的这个延时很重要

读(0x08)数据/ 发ACK/

延时(约140us)*******

读(0x09)数据/

STOP 

Cheng.W:

回复 Wei Zhang29:

是的,直接拉取下一个clk就可以得到下个地址的寄存器

赞(0)
未经允许不得转载:TI中文支持网 » 单片机与bq34z100评估板 I2C通信,读取无应答
分享到: 更多 (0)