目录
总述:
I²C半双工总线(可以互相发送接收,但不能同时进行) ,串行通信(每次发送一个bit),可以连续发送多个字节(使用同一个时钟),主要用于近距离、低速的芯片之间的通信;I²C支持多个主设备和多个从设备连接在同一总线上每个设备都有一个唯一的地址,用于区分不同的设备
1.1主机和从机
I²C总线是一种多主机总线,连接在I²C总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;
1.2发送器和接收器
发送器:发送器是指在特定时刻向总线上发送数据的设备,主机在发送数据时充当发送器,而从机在回应主机请求时也可以充当发送器。
接收器:接收器是指在特定时刻接收数据的设备。类似于发送器,当主机请求数据时,从机成为接收器;而当从机需要将数据发送给主机时,主机则成为接收器。
1.3总结
主机和从机的区别在于谁发起通信和控制总线,而发送器和接收器的区别在于当前正在进行的数据传输方向
2.1 I²C 通信过程
第一步:主机发送起始信号:
主机通过在数据线(SDA)上产生一个特定的起始信号,启用I²C总线。这表示通信的开始。
SCL为高电平时,SDA由高变低表示起始信号
SCL为高电平时,SDA由低变高表示停止信号
第二步:主机发送从机地址(寻址):
主机接着发送一个字节,包含目标从机的地址和读/写方向的指示(高7位通常为地址,低位表示方向)。这个地址使从机识别出自己是目标设备。
这里需要注意的是:总线上所有的从机接收到主机发送的字节都会进行与自己地址匹配,如果相同,则被确认被主机寻址,然后根据最低为0或者1来确定自己是发送器还是接收器。
最低位'0'表示主机发送数据,'1'表示主机接收数据;
从左至右,前七位数据,最后一位读写位
第三步:从机应答信号:
被寻址的从机会在收到地址后,发送一个应答信号(ACK),通知主机它已准备好进行通信。
第四步:发送器发送数据:
发送器(可以是主机或从机)发送一个字节的数据到总线上。
第五步:接收器发送应答信号:
接收器(可以是主机或从机)在接收到数据后,发送一个应答信号(ACK)给发送器,确认收到数据。
发送器发送完一个字节数据后,接收器必须发送1位应答位来回应发送器即一帧共有9位.
第n步:循环步骤4、5
以上步骤会重复进行,直到所有需要传送的数据字节都完成。
最后一步:主机发送停止信号:
通信完成后,主机发送一个停止信号,释放总线,使其他设备能够使用总线。
3 时钟同步
在SCL为低电平时,SDA线上的信号可以变化,发送器可以将数据位置于SDA线上。(发送1bit数据)。
当SCL变为高电平时,接收器读取SDA线上的数据,此时SDA线的数据必须保持不变。(读取1bit数据)。
4.三种经典时序
灰色为主机,白色为从机
4.1主机向从机发送数据
主机结束通信两种情况:主机向从机发送完数据,从机不再应答或者主机发送完不想发了。
4.2.从机向主机发送数据
主机结束通信两种情况:从机向主机发送完数据,主机不再应答或者从机发送完不想发了。
4. 3主机先向从机发送数据,然后从机再向主机发送数据
主机向从机发送数据,从机应答或者不应答,主机restart 建立通信,省略掉了stop的步骤,变为从从机器接收数据,知道最终主机结束通信
参考文献:主动光式颜色传感器技术详解. 感为智能科技. [2024-04-17]&创客学院技术文档
标签:接收器,--,主机,通信协议,发送,从机,IIC,发送数据,发送器 From: https://blog.csdn.net/qq_63152518/article/details/142746693