聊聊通讯协议 I2C 子系统

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

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 高电平期间变换数据,否则会认为是 起始和停止条件。

  • 传输长度必须是一个字节(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

  • 以 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 总线上发起一个中断,通知主设备来读数据。有中断需求的从设备需要额外接一根中断线,通知主控数据已经准备好,让主控发起读数据的操作。

责任编辑:武晓燕 来源: 嵌入式Linux系统开发
相关推荐

2022-06-12 07:30:13

I3C通讯协议

2022-06-07 08:42:21

高速模式HS mode

2022-06-13 09:21:45

I2C DriverI2C 子系统

2022-06-18 09:02:00

I2C 子系统通信协议

2010-07-01 16:45:05

I2C总线协议

2010-06-08 16:25:35

I2C总线协议

2010-06-08 16:21:50

I2C总线协议

2017-03-16 08:30:19

Android ThAndroidI2C

2017-08-11 18:25:25

Linuxi2c

2023-04-07 09:14:31

硬件通信串口通信实验

2021-01-19 19:32:01

Cortex-A9 R嵌入式系统i2c 外设

2023-09-13 15:33:57

I2C鸿蒙

2021-12-06 08:50:27

I2C拉电阻阻值架构

2021-09-08 15:44:56

鸿蒙HarmonyOS应用

2009-04-11 15:12:24

.Net MicroI2C总线模拟器

2022-10-30 10:31:42

i2ccpuftrace

2020-11-09 07:23:10

UART通信SPI

2023-03-22 09:23:53

I2C总线温度传感器

2021-08-27 17:02:56

鸿蒙HarmonyOS应用

2024-04-07 09:32:02

物联网串口通信协议
点赞
收藏

51CTO技术栈公众号