I2C总线及协议解析


I2C总线https://mp.weixin.qq.com/s?__biz=Mzg3NDkwMjc2NA==&mid=2247483698&idx=1&sn=ab2f2094e0bd53052226fff8737389c6&chksm=cec8e4b1f9bf6da7424588c12ca140bbc2becefab123792c0b9d82cd472173b1bb9cadb5411f#rd

I2C总线是一种常见的串行通信总线,具有以下特点:

  • 以逻辑电平编码

  • 仅有两根双向信号线组成,分别为时钟线 SCL、数据线 SDA,以半双工的方式通信

  • 总线上可以挂载多个I2C设备,通过指定的设备地址访问目标设备(取决于总线的负载电容,要求不超过400pF)

  • 标准模式下,通信速度达100kbit/s;快速模式下,通信速度达400kbit/s;高速模式下达3.4Mbit/s

(图)连接到总线的设备

1 通信状态约定

  • 空闲状态(IDEL)

无数据传输,总线处于空闲状态,时钟线SCL和数据线SDA的电平为逻辑高电平。

  • 开始条件(START)

通知各从设备,总线由空闲状态切换到数据传输状态。此时数据线SDA将由高电平切换为低电平,并维持一段时间。

  • 停止条件(STOP)

数据传输结束,释放总线。此时先把时钟线SCL恢复为高电平,再把数据线恢复为高电平。

(图)开始条件和结束条件

  • 数据有效性

数据线为高电平时,编码为1;为低电平时,编码为0。约定在时钟线SCL为高电平时,对数据线的电平状态进行采样;在时钟线SCL为低电平时,改变数据线SDA的电平状态。

(图)数据有效性

  • 数据传输

总线上的数据按字节(1个字节8位)传输,从最高位(MSB)开始发送,每传完1个字节数据需要得到接收设备的应答信号,再得到有效信号后,接着传输下一个字节,否则结束本次传输,释放总线。

(图)应答

2 握手

主机发起通信后,首先往总线发送第1个字节数据,其中包含指定设备地址和读写请求标志。对应的设备接收到后会回复主机一个应答信号,此时主机和从机建立起了通信联系,主机与从机继续通信,直至本次通信结束。

(图)数据传输示例

  • 首字节的格式

                             (图)首字节格式

3 数据传输

  • 写数据

    1.  主机获得总线(起始条件)

    2. 发送首字节(从机地址 + 写请求)

    3. 获得从机应答

    4. 开始传输数据

    5. 主机释放总结(结束条件)

(图)写数据传输

  • 读数据

    1.  主机获得总线(起始条件)

    2. 发送首字节(从机地址 + 读请求)

    3. 获得从机应答

    4. 开始传输数据

    5. 主机释放总结(结束条件)

(图)读数据传输

  • 读、写数据

在同一次通信中,切换读、写状态需要重新发布开始条件。

(图)读、写数据传输

4 时序特性

I2C总线通信的时序特性如下:

(图)时序图

(图)时序参数

5 结束语

至此,SPI总线已介绍完毕,希望本文可以帮助到大家!

欢迎大家通过后台与我交流学习心得,水平有限,如有错漏的地方请不吝指出,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值