i2c子系统—i2c驱动框架


9.1 i2c物理总线

在这里
如上图所示,i2c支持一主多从,各设备地址独立,标准模式传输速率为100kbit/s,快速模式为400kbit/s。总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备都空 闲,都输出高阻态时,由上拉电阻把总线拉成高电平。

i2c物理总线是由两根双向信号线组成的,一根是数据线SDA(传输具体数据),另一根是时钟线SCL(数据收发同步)。i2c总线由主设备控制,主设备作为主机,可以控制各个从设备,这些从设备包括但不限于IO扩展器、各种传感器、EEPROM、ADC/DAC等。i2c总线采用漏极开路的设计,只会拉低总线,或“释放”它并让上拉电阻将其拉高。在空闲状态下,两条信号线经由上拉电阻后同时处于高电平,当想要传输低电平的逻辑时,会激活下拉场效应管,实现总线的拉低。

9.2 i2c基本通信协议

9.2.1 i2c总线特点

  • 只需要SDA.SCL两条总线,这样芯片硬件设计、布线非常简单;
  • 它是—种同步、串行、半双工通信方式,没有严格的波特率要求;
  • 它是一种主从模式的通信协议,通信开始总是由主设备发起,从设备被动响应请求;
  • 每个从设各都有一个独一无二的从设备地址用来表示该器件,同一总线上要仅持该地址唯—;
  • l2C是真正的多主设各总线,可提供仲裁和冲突检测;

9.2.2 起始信号与停止信号

当SCL线为高电平时,SDA线由高到低的下降沿,为传输开始标志(S)。直到主设备发出结束信号§, 否则总线状态一直为忙。结束标志§为,当SCL线为高电平时,SDA线由低到高的上升沿。
在这里插入图片描述

  • 开始信号(S),SCL为高,SDA由高变低(SDA拉低)
  • 结束信号§,SCL为高,SDA由低变高(SDA拉高)
  • 响应信号(ACK):接收器在收到8位数据后,在第9

9.2.3 数据格式与应答信号

i2c的数据字节定义为8-bits长度,对每次传送的总字节数量没有限制,但对每一次传输必须伴有一个应答(ACK)信号, 其时钟由主设备提供,而真正的应答信号由从设备发出,在时钟为高时,通过拉低并保持SDA的值来实现。如果从设备忙, 它可以使 SCL保持在低电平,这会强制使主设备进入等待状态。当从设备空闲后,并且释放时钟线,原来的数据传输才会继续。

9.2.4 主机与从机通信

i2C总线有7位寻址和10位寻址两种模式,通常我们使用7bit模式。这就使得/2C总线上理论上寻址模式的最大节点数为128(2"7)个或1024(2410)个。但I2C有16个保留从机地址,所有i2c最多有128-16=112个从机地址

开始标志(S)发出后,主设备会传送一个7位的Slave地址,并且后面跟着一个第8位为读写方向位,其中0表示写,1表示读,也称为Read/Write位。 R/W位表示主设备是在接受从设备的数据还是在向其写数据。然后,主设备释放SDA线,等待从设备的应答信号(ACK)。 每个字节的传输都要跟随有一个应答位。应答产生时,从设备将SDA线拉低并且在SCL为高电平时保持低。 数据传输总是以停止标志(P)结束,然后释放通信线路。 然而,主设备也可以产生重复的开始信号去操作另一台从设备, 而不发出结束标志。综上可知,所有的SDA信号变化都要在SCL时钟为低电平时进行,除了开始和结束标志。

9.3 i2c驱动框架

i2c子系统(I2C总线设备的驱动框架),目的是让驱

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林同学_ioT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值