打印
[STM32F1]

请教IIC 仲裁和clock stretch

[复制链接]
817|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jay_1989|  楼主 | 2015-12-14 09:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ck, ETC, iic, ST, TE
最近在看 IIC-BUS 的spec,有几个地方不明白,希望明白人能给解释下:
1.多master仲裁机制:
      按照spec里说的,仲裁是在SCL为高的时候,若自己要输出的sda与SDA line上的状态不同,则表明别的master占用总线,仲裁失败。要等待一个BUS上的STOP信号后才可以重新尝试发送。那么我的问题如下:
          (1): START和STOP信号的时候,要仲裁吗?还是仲裁只在DATA 和ACK bit 仲裁?
          (2): master1 和master2同时发起数据传输, SCL互相有点偏差,那么经过SCL的同步之后,在START期间仲裁吗 ?(这个问题其实和问题(1)相同)
          (3): 如果master1在DATA传输期间,假如master2执行了复位,这时候要开始发送数据(这时候master2不能检测到BUS上的START/STOP信号,认为BUS为IDLE状态),master2会发送START信号。请问这种情况下,仲裁出来是什么结                 果?
2.slave clock stretch机制:
     按照spec里,slave CPU若是在响应中断或是来不及处理数据,可以把SCL给拉低,可以让master进入一个wait state。那么我的问题如下:
         (1): slave拉低SCL产生clock stretch的时间点是有限制的吗?
                关于问题(1),slave stretch SCL line肯定是在SCL line为低的时候!
         (2): 接着问题(1),那么stretch可以是在DATA的每一个bit,还是在每一个byte的第9bit(也就是ack bit)之后???


希望我已经描述清楚我的问题了,麻烦大家耐心看看,能给我指点指点。多谢!!!!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

86

帖子

1

粉丝