目录
IIC通讯协议
IIC通讯协议概念
IIC通讯协议:一种简单、双向二线制同步串行总线,只需要两根管脚即可在连接于总线上的器件之间传送信息;
应用:数据采集领域的串行AD、图像处理领域的摄像头配置、工业控制领域的X射线管配置;
优点:引脚少、硬件实现简单、可扩展性强、可靠性强。
IIC协议物理层
- IIC总线可以连接多个从设备,如图中EEPROM、SENSOP、RTC;
- 每个从设备都有一个地址,主设备即图中FPGA会发出一个地址,所有从设备接收到此地址后与自己的地址进行对比,如果一样,则会回应主设备一个应答信号ACK,主设备接收到应答信号后便会与从设备进行数据交互;
- 当多个从设备需要通信时候,需要仲裁;
- IIC协议的三种模式:标准模式数据传输速率100kb/s、快速模式400kb/s、高速模式3.4Mb/s
IIC_SCL:串行时域总线,用于同步通讯数据;
IIC_SDA:双向串行数据,传输通讯数据。
IIC协议协议层
协议层有四种状态分别如下:
- 总线空闲状态:SCL和SDA都处于高电平
- 起始信号:SCL为高电平,SDA为下降沿,所有从设备检测到下降沿后都由空闲状态转换为等待数据接收状态
- 数据读写状态:当SCL为高电平时,主设备将数据写入从设备,每次写入1bit;SCL为低电平时,进行数据更新。从机设备正确接收数据后会将SDA信号线拉低,称为响应位,告诉主机从机已经成功写入数据。
- 停止信号状态:SCL位高电平,SDA由低电平变为高电平,则总线便会变为状态1
设备地址和存储地址
设备地址
每个IIC设备出厂时都会有一个7bit的设备地址,7bit不一定都会用到,没用到的部分需要自行设置,如下图的EEPROM地址,其中高四位厂家设置不可更改,地三位A2A1A0需自行设置,即IIC总线支持连接8个EEPROM。地址的最低位为读写控制位,位0时表示主机要对从机进行数据写入操作,为1时表示主机要对从机进行数据读出操作。
存储地址
每个IIC设备都会有存储寻址地址,设备不同地址大小不同,OV77251个字节,OV5640两个字节,AT24C64的EEPROM2个字节。因为AT24C64的存储空间大小为64Kbit,需要13位的寻址地址,即两个字节;AT24C01的存储空间大小为1Kbit,需要7位的寻址地址,即1字节。
IIC的读写操作
单字节写操作
- 主设备发送高电平的START信号,高电平;
- 然后发送7bit的设备地址信号和1bit的读写控制信号,从设备收到后与自己的设备地址进行对比,如果一样回应一个ACK信号与主设备建立连接;
- 建立连接后主设备发送读写地址,单字节寻址则发送一字节,双字节寻址则发送2字节,如下图所示,没发送一个字节从设备都应该回应一个ACK应答信号;
- 主设备或从设备发送数据并且附带一位应答信号表示数据读写完成;
- 最后主设备发送STOP停止信号,高电平。
页写操作
页写操作与单字节类似,只不过在数据写入时候不再是单字节,而是连续多字节,即一页,同样没字节都要由ACK应答信号。
每个从设备都支持字节写入操作,而不一定支持页读写操作。
随机读操作
读与写类似,需要注意的是,在读数据前需要先写入设备,决定主设备与哪个从设备进行连接,见下图:
顺序读操作
顺序读与随机读没有其他区别,只是读取的数据量不同,见下图: