Part Number:BQ40Z50Other Parts Discussed in Thread: EV2400, BQSTUDIO
最近有个项目需要用到BQ40Z50,但是在单片机和BQ40Z50通讯时,在发送地址0x16后,BQ40Z50一直没有给应答,程序一直卡在这里,使用的是硬件I2C,VCC为3.3V,且这些频率都测试过(10k,50k,100k,400k),但是都不行,有没有用过的朋友可以解答一下
Star Xu:
您好,建议您用BQSTUDIO通讯验证能正常通讯,再用EV2400只读取一个数,如电池电压,然后用示波器把i2c的波形抓取下来。再抓一下自己软件编写的的i2c波形,同样读取这个电压,看看两者有什么区别,很快就能定位到问题。比如ACK信号有没有?发送地址对不对?发送命令时序对不对等。
,
?? ?:
之前用硬件I2C发送完器件地址0x16后BQ40Z50没有给应答,现在换成软件模拟I2C测试并用示波器抓了一下波形,发现发送完器件地址后BQ40Z50给应答了,但是继续发送内部寄存器地址0x09后,又没有给应答了
,
Star Xu:
您好,Please refer to 7.33 Timing Requirements: SMBus for clock timing and data hold times. It should match Figure 4. SMBus Timing Diagram in datasheet.
,
?? ?:
好的,谢谢您的回答
,
Star Xu:
你好,如果还是不能通讯建议检查硬件是否有问题。如果有评估板建议用评估板做一下验证。
,
?? ?:
问题以解决,总结一下:BQ40Z50写通信地址:0x16,读通信地址:0x17,如果发送完器件地址且应答后,在发送完内部寄存器地址后需等待85us以上(应答位在85us后才出现,保险起见,我在程序中等待了90us),另外通信两根线的上拉电阻阻值不能过小(过小通信时BQ40Z50可能不应答),我用的是20k电阻
,
Star Xu:
您好,很高心您的问题已解决,感谢分享经验。