如图所示,这是我用逻辑分析仪得到的波形,我用单片机LPC1114做I2C通讯,bq34z100总是得不到ack,我先发0xab,没有ack,在发0x08也没有。
硬件检测Vreg=3.6V, Vreg25=2.5V,上拉电阻为10k,貌似硬件好像也没有什么错误。
手头上也没有ev2300或ev2400,请问各位究竟是什么原因?
Cheng.W:
AB是读取的 如果要读取0x8的寄存器值, 发送顺序 0xAA, 0x08, start , 0xAB, 等待返回, 发送end,
Kenny Wong:
回复 Cheng.W:
但是发AB之后,器件至少也要有ack吧?但是现在很明显期间连ack都没有?如何确定单片机已经和芯片通讯了呢?
Kenny Wong:
回复 Cheng.W:
你好,现在发送AA后,器件的确会有ack,但是通讯不稳定,有时候会收到ack,有时候收不到,这是什么原因,该如何解决?
Cheng.W:
回复 Kenny Wong:
通讯指令之间,最好增加一些延迟时间 2ms
Kenny Wong:
回复 Cheng.W:
你好,我发现还是有个小问题,我按照下面的顺序发送指令:
先发起始信号St,再发0xAA,得到ack,再发0x08,得到ack,再发起始信号Sr,最后再发0xAB。在发了0xAB之后也得到ack,但接着读到的两个数据都是0xff 和0xff,明显是不正确的。 有时在发送0xAB后也接收不到ack。
这个究竟是什么回事?
Cheng.W:
回复 Kenny Wong:
从你给的图上看, 发送发送Sr信号到发0xAB之间的间隔至少有300us,
另外, 似乎你的“再发起始信号Sr” , 从图上也没有看到sr信号出来, I2C信号默认是高
这个可以在你的工具上设定一下么?
最好把完整的波形看一下