微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > bq3060 SMBus通信异常,有图,求解!

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

时间:10-02 整理:3721RD 点击:

你好!

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

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

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

bq3060并不会拉低clk

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

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

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

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

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

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

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

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

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top