嵌入式常见协议---IIC协议
1.IIC(I²C)协议是什么?
全称 Inter-Integrated Circuit ,字面意思是集成电路之间,是I²C BUS简称,中文应该叫集成电路总线,是一种串行通信总线(同步串行半双工),使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。
2.IIC(I²C)是用来干什么的?
为了让主板或者嵌入式能与其他外设之间通信而开发的通信协议。比如STM32想要使用其他外设进行通信就需要接线-写代码-烧录运行 即STM32与外设通信过程;
3.IIC(I²C)通信过程
接线:搭建通信线路;写代码:指定通信传输协议;烧录运行:正式通信;;
通信可以比喻为两个人说话 :能不能听懂--双方之间约定的信号协议 ;;速度是否适合:双方满足时序要求。即两线——串行数据(SDA) 和串行时钟(SCL) 线在连接到总线的器件间传递信息。SDA:数据信号线,用于传输数据 SCLK:时钟信号线用于产生时钟频率,控制时序,实现协议过程; 一个IIC总线上,可以挂载多个外接设备。由于是单总线进行数据传输,所以IIC协议是半双工的。
3.1空闲状态
SDA与SCL同是出于高电平。由上拉电阻拉高
3.2起始信号与停止信号
开始信号:当SCLK时钟信号一直处于高电平状态时,SDA线由高电平跳变到低电平这个动作,表示起始信号。
结束信号:当SCLK时钟信号一直处于高电平状态时,SDA线由低电平跳变到高电平这个动作,表示结束信号。
3.3应答信号ACK
发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平则为有效应答位(ACK简称应答位),表示成功接收该字节;若为高电平则为非应答位(NACK)表示未接收成功; 低有高无
在SCL高电平期间 SDL必须稳定;
等待数据线是高 return1; 是低 return 0;
SCL为1时观察SDA是否为0 确定是否产生应答
3.4数据有效性
在SCL电平上升沿到来之前和之后数据必须稳定 如下图所示
3.4.1发送数据
3.4.2读取数据
3.5数据的传送
每一位数据都有一个时钟脉冲相对应,即在SCL时钟的配合下,在SDA上逐位串行传输每一位数据
4.实际中如何完成通信?
总结:在 I2C 通信中,主设备主动控制通信的开始和结束,以及数据的读取和写入。从设备则在被选择后响应主设备的请求,但不会主动发起通信。信号的发出是由主设备根据通信协议和操作需要决定的。
IIC总线可挂很多设备 多个主设备 多个从设备
IIC协议超详细解释(适合小白入门)_板栗阿叔的博客-CSDN博客
第52讲 I2C通信实验-M3_哔哩哔哩_bilibili