I2C协议理论

I2C协议分为物理层和协议层
1、物理层:
1)它是一个支持设备的总线。在一个I2C通信总线中,可以连接多个I2C通信设备,支持多个通信主机以及多个通信从机。
2)一个I2C总线只能使用两条总线线路,一条双向串行数据线(SDA)(表示数据),一条串行时钟线(SCL)(同步数据的收发)。
3)每一个连接到总线上的设备都有一个独立的地址,主机通过地址访问从机。
4)I2C空闲时,输出状态是高阻态,所有设备空闲时,均输出高阻态,上拉电阻把总线变成高电平。
5)多个主机使用总线时,采用仲裁方式决定哪个设备占用总线。
6)3种传输模式:标准模式传输速率为100kbps,快速模式为400kbps,高速模式可为3.4Mbps,大多数I2C不支持高速模式。通常采用快速模式,但是传输速率不止是这三种。
7)连接到相同总线的I2C数量受到总线的最大电容400pF限制。
常见的I2C通信系统

2、协议层:
1)I2C读写数据
在这里插入图片描述
SLAVE_ADDRESS(从机地址)可以是7位也可以是10位。
R/W:传输方向选择位,0表示传输方向为主机传输到从机,即主机向从机写数据,1表示传输方向为从机传输到主机,即主机向从机读数据。

  • 写数据
    广播完地址,接收到应答信号后,主机向从机传输数据(DATA),数据包的大小为8位,每发完一个字节数据都要等待从机的应答信号(ACK),重复,可以传输N个数据,没有大小的限制,传输结束,主机发送停止信号(P)给从机。

  • 读数据
    广播完地址,接收到应答信号后,从机开始向主机返回数据(DATA),数据包为8为,从机每发完一个字节数据都要等待主机的应答信号(ACK),重复,可以返回N个数据,没有大小的限制,当主机希望停止接收数据时,就向从机返回一个非应答信号(NACK),从机自动停止数据传输。

  • 复合格式(常用)
    复合格式有两个起始信号,一般在第一次传输中,主机通过SLAVE_ADDRESS寻找到设备后,发送一段“数据”,这段数据用于表示从设备内部的寄存器或存储器地址;在第二次传输中,对该地址进行读或写。(第一次是告诉从机读写地址,第二次是读写的内容)。
    2)通信的起始和停止(一般是主机产生)
    通信的起始:SCL线是高电平,SDA从高电平向低电平切换。
    通信的停止:SCL线是高电平,SDA从低电平向高电平切换。
    在这里插入图片描述
    3)数据的有效性
    I2C是用SDA信号线传输数据,SCL信号线(标准的方波信号)进行数据同步。SDA在SCL的每个时钟周期传输一位数据。
    SCL高电平时,SDL传输的数据有效,SDL的高电平表示数据“1”,低电平表示数据“0”。
    SCL低电平时,SDL的数据无效,一般这个时候SDA进行电平的切换。
    数据传输以字节为单位,每次传输的字节数不受限制。

在这里插入图片描述
4)地址及数据方向
第8位或者第11位表示数据方向位。“1”表示主机由从机读数据,“0”表示主机向从机写数据。
读数据方向时,主机释放SDA线的控制,从机控制SDA线,主机接收信号。
写数据方向时,SDA由主机控制,从机接收信号。
在这里插入图片描述
5)响应
I2C数据和地址的传输都具有响应,数据接收端接收到I2C传输的一个字节数据或地址后,如果继续接收就发送“应答”(ACK)信号;接收方向想结束接收,就发送“非应答”(NACK)信号,发送方接收到此信号之后会产生一个停止信号,结束信号传输。
传输时主机产生时钟,在第9个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值