I2C时钟延展概念介绍

描述

  Data and ACK/NACK

  正常情况

  主接收机必须向从机发送传输结束的信号。

  异常情况

  1.   发送到总线上的地址,却没有匹配的从机
  2.   从机处于 busy 状态。
  3.   在传输过程中,从机获取其不理解的数据或命令。
  4.   在传输过程中,从机无法再接收任何数据字节。

  主机可以生成停止条件以中止传输,或生成重复启动条件以启动新传输。

  Clock stretching 时钟延展

  1.   时钟延展:通过将 SCL 线保持在低电平来暂停传输。在 SCL 再次拉高之前,传输无法进行。
  2.   从机通过将 SCL 线拉低,强制主机进入等待状态。
  3.   时钟延展功能是可选的,不是必选的
  4.   时钟延展导致需要更多时间来存储接收到的字节或准备另一个要传输的字节
  5.   通过延长每个时钟低电平周期来降低总线时钟。任何主机的速度都与该设备的内部运行速度相适应。
  6.   在 Hs 模式下,此握手功能只能在字节级别使用

  I2C 主设备始终控制着时钟线 SCL,不论是往设备写还是从设备读。一般情况下,如果操作对象是 EEPROM 或者其他简单设备而言,无所谓,但是,如果从设备是处理器,在接到主机命令后要去处理一些运算然后得出结果返回给主机。这个时候可能造成来不及处理。怎么办?这时,从设备会主动控制时钟线把它拉低!直到数据准备好之后再释放时钟线,把控制权交还给 MASTER。这也是 I2C 通信系统中,从机唯一能控制总线的时候!

  关键是很多 I2C 主机不支持 clock stretching 功能,所以,无法和带有 clock stretching 功能的从机通信!所以,各位在选择主机器件之前,必须要注意这一点,不然整个设计方案可能报废,影响很大。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分