IIC通信协议

数据有效性

I²C由两条线组成,一条双向串行数据线SDA,一条串行时钟线SCL。
SDA线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。
换言之, SCL为高电平时表示有效数据, SDA为高电平表示“ 1”,低电平表示“0”; SCL为低电平时表示无效数据,此时SDA会进行电平切换,为下次数据表示做准备。
在这里插入图片描述

开始信号和结束信号

I²C起始信号( S) :当SCL高电平时, SDA由高电平向低电平转换;
I²C停止信号( P) :当SCL高电平时, SDA由低电平向高电平转换;
在这里插入图片描述

应答信号

I²C每次传输的8位数据,每次传输后需要从机反馈一个应答位,以确认从机是否正常接收了数据。
当主机发送了8位数据后,会再产生一个时钟,此时主机放开SDA的控制,读取SDA电平, 在上拉电阻的影响下,
此时SDA默认为高,必须从机拉低, 以确认收到数据。
在这里插入图片描述

完整传输流程

  1. SDA和SCL开始都为高, 然后主机将SDA拉低, 表示开始信号;
  2. 在接下来的8个时间周期里(发送8bit数据),主机控制SDA的高低, 发送从机地址。 其中第8位如果为0,表示接下来是写操作,即主机传输数据给从机; 如果为1,表示接下来是读操作,即从机传输数据给主机; 另外,数据传输是从最高位到最低位,因此传输方式为MSB( Most Significant Bit)。
  3. 总线中对应从机地址的设备,发出应答信号;
  4. 在接下来的8个时间周期里,如果是写操作,则主机控制SDA的高低;如果是读操作,则从机控制SDA的高低;
  5. 每次传输完成,接收数据的设备, 都发出应答信号;
  6. 最后,在SCL为高时, 主机由低拉高SDA, 表示停止信号,整个传输结束。

参考文献

IIC通信过程详解以及底层代码实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值