[其他ST产品] str710 iic 错误

[复制链接]
7600|27
 楼主| shenmou 发表于 2007-4-15 14:52 | 显示全部楼层

在顶下

这个问题还是存在的,现在只是用软件的方法在遇到这个问题的时候避开。但是,最好还是可以知道硬件上面引起这个错误的原因。
 
香水城 发表于 2007-4-15 16:46 | 显示全部楼层

看过波形吗?你是如何用软件的方法避开的?

zizzfish 发表于 2007-4-15 22:42 | 显示全部楼层

710的硬件I2C很不好使。

以前用来操作24C512,发现I2C经常死。
不得以改用模拟的。
 楼主| shenmou 发表于 2007-4-16 18:29 | 显示全部楼层

hoho 遇到知音了

示波器也看过的,发生错误的时候,data 线有波形,clk 没有波形
浪淘沙 发表于 2007-4-16 18:35 | 显示全部楼层

楼主能把示波器的波形发上来吗?它对我们分析你的问题非

你是在发送I2C地址时出问题,我希望看到整个发送地址的波形,从START位到停止位。
 楼主| shenmou 发表于 2007-4-17 16:23 | 显示全部楼层

示波器比较差,没有输出功能

香水城 发表于 2007-4-25 15:12 | 显示全部楼层

楼主是否可以分享一下你是如何回避这个问题的

提醒一下,请检查你的I2C设备在上电之后需要多长时间才能进入正常工作状态,你是否在I2C设备还未稳定时就对它进行操作,造成I2C设备通讯失败。
xhtwork 发表于 2007-10-6 17:27 | 显示全部楼层

这个问题确实是存在的,我也碰到了

我使用的是str710,在I2C上只带了一个时钟芯片:PCF8563,每秒读一次,短至几分钟,长至2天会出现死机,后来经过检查跟楼主主贴描述的情况完全一致:在发送完地址后,无法等到ENDAD。我100%肯定这个问题跟上电过程无关。

我认为这是CPU 没有检测到ACK造成的,开始我想有可能是外设因为某种原因没有发出ACK,或者ACK被干扰了,但既然这个问题在楼主的设备里也出现了,应该基本可以断言是CPU本身的bug。

至于变长参数,是标准C语言必须支持的,我不认为IAR的编译器会有问题。
当然,我没有分析相关汇编代码,只是觉得不太可能!

从实用的角度,程序员处理I2C的ACK异常是必须的,其实是手册中给出的通信流程误导了用户,好像每次通信都应该是正常的,好像可以死等ENDAD。只要明白I2C通信是会失败的,软件应该处理偶发的通信失败,那么这个问题实际上就不算什么严重的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部