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

bq3060 SMBus通信异常,有图,求解!

你好!

    我使用stm32的I2C2与bq3060 SMBus通信时,遇到以下问题,如图:

    图中,我试图通过发送0x16 0x0d来读取bq3060电池电量百分比,但发现,在发送0x16器件地址时,bq3060能正常拉低sda,进行ack应答,而当随后发送的0x0d寄存器地址时,bq3060不但未将sda拉低,反而将clk拉低,期间我无法通过stm32引脚端将clk拉高。

    在读取所有寄存器时均如此,求解?!

Cheng.W:

bq3060并不会拉低clk

看波形,可以检查以下CLK的上拉配置是由MCU内部上拉的么?

检查以下是否内部上拉配置的问题,后者尝试外部上拉。

TAO HU:

回复 Cheng.W:

MCU内部选择的是复用开漏输出模式,而外部也进行了上拉。

MCU使用该接口能够与其他芯片通过SMBus通信,但此次与bq3060通信却失败了。

TAO HU:

回复 Cheng.W:

MCU内部选择的是复用开漏输出模式,而外部也进行了上拉。

MCU使用该接口能够与其他芯片通过SMBus通信,但此次与bq3060通信却失败了。

Hugo Zhang:

回复 TAO HU:

你的第二个字节好像少了一个ACK的clock吧?你看一下第三个字节的第一bit是否被拉低了?

TAO HU:

回复 Hugo Zhang:

已经解决的了,是SMBus时钟的问题;时钟频率设置过高,所以出现了上面的现象。后将时钟频率设置到100KHz以下,就可以通讯了。

但奇怪的是,当分别读取四节电池电压时,有一节电池电压读取不出来。而总电压又是另外三节电池电压的读取和。

Hugo Zhang:

回复 TAO HU:

建议用TI的上位机软件和EV2300来读一下电池包的电压数据,看是否现象一致。如果这样读出来的电压是正常的,那还是说明你用MCU的读取方式有问题。

tech air:

回复 TAO HU:

能给我参考下你的MCU与3060通过Smbus通讯的程序吗?

赞(0)
未经允许不得转载:TI中文支持网 » bq3060 SMBus通信异常,有图,求解!
分享到: 更多 (0)