CoolRunner-Ⅱ器件的I2C总线仲裁

时间:2008-09-18
  在以下几种情况下,I2C总线仲裁会失败。
  (1)在地址或数据发送周期,当主设备输出“1”,而SDA被采样为“0”。
  (2)在数据接收周期的应答位,当主设备输出“1”,而SDA被采样为“0”。
  (3)当总线忙时,企图有一个START。  
  (4)在从模式中,企图有一个Repeat START。
  (5)检测到一个STOP,而主设备并没有STOP请求。
  如果I2C控制器工作在主模式,输出SDA信号将会与输入SDA信号进行比较以确定总线仲裁是甭失效。在数据传输过程中,SDA信号仅在SCL为高电平的时被检查(ACK周期除外),以确保START/STOP不会在错误的时间内产生。如果发现输出SDA与输入SDA不同,则总线仲裁失败,这时MAL位被置位。同时CoolRunner-II I2C控制器切换到从模式并复位MSTA位。
  
  CoolRunner-II fc控制器在总线忙时不会产生START,然而如果在总线忙时,uC依然发出START/Repeat START请求,则MAL位将会被置位。另外,在主设备没有发出STOP请求时,MAL仍然因为STOP被检测到而置位。这些都被视为仲裁失败,应该避免,并正确处理。

  如果仲裁失败发生在字节传输过程中,SOL会一直产生,直到字节传输完成。

  


  
上一篇:SPI用户逻辑
下一篇:CoolRunner-Ⅱ器件的OL、SDA、START不口STOP发生逻辑

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料