1. 简介
I2C (Inter-Integrated Circuit),是一种串行通信总线,用于连接微控制器及其外围设备,实现主控制器和从器件间的主从双向通信,是一种同步半双工通信(两端时钟频率一致,双向通信,但不能同时进行数据收发)。
2. 原理
I2C通信属于串行通信,具有两根串行信号线:数据线(SDA),时钟线(SCL)。如下图所示,主控制器与从器件(一个或多个)都通过两根信号线连接,信号线上主机和从机都可以扮演发送器和接收器的角色。为确保传输过程的指向准确性,每个接到I2C总线上的器件都有唯一的地址(7位从器件专用地址码),可实现制定从机的定向传输与群发传输。
2.1 信号类型
同时,为确保传输稳定,所有连接在同一I2C总线上的设备共用一个时钟。I2C 总线在传送数据过程中共有以下几种类型信号:
(1) 开始信号/结束信号
- SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
- SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
(2) 应答信号/非应答信号
- IIC 总线协议规定,每传送一个字节数据后(8bit),都要有一个应答信号以确定数据传送是否被对方收到。即一个字节传输的8个时钟过后的第9个时钟期间,接收器必须回一个ACK应答信号给发送器,这样才能进行数据传输。
- 应答信号由接受设备产生,在SCL为高电平期间,接受设备将SDA拉低为低电平,表示数据传输正确,产生应答(ACK),SDA拉高则表示数据传输失败,产生非应答位(NACK)。
(3) 闲置状态/被占用状态
- 在主机发送起始信号后,且未发送终止信号期间,总线处于被占用状态。
- 发送终止信号后,总线处于闲置状态,SCL与SDA同时为高电平。
2.2 总线读写流程
I2C总线进行数据传送时,SCL时钟信号为高电平期间,SDA数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 当一个字节按数据位从高位到低位的顺序传输完后,紧接着从机将拉低SDA线,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
I2c总线写通信过程:
- 主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;
- 发送一个地址字节(8 bit),其中bit0-6位为从机地址,存放从机唯一地址;bit7位为读写位(R/W),0表示write主机 ->从机,1表示read 从机->主机;
- 主机发送地址时,总线上每个从机都会将7位地址与自己的地址进行比较,若相同,则将匹配成功,发送应答信号(ACK),确定发送器和接收器;
- 主机收到ACK后开始发送第一个字节(Command),对应从机中要写入的寄存器;
- 从机接收到Command后,从机发送ACK;
- 主机收到ACK后开始发送第一个数据字节:bit0-7(8bit数据,高到低),从机收到数据后,发送应答ACK;
- 继续发送数据,n帧;
- 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;
I2c总线读通信过程:
- 主机产生START信号,随后发送从机地址(7bit)+0(Write);
*方向仍然是写,待接收到从机发送的ACK应答后,配对成功。 - 主机接收到ACK后,发送8bit内存地址(Command对应从机相应寄存器地址),从机接收到后,内部寻址并提取数据,返回ACK;
- 主机接收到ACK后,重新产生START信号,再一次发送从机内存地址,(7bit)+1(Read),从机接收到后返回ACK;
*方向设置为读,主机设置为接收模式 - 主机接收到ACK后,做好接收从机信息的准备,现在即可接收1bit的数据。
*主机不向从机发送应答信号,接收完毕后直接发起终止信号。 - 主机接收全部数据后,产生STOP信号,终止通信,总线变为闲置状态。
3. 应用实例:I2C控制温感IC
以温度传感器MAX1617A为例,对照手册可查找到以下数据:
-
Command 寄存器对照表如下,可根据Command表查找从机对应寄存器地址。
-
温度数据返回格式如下所示:
通过以上数据,我们即可有思路,对照写入读写过程:
- 写入时,输入Command 使用: 0x0B,0x0C 写入温度上限与下限值;
- 读取时,输入Command使用:通过Command 0x0B,0x0C 写入温度上限与下限值;
逻辑分析仪数据采样如下所示:
- 写入过程:
0x30为 从机地址0x18<<1 + 读写位(0);
0x0B为 Command,对应从机寄存器存放地址;
0x00位 将写入的数据;
波形如下所示:
- 读取过程:
-
读当前温度
读过程中,方向先为写入,后为读取
-
读温度上限:
3.读温度下限:
转载:https://blog.csdn.net/Harrison509/article/details/116460105