I2C协议知识点小结

简介

I2C通信是飞利浦公司发明的一种通信协议,一根地址线SCL,一根数据线SDA即可完成通信,总线特征如下:

1.每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机、从机关系软件设定地址,主机可以作为主机发送器和主机接收器。
2.它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输,可以通过总线仲裁防止数据被破坏。
3.通信速率,标准模式下可达100kb/s,快速模式可达400kb/s,高速模式可达3.4Mb/s
4.I2C总线通信主要关注:起始信号、结束信号、应答信号,起始和结束信号一般由主机产生,总线在起始信号后被认为处于忙的状态,在结束信号的某段时间后,总线被认为再次处于空闲状态。

基本概念

发送器:发送数据到总线的器件 (主机和从机都可以做发送器和接收器)
接收器:从总线接收数据的器件
主机:初始化发送,结束发送,产生时钟信号的器件
从机:被主机寻址的器件
多主机:同时有多于一个主机尝试控制总线,但不破坏报文
数据的有效性 :SDA线上的数据必须在时钟线的高电平周期保持稳定,数据线的高低电平状态只有在SCL的时钟信号为低电平时才能发生改变。

重要概念

起始信号:当时钟线为高电平,数据线由高到低跳变
I2C协议知识点小结_第1张图片

图1 起始信号时序图

结束信号:当时钟线为高电平,数据线由低到高跳变

I2C协议知识点小结_第2张图片

图2 结束信号时序图

仲裁:有多个主机尝试控制总线,但只允许一个控制总线并使报文不被破坏的过程,仲裁是逐位进行仲裁的,每个主控器在发送一个数据位时都要对自己的输出电平进行检测,看是否与SDA线电平一致,如果一致则继续占用总线,直到某一位发送电平与总线电平不一致,放弃总线控制权。
此处要注意的点是a.发送过程中,主控器都不会丢失数据;b.各个主控器没有对总线的控制优先级;c.但是遵循“低电平优先”的原则,先发低电平的享有对总线的控制权。

同步:两个或多个器件同步时钟信号的过程,时钟同步通过线与连接I2C接口到SCL线来执行,产生的同步SCL时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。
I2C协议知识点小结_第3张图片

图3 同步时序图

数据格式

数据格式:每次传输数据一定是8位,在第九位一定是一个应答位

1.主机一直给从机发送数据
数据帧的格式:起始信号——8位数据(前七位从基地址,第八位读写位)——应答(从机给主机)——8位数据(不是地址和读写位)——从机给主机应答——结束信号
假设8位数据是:11010000 前面的7位代表从机地址,后面的0代表主机给从机发送数据,11010001 前面的7位代表从机地址,后面的1代表主机接收从机数据

2.主机一直接收从机数据
数据帧的格式:S——8位数据(高7位地址+1位的1)——从机给主机应答——主机接收的8位数据——主机给从机应答——P

3.主机发送数据后继续接收从机数据
数据帧的格式:S——8位数据(7位从机地址+1位的0)——从机给主机应答——发送8位数据——从机给主机应答——发送7位从机地址+1位的1——从机给主机应答——主机接收的8位数据——主机给从机应答——P

你可能感兴趣的:(通讯协议系列,I2C)