加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

技术 | I2C 子系统(三)

2022/05/27
899
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

3、I2C Transfer

Definition of timing

想要深入探讨 I2C 协议,必须深刻理解各种时间的定义(F/S-mode)

 

标识符 定义
tf 信号下降时间
tr 信号上升时间
tLOW 信号低电平时间
tHIGH 信号高电平时间
tHD;DAT 数据保持时间
tSU;DAT 数据建立时间
tSP 输入滤波器必须抑制的毛刺脉宽
tBUF 启动和停止条件的空闲时间
tHD;STA 重复起始条件的保持时间
tSU;STA 重复起始条件的建立时间
tSU;STO 停止条件建立时间

Sr 重新启动,S 启动,P 停止。

note:SCL 高电平的时候,SDA 是高就是 1,是低就是 0。SCL 低电平期间,SDA 变换数据。

note:起始条件很容易理解,重复起始条件就是没有STOP,再来了一个 START,然后发送另外一个从设备 ID,访问其他从设备。

定义术语

1、数据有效性

在 SCL 高电平期间,SDA 必须稳定,所以一般情况下,SCL 高电平宽度小,SDA 高电平宽度大,用示波器看也是这样的。

2、起始条件和停止条件

起始条件:SCL 高电平时,SDA 由高变低。

停止条件:SCL 高电平时,SDA 由低变高。

一般每传输一个字节(8 bit),就会重新开始。SDA 在 SCL 是低电平期间变换数据,不可以在 SCL 高电平期间变换数据,否则会认为是 起始和停止条件。

  1. 传输长度必须是一个字节(8 bit)每次传输的字节不受限制数据必须以 MSB 开头进行传输,也就是先传输最高位从机可以将时钟线 SCL 保持在低位,迫使主机进入等待状态。

3、ACK or NACK

每次传输完一个字节以后,从设备要进行一个回应,回应 ACK 或者 NACK。

ACK :在传输 8 bit 以后,在第九个 bit ,SCL 高电平,如果 SDA 是低电平,说明回应了 ACK。

NACK:在传输 8 bit 以后,在第九个 bit ,SCL 高电平,如果 SDA 是高电平,说明回应了 NACK。

4、write data

5、read data

6、复合格式

7、I2C Transfer Regulation

  1. 以 START 条件开始以 STOP 条件结束传输的第一个字节为 7bit 从机地址 + 1bit 读写位每个总线上的设备都会比较 STRAT 信号后面的 7bit 地址与自己的地址是否匹配每个 byte(8 bits) 后面都会有 ACK 或者 NACK在 START 信号或者 repeated START 信号后,从机必须重置自己的总线逻辑一个 START 后面紧跟着一个 STOP 信号,是非法格式主机 master 可以不产生 STOP 信号,而是直接产生一个 repeated START 信号+另外一个设备地址,直接开始访问另外一个设备

8、10-bit addressing

解析如下:

A9-A0 表示 10bits 地址

9、示波器波形图

10、补充

I2C 不支持从设备在 SCL 和 SDA 总线上发起一个中断,通知主设备来读数据。有中断需求的从设备需要额外接一根中断线,通知主控数据已经准备好,让主控发起读数据的操作。

这无疑增加了系统复杂性,多占用了 pin 脚。I3C 则不存在这种问题,I3C 允许从设备在 SCL 和SDA 上发起中断,叫“带内中断”,I3C 后面会讲。

相关推荐

电子产业图谱

研究生在读,熟悉硬件、STM32单片机、嵌入式Linux。已收获小米、联发科、浙江大华、上能电气、英威腾、汇川技术、格力、富士康等大厂offer。在这里分享求职经验、嵌入式学习规划、考研、嵌入式Linux技术文章等。