IIC(最简单的总线通讯,简单意味着通用和普适性)
iic通讯一般采用一主多从的方式.同一时间要么在发送信息,要么在读取信息(半双工通讯)
标准的写数据帧(主机向从机写数据)
解释以上的写数据帧
- S:起始信号(在SCL高电平期间,SDA由高跳低),此时主机发送起始信号
逻辑1 (时钟线为高电平时,数据线上的数据必修保持稳定) 时钟线为高电平,数据线为高电平表示逻辑1
逻辑0 (时钟线为高电平时,数据线上的数据必修保持稳定) 时钟线为高电平,数据线为低电平表示逻辑0
- 主机发送从机设备地址
(从机的设备地址 7位,从设备的地址码唯一),设备的地址码一般是硬件写死的,有的有跳线可以改.
- 读/写位. 主机发送写位(0). 置为0位写数据,置为1位读数据.
- 从机发送应答信号,这个信号是由从机发给主机的.收到信息回复0,未收到或者主机读取接受完毕回复1.
- 主机发送从机的寄存器地址(8位)
- 从机返回应答信号.收到信息回复0.未收到回复1.
- 主机发送数据(要给寄存器写入的数据)
- 从机发送应答信号. 0表示写入数据成功.1表示失败.
- 写入停止位(结束信号) 时钟信号为高时,数据信号由低到高跳变(和起始信号相反)
读数据帧
解释以上的读数据帧
- 主机发送起始信号
- 主机发送从机设备地址
- 主机发送写位(0)
- 从机发送应答信号
- 主机发送从机寄存器的地址
- 从机发送应答信号
- 主机再次发送起始信号
- 主机再次发送设备地址
- 主机发送读数据位(1)
- 从机把寄存器里的数据发送给主机
- 主机发送应答信号,此时位1表示读取从机寄存器数据完毕.这里需要注意是主机发送应答信号表示读数据完毕.
总结
在写数据帧中主机发送数据,从机负责应答,每次主机连续发超过8位都需要从机应答.
在读数据帧中主机每次连续发超过8位也需要从机应答.在读数据帧发送了两次起始信号,且在第二次起始信号中,主机发设备地址+读数据位(共8位),从机发8位数据.此处并没有主机连续发送数据的情况,所有没有要从机应答,最后是主机发送应答信号,表示已经接受到数据(读取数据完毕).
奈何面试可能问及。故此学习总结.
参考
爱上半导体
https://www.bilibili.com/video/BV1dg4y1H773/?spm_id_from=333.999.0.0