I2C通信的两个问题

[复制链接]
4329|14
 楼主| laibour 发表于 2011-11-15 14:03 | 显示全部楼层 |阅读模式
1、在做一个项目的时候,用到多主一从的硬件I2C,采用总线竞争的方式进行通信。在测试的过程中,有出现过两个主芯片同时收到数据产生竞争,其中一个抢到线的主芯片一直进入I2C中断,但是不会发数据出来,导致“死”在那里了。这样由于总线没有被释放,其它的主芯片也就没办法通信。不知道大家有没有遇到过,是什么原因?
2、I2C通信时,我采用了校验和重发机制。收到停止位后,若数据不全或者校验错误,就用一个引脚用作信号线通知主芯片,让主芯片重发一次。重发正确的数据后就释放这根信号线。不知道这种重发机制正不正确,有没有其它更好一点的方法。
 楼主| laibour 发表于 2011-11-16 08:02 | 显示全部楼层
自己顶一下,期待有人回答,谢谢!
yewuyi 发表于 2011-11-16 08:27 | 显示全部楼层
抢到总线的肯定要发送数据到从机,此时其它主机释放总线,当前主机发送完数据后自然要释放总线,不释放还有什么意义?
 楼主| laibour 发表于 2011-11-16 08:31 | 显示全部楼层
3# yewuyi
问题是,抢到总线的主机只是一直进入中断,而不发送数据。导致接线一直被占据着,整个系统就死掉了。
ayb_ice 发表于 2011-11-16 10:49 | 显示全部楼层
3# yewuyi  
问题是,抢到总线的主机只是一直进入中断,而不发送数据。导致接线一直被占据着,整个系统就死掉了。
laibour 发表于 2011-11-16 08:31

占着茅坑不拉屎,别人当然没有办法
xaq79 发表于 2011-11-16 11:15 | 显示全部楼层
为什么搞这么多主?其他主怎么识别总行被占用?
yewuyi 发表于 2011-11-16 12:08 | 显示全部楼层
3# yewuyi  
问题是,抢到总线的主机只是一直进入中断,而不发送数据。导致接线一直被占据着,整个系统就死掉了。
laibour 发表于 2011-11-16 08:31


你不发送数据你占着总线干什么?占着玩!?

抢到总线后发数据,发完数据后释放总线等着下一次的总线竞争。
 楼主| laibour 发表于 2011-11-16 13:39 | 显示全部楼层
5# ayb_ice
对啊,就是“占着茅坑不拉屎”,问题就是它为什么会“占着茅坑不拉屎”?
 楼主| laibour 发表于 2011-11-16 13:43 | 显示全部楼层
7# yewuyi
现在的问题是抢到总线后,偶尔总线一直被占着而且不发数据,奇怪的是这种情况又不是每次都出现。还有不知道第二个问题,那样操作对不对,希望能指教一下,谢谢!
yewuyi 发表于 2011-11-16 14:13 | 显示全部楼层
5# ayb_ice
对啊,就是“占着茅坑不拉屎”,问题就是它为什么会“占着茅坑不拉屎”?
laibour 发表于 2011-11-16 13:39


这要问你自己啊,你为什么在让主机释放总线的时候还老是占着呢?
yewuyi 发表于 2011-11-16 14:14 | 显示全部楼层
7# yewuyi
现在的问题是抢到总线后,偶尔总线一直被占着而且不发数据,奇怪的是这种情况又不是每次都出现。还有不知道第二个问题,那样操作对不对,希望能指教一下,谢谢! ...
laibour 发表于 2011-11-16 13:43


问题那么清楚,还要指教什么呢?
asspeed 发表于 2011-11-16 15:11 | 显示全部楼层
因为那个主机是别人设计的吧!?
yewuyi 发表于 2011-11-16 15:52 | 显示全部楼层
因为那个主机是别人设计的吧!?
asspeed 发表于 2011-11-16 15:11


如果主机不释放总线,这个主机如果做多主IIC ?

无解,除非自己设计好主机。
 楼主| laibour 发表于 2011-11-16 21:00 | 显示全部楼层
好吧,等下回去自己好好检讨检讨:D,先把贴结了,呵呵~
涵潇舒雅 发表于 2013-10-24 17:03 | 显示全部楼层
前辈,我也有个主从通信的问题,能否请教一下!!!!!!
硬件主从通信

您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

81

帖子

0

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