I2C总线
- Fang XS.
- 1452512966@qq.com
- 记录学习,方便复习。
- 如果有错误,希望被指出,学习技术的路难免会磕磕绊绊
简介
- I2C通信是一种半双工,串行,同步通信协议。
- I2C适用于近距离,低速设备间通信。
- 硬件只有2跟线:
- SDA 用于数据传递。
- SCL 用于时钟同步。
- 一般2跟数据线都会接上拉电阻,器件内部一般设置为高阻态防止干扰其他器件。
- 总线上可以挂载多个主机,多个从机,主机有权发起和结束一次通信,从机只能被主机呼叫。
- 当多个主机同时启用总线,I2C具备冲突检测和总线仲裁的功能。
- 每个I2C器件都有一个唯一的7位地址。
- 每个器件都可以作为主机或从机,但是每一时刻只有一个主机。
- 总线上增加,删除器件不影响其他器件。
I2C起始与终止信号
- 空闲信号:
- SDA为高电平,SCL为高电平。
- 同步信号:
- SCL为高电平时采样,接收器读数据,要求数据稳定。
- SCL为低电平,发送器往总线发送数据,允许电平变化。
-
起始信号
- SCL为高电平时,SDA从高变低。
-
终止信号
- SCL为高电平时,SDA从低变高。
字节传送与应答信号
- 主机发送第一字节地址和数据传递方向,指明从机发送还是接收。
- 当主机指明从机发送时,从机为发送器,主机为接收器。
- 当主机指明从机接收时,从机为接收器,主机为发送器。
- I2C通信时,每个字节是8位,数据传送先发高位后发低位,发送器发送一字节,接收器须发送一位应答,来回应发送器。
- 应答信号是低电平,没接收到数据或不应答保持高电平。
- I2C数据传送一帧为9位,8位数据,1位应答信号。
I2C通信过程
- 主机发送起始信号启动总线。启动总线后,总线处于占用状态。
- 主机发送一个字节指明从机地址和数据传送方向。
- 高七位表示从机地址.
- 最后一位表示字节传送方向。
- 主机读 为
1
。 - 主机写 为
0
。
- 主机读 为
- 被寻址的主机应答,回应主机。
- 发送器发送一字节数据。
- 接收器应答,回应发送器。
- 重复步骤4,步骤5…
- 通信完毕,主机发送停止信号结束通信。结束通信后,总线处于空闲状态。
I2C寻址方式
- SDA传送的包括数据和地址。
- 数据传送方向由主机决定。
- 总线上所有的从机在接收主机发送的一字节数据后,都会跟自己的地址进行比较,如果跟自己的地址相同则认为是被主机呼叫。再通过第8位数据确定自己是发送器还是接收器。