目录
背景
对单片机的三大通信中的I2C通信进行说明。
I2C协议
协议采用双线结构传输数据,包括一个数据线和一个时钟线(即 SDA 和 SCL 线),其中 SDA(Serial Data)线用于双向数据传输,而 SCL(Serial Clock)线则用于同步数据传输的时钟信号。通信始终由主设备(Master)控制,从设备(Slave)被动接收和回应。这种简单的线路连接方式使得设备之间的互连变得非常容易。

数据的有效性
SDA
线上的数据必须在时钟的高电平周期保持稳定 (PS:在SCL为高电平的时候,SDA发生发生变化是作为I2C通信开始和结束的信号)数据线的高或低电平状态只有在 SCL
线的时钟
信号是低电平时才能改变。也就是说在
SCL为高电平时,SDA上的信号保持稳定
,
只有在SCL为低电平时,SDA上的信号才能改变
。数据的接收方会在每个时钟周期的高电平期间读取数据(SDA),因此数据是在SCL为高电平时进行读取的。
I2C通信开始和停止条件
表示起始条件:SCL
是高电平时
SDA
线从高电平向低电平切换
表示结束条件:
SCL
是高电平时
SDA
线由低电平向高电平切换表示停止条件
总结:I2C的SCL为高电平时候,SDA发生变化是作为开始/结束的条件
PS:起始和停止条件一般由主机产生 总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后总线被认为再次处于空闲状态。如果产生
重复起始 Sr条件而不产生停止条件总线会一直处于忙的状态,此时的起始条件 S和重复起始 Sr条件在功能上是一样的。
I2C数据传输
发送
发送到
SDA
线上的每个字节必须为 8 位,每次传输可以发送的字节数量不受限制 每个字节后必须跟 一个响应位 ,首先传输的是数据的最高位 MSB,如果从机要完成一些其他功能后 例如一个
内部中断服务程序,才能接收或发送下一个完整的数据字节,
可以使时钟线 SCL 保持低电平迫使主机进入
等待状态.

最低0.47元/天 解锁文章
5799

被折叠的 条评论
为什么被折叠?



