DSP通过I2C通信与ZLG72128芯片互传数据。在调试过程中发现,I2C通信会不定时的结束发送,且不能恢复,具体情形如下:
1,当其他任务中断开启时,且在I2C的写函数中,将I2C的MDR寄存器的STT位先置1,再将STP位置1,会出现发送几十帧数据后停止发送。(将其他任务中断关闭后,I2C通信收发均不出现故障)
2,当其他任务中断开启时,且在I2C的写函数中,将I2C的MDR寄存器的STP位先置1,再将STT位置1,I2C通信收发均不出现故障
3, 当其他任务中断开启时,且在I2C的写函数中,将I2C的MDR寄存器的STT位先置1,加入一定延时后,再将STP位置1,I2C通信收发均不出现故障
Green Deng:
你好,这个问题可以参考一下这个帖子:e2echina.ti.com/…/189387
,
user6441406:
非常感谢你的回复,我也看了你推荐的帖子,发现里面的问题及方法和我遇到的情况不一样。我是在STT位置1后紧接着将STP位置1,发送几帧数据后就无法发送了,如果在中间加入一定延时,则不会出现。或者先将STP位置1,再将STT位置1,也不会出现故障。我想搞清这种现象的原因是什么?
这是出现I2C停止发送现象的发数据代码
图片是I2C停止发送的最后一帧错误数据
,
Green Deng:
你好,请问有没有检测过I2C状态寄存器在错误出现的时候的状态是怎么样的?
,
leaonliu:
请问,还有人跟踪这个问题吗,我遇到了很类似的情况,也是280049的I2C该发STOP位的时候没有发送,具体提问和波形在这里
e2echina.ti.com/…/200515