IIC通讯协议
协议简介
IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器与一些边缘设备之间的接口,它需要两个信号线完成信息交换.它是由数据线SDA和时钟线SCL组成的串行总线,可发送和接收数据。常见的外部设备,如温度和湿度传感器,RTC模块,RFID等。IIC是一种半双向通信方式。
IIC物理层
所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。I2C总线上的每个设备都自己一个唯一的地址,来确保不同设备之间访问的准确性。

软件IIC和硬件IIC
- 软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。常见的软件IIC一般是单片机,STM32等
- 硬件IIC:与I2C驱动电路相对应的I2C芯片上有一个I2C外部的硬件电路,其I2C管脚也被特别使用,而硬件(硬件)I2C则通过直接调用内部注册表来配置。
- 硬件I2C比软件更高效,而软件I2C更灵活,因为它不受管道限制。
IIC 协议层
- 空闲状态
因为IIC的SCL和SDA需要连接到拖拉阻尼器,确保空缺状态的稳定,因此,IIC总线将SCL和SDA的高电压水平保持在闲置状态。I2C总线的SDA和SCL两个信号同时处于高压状态。指定公共汽车的自由状态。此时,每个设备的输出级场效应管都处于封闭状态,即释放总线,两个信号线的电阻均等于另一个信号线的电阻。
- 开始条件
当SCL处于高电位时,SDA是一个从高电位到低电位的启动状态,所有设备的操作必须从启动状态开始。
- 停止条件
当SCL处于高电压状态时,SDA从低电压状态转变为高电压状态,作为停止条件,此时所有SD2405AL操作停止,系统进入待机状态。

- 数据有效性
IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
SCL = 1 小时 数据线的任何平衡变换 SDA 被认为是公共汽车的启动或停止信号。
也就是说,在IIC数据传输过程中,SCL时钟线经常切换电压水平以确保数据传输

- 应答信号
每当主机向接收机发送数据字节时,主机总是需要等待接收机发出响应信号,以验证接收机是否成功接收数据
响应信号:主机SCL起动,从机SDA的电压水平读取,产生低电压水平的响应
响应信号是低压正常信号,定义为有效的响应(ACK),这意味着接收器成功接收节点;
响应信号是高压正常,定义为非响应状态(NACK),通常表示接收器没有接收节点。

每发送一个字节(8个bit)**在一个字节传输的8个时钟后的第九个时钟期间,接收器接收数据后必须回一个ACK应答信号给发送器,这样才能进行数据传输

数据传输
SDA线的数据必须在SCL“高”时段稳定,只有在SCL线时钟信号低时,数据线的“高”或“低”状态可以更改。输出到SDA线的每个字节必须为8位,数据传送时,第一传输最大位(MSB),每个发送的字符串必须遵循相应的位数(即一个帧有九位数)。
当一个字符串通过数据位由高到低的顺序传输时,接下来,从设备上拉下SDA线,返回主设备相应的ACK,在此点,假设一个字符串实际上被传输到完成,如果机器在一段时间内没有响应信号,自动认为从机器接收的数据正确.


IIC通信原理参考
硬件RTC驱动程序编译
本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30226.html。