IIC总线通讯协议学习

IIC(最简单的总线通讯,简单意味着通用和普适性)

iic通讯一般采用一主多从的方式.同一时间要么在发送信息,要么在读取信息(半双工通讯)
​​​​​​​​​​​​​​
在这里插入图片描述

​​​​
​​​

标准的写数据帧(主机向从机写数据)

在这里插入图片描述

解释以上的写数据帧

  1. S:起始信号(在SCL高电平期间,SDA由高跳低),此时主机发送起始信号
    在这里插入图片描述

逻辑1 (时钟线为高电平时,数据线上的数据必修保持稳定) 时钟线为高电平,数据线为高电平表示逻辑1
逻辑0 (时钟线为高电平时,数据线上的数据必修保持稳定) 时钟线为高电平,数据线为低电平表示逻辑0

在这里插入图片描述

  1. 主机发送从机设备地址

(从机的设备地址 7位,从设备的地址码唯一),设备的地址码一般是硬件写死的,有的有跳线可以改.

  1. 读/写位. 主机发送写位(0). 置为0位写数据,置为1位读数据.
  2. 从机发送应答信号,这个信号是由从机发给主机的.收到信息回复0,未收到或者主机读取接受完毕回复1.
  3. 主机发送从机的寄存器地址(8位)
  4. 从机返回应答信号.收到信息回复0.未收到回复1.
  5. 主机发送数据(要给寄存器写入的数据)
  6. 从机发送应答信号. 0表示写入数据成功.1表示失败.
  7. 写入停止位(结束信号) 时钟信号为高时,数据信号由低到高跳变(和起始信号相反)

读数据帧

在这里插入图片描述

解释以上的读数据帧

  1. 主机发送起始信号
  2. 主机发送从机设备地址
  3. 主机发送写位(0)
  4. 从机发送应答信号
  5. 主机发送从机寄存器的地址
  6. 从机发送应答信号
  7. 主机再次发送起始信号
  8. 主机再次发送设备地址
  9. 主机发送读数据位(1)
  10. 从机把寄存器里的数据发送给主机
  11. 主机发送应答信号,此时位1表示读取从机寄存器数据完毕.这里需要注意是主机发送应答信号表示读数据完毕.

总结

在写数据帧中主机发送数据,从机负责应答,每次主机连续发超过8位都需要从机应答.
在读数据帧中主机每次连续发超过8位也需要从机应答.在读数据帧发送了两次起始信号,且在第二次起始信号中,主机发设备地址+读数据位(共8位),从机发8位数据.此处并没有主机连续发送数据的情况,所有没有要从机应答,最后是主机发送应答信号,表示已经接受到数据(读取数据完毕).

奈何面试可能问及。故此学习总结.


参考
爱上半导体
https://www.bilibili.com/video/BV1dg4y1H773/?spm_id_from=333.999.0.0

posted @   昊月光华  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示