IIC (一) -- 协议和基础知识介绍

I2C协议硬件连接

下图左边是一个SOC芯片,上面有两个I2C控制器,顺着两根线往右可以看到每个控制器上各有两个I2C device。两根线上还分别有两个上拉电阻接到3.3V。

特征:
1.I2C总线上可以同时挂接多个设备。
2.I2C总线有两根线,一个是SCL时钟线,一个是SDA数据线。
3.总线上都需要上拉电阻。
在这里插入图片描述

I2C 通讯流程

发数据

主机在总线上发起数据,主机负责SCL和SDA信号的控制,从机只负责在SCL为高电平的时候,读取SDA的信号。

  1. (谁发)主机发起start信号。告诉总线上,“我”要开始发数据了。
  2. (发给谁)然后发出一个设备地址,长度为7bit。同时包括1bit的数据方向,0表示写数据,1表示读数据。
  3. (等待确认)从设备回应,确认总线上的设备存在,然后就可以发数据。如果没有,则无法收到回应信号。
  4. (数据传输)主机每发送一个字节数据,接收方就要回应信号,用于确认数据是否接受完成,然后才能开始下一个数据的传输。
  5. (结束)当全部数据发送完毕,主机就会发送一个停止信号。
数据格式

下图中,白色部分为主机方发送,灰色部分为从机发送。图自韦东山老师I2C协议课程。
在这里插入图片描述

读数据

当主机读取从机发送来的数据时,SCL时钟线依旧由主机控制,从机负责SCL时钟信号为高电平时,将数据发送到总线上。
1.(谁发)主机发出一个start信号。
2.(发给谁)和主机发数据一样,然后发出一个设备地址信息,方向和发数据相反,此时方向数据为1。表示要请求数据。
3.(等待确认)等待设备地址上的设备回应。若没有设备回应则结束。
4.(数据传输)设备回应后,开始数据传输,每发送一个字节数据,就要等待请求方回应确认信号。
5.(结束)当全部数据传输结束,主机会发送一个停止信号。
在这里插入图片描述
可以看出,无论读数据还是写数据,发起方总是主机侧。区别是设备地址后方向的bit标志位,以及应答信号来源。

I2C协议信号

I2C协议中传输数据的单位是字节,也就是8bit,由于“应答”信号的原因,需要占用9个时钟跳变。前面8个时钟信号都是用来传输数据,第9个时钟用来传输应答信号。
传输信号时,先传输最高位(MSB)。这里和SPI协议一致。

  • (S)开始信号:SCL为高电平,SDA由高电平向低电平跳变,开始数据传输。
  • (P)结束信号:SCL为高电平,SDA由低电平向高电平跳变,结束数据传输。
  • (ACK)应答信号:接收器在收到8bit数据后,在第9个时钟周期,拉低SDA。
  • 传输时,SDA上传输的数据必须时在SCL为高的时候保持稳定,SDA的数据只能在SCL为低电平的时候变化(准备)。

下图是一个完整的数据传输的细节。
1.当主机要发送一个数据时,主机会将SDA由高拉低,SCL此时为高。这时,一个start就发起了。
2.从机发现总线上的信号变化,知道要开始传输数据了。后面,主机就开始传输数据。一个bit一个bit的传输数据,先传高位MSB,从机每次读取的时候都是在SCL为高电平的时候。
3.直到8bit数据全部传完。主机释放SDA线,同时拉低SCK,交由从机来控制SDA线,即等待从机回应ACK信号。此时从机若需要应答,则从机会在SCL拉高之前,将SDA拉低。这是主机会在SCL第九个时钟来的时候,读取SDA,若此时为低电平,则认为收到了ACK,否则为NACK。
4.主机读完第九个SCL后,会再次将时钟拉低。以开展下一次周期的数据读写。如此反复。
5.如果,主机想要在接下来发送一个停止位信号,主机会在SCL为低的时间内将SDA拉低,再拉高,再SCL为高的时候将SDA释放。这样,一个STOP停止信号就产生了。此时SDA,SCL都为高,总线空闲。
在这里插入图片描述
总之,SCL由主机控制,SDA是双向的,主机和从机都可以控制。
注意,并不是每传输8bit数据后,都会由ACK应答信号:
1.当从机地址不存在的时候,或者从机忙于其他事无法响应I2C 总线的操作。这时,主机发出一个STOP停止信号或者重新发出一个开始新的传输。
2.如果从机不能接收更多的数据时,也不会发出ACK信号。此时主机发出STOP停止信号或者发出新的一个开始信号。
3.主机接收到最后一个字节后,也不会发出ACK信号。于是,从机释放SDA线,允许主机发出停止信号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值