打印

求I2C总线锁死方法!

[复制链接]
3587|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子乌托邦|  楼主 | 2010-9-1 08:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
YuanShangCun| | 2010-9-1 09:31 | 只看该作者
少发一个CLK,让从机一直占据总线即可。
也不一定需要9个clk解锁,SDA变高之后就不用发了

使用特权

评论回复
板凳
yan2005| | 2010-9-1 12:59 | 只看该作者
我以前遇到过的:
理想情况下面,主机发送8bit之后就希望收到 1个ACK。这样主机和从器件(slave)有来有往,整个数据传输操作就能进行下去。但是实际上,主机发送8bit,从器件不一定就能收到8个bit,这可能是数据在总线上传输的时候受到了干扰(有多种可能)。从器件收不到8个bit,那么就不会有ACK。这个时候从器件看起来就像锁死了一样。

这种情况下面,硬件的I2C控制器就无能为力了。只能把I2C的SDA和SCL配成gpio,然后自己手工去发高低点平,直到SDA和SCL都返回空闲状态为止。

使用特权

评论回复
地板
zhaoyu2005| | 2010-9-1 14:05 | 只看该作者
这也叫锁死?能通过软件解除,不需要重新上电的,那不是锁死,是程序写的不好,通讯必须得超时处理,不能死等啊

使用特权

评论回复
5
ljm810010| | 2010-9-1 14:38 | 只看该作者
就算有通信超时处理也不能解决硬件锁死,这与一般的串口通信超时完全两个概念。

使用特权

评论回复
6
yewuyi| | 2010-9-1 14:52 | 只看该作者
锁死是因为SCL\SDA被低电平拉死导致。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

140

主题

633

帖子

2

粉丝