IIC通信协议总结
本帖最后由 cjjdz97 于 2024-11-18 00:19 编辑IIC协议简介IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换。IIC的一个特殊工艺优势是微控制器只需要两个通用I/O引脚和软件即可控制芯片网络。IIC最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100Khz、7-bit标准地址,1992年,IIC的第一个公共规范发行,增加了400Khz的快速模式以及10bit地址扩展。IIC协议内容IIC协议把传输的消息分为两种类型的帧:
地址帧–用于master指明消息发往哪搁slave;
数据帧(单个或者连续)-- 由master发往slave的数据或者是接收到来自于slave的数据。一次读写单位为8bit,高位先发
注:IIC读写是相对于master来说的。
IIC总线的数据传送
1、数据位有效性的规定:
IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟电平为低电平期间,数据线上的高电平或者低电平状态才允许变化。
即数据在时钟线SCL的上升沿到来之前就需要准备好,并在下降沿到来之前必须保持稳定。
2、空闲状态:
当IIC总线的数据线SDA和时钟线同时处于高电平时,规定为总线的空闲状态。此时各个器件输出级场效应管均处在截止状态,即释放总线,由两条信号线的上拉电阻把电平拉高。
3、起始和终止信号:
SCL为高电平期间,SDA信号线由高电平向低电平的变化表示起始信号;SCL为高电平期间,SDA由低电平向高电平的变化表示终止信号。
SDA:由高到低 – 起始信号
SDA:由低到高 – 终止信号
起始信号和终止信号都是由主机发送的,起始信号产生之后,总线处于被占用的状态,在终止信号产生之后,总线就处于空闲状态。
https://img-blog.csdnimg.cn/d6e4e503d30149fba654183f32e24935.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56WB5oGL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center4、应答信号:
发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,规定为有效应答(ACK,简称应答位),表示接收器已经成功地接受了该字节
应答位为高电平时,规定为非应答信号(NACK),一般表示接收器接收该字节没有成功。
对于反馈的有效应答信号ACK的要求是:接收器在第9个时钟脉冲之前的低电平期间将数据线SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接受器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放数据线SDA,以便主控接收器发送一个停止信号P。
5、数据传送格式:
(1)字节传输与应答:每一个字节必须保证是8bit长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随1bit的应答位(即每一帧数据一共有9bit)
(2)在IIC总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。
6、总线寻址:
(1)IIC协议规定采用7bit的寻址字节(寻址字节是起始信号后的第一个字节)其位定义如下:
| bit | 7 | 6 | 5 | 4 |3 |2|1| 0|
D7 ~ D1位组成从机地址。
D0位是数据传送的方向,0:表示主机向从机写数据,1:表示主机由从机读数据。
(2)主设备往从设备中写寄存器。数据传输格式如下:
https://img-blog.csdnimg.cn/052b6523dd6e483a9c7d3b51e3193793.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56WB5oGL,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center
IIC速率还是比较低的 IIC通讯主要是稳定,协议简单
页:
[1]