请教一个I2C的问题,在官方文档中提到的仲裁时没有定义的情况

2019-03-25 09:43发布

在一个i2c最新的英文文档下有这么一段描述: There is an undefined condition if the arbitration procedure is still in progress at the
moment when one master sends a repeated START or a STOP condition while the other
master is still sending data. In other words, the following combinations result in an
undefined condition:
• Master 1 sends a repeated START condition and master 2 sends a data bit.
• Master 1 sends a STOP condition and master 2 sends a data bit.
• Master 1 sends a repeated START condition and master 2 sends a STOP condition.   现在问题是这样的,有两个主机同时寻址一个从器件,两个主机都没有被仲裁出结果,接着又发送了一个同样的数据,这两个主机仍旧没有被仲裁出来。问题来了,接下去A主机发送重复起始位(需要改变此时的传输方向),B主机发送下一个数据,那么在总线上,A发送的这个起始位和B发送的数据位就会同时出现,这时候总该怎么处理呢。因为重复起始位是一个高电平到低电平的过程,而数据则是稳定的低电平或者高电平,这样子应该没法仲裁吧?   本人需要写FPGA的IP core,但是i2c协议又没有对这种情况的出现做出具体的解决方案,该怎么处理呢。不同主机发送的重复起始位,数据位,停止位,同时出现在总线上到底该如何处理呢,求解啊~~~~~~~~~我快郁闷了一个月了。 [ 本帖最后由 coolzc 于 2012-1-8 20:37 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
coolzc
2019-03-25 17:24
原帖由 eeleader 于 2012-1-9 08:30 发表
建议不要用多个主机同时查询一个从机,这样从机确实比较难搞!


谢谢ls建议。
嗯,可是挂在总线的多个主机,也没有办法知道对方是否和自己同时在查找同一个主机?
I2C的协议上不是说能很好的支持多机的模式吗,难道协议制定的时候就没有考虑过这个问题吗。。。

一周热门 更多>