搜索
查看: 1003|回复: 0

[分享] 解析IIC通讯协议

[复制链接]

332

主题

537

帖子

3836

积分

论坛元老

Rank: 8Rank: 8

积分
3836
发表于 2023-6-26 10:33:31 | 显示全部楼层 |阅读模式
本帖最后由 eefocus_3923837 于 2023-6-26 10:39 编辑

IIC,即Inter-Integrated Circuit,是一种常用的串行通信协议,被广泛应用于各种电子设备中。它具有简单、高效、可靠的特点,因此在芯片间通信中扮演着重要的角色。在本次分享中,我将详细介绍IIC通讯协议的工作原理、应用场景以及一些实际案例。希望通过这次分享,能够对IIC通讯协议有更深入的了解,并能在实际应用中发挥更大的作用。让我们一起来深入解析IIC通讯协议吧!

IIC(Inter-Integrated Circuit)的硬件连接

      1. 对于IIC主机总线上是可以挂1个或者多个从机设备。
     2.  每个从机是通过其各自的地址来识别。
微信图片1.png
    IIC的数据和控制线(SDA和SCL)

1. SCL(Serial clock),时钟线,用于同步数据传输时序,是一个方波,由主机来驱动,其决定了数据传输的快慢。

2. SDA(Serial data),数据线,用于传输数据.
         
IIC寻址

1. 通常对于一个7bit的地址,包含1个额外的读写位。

2. 对于IIC总线上的每一个设备都有一个独立的地址。

3. 重复的地址会导致通讯错误。

4. 对于一些设备会有PIN管脚用来配置不同的IIC地址。
     
微信图片2.png

IIC通讯
START,起始位,由主机初始化,SCL高的时候拉低SDA。
STOP,停止位,SCL高的时候,主机释放SDA PIN脚。
ACK(acknowledge),每一次传输一个单字节或者8bits之后,会跟一个SCL的脉冲,这个acknowledge信号是从机应答主机的信号,表示ACK信号之前的那个字节通讯是成功的。
如下是一个标准的IIC写时序:

Start->MSB->…LSB->ACK->Stop
微信图片3.png

对于有效数据传输:
1. 在时钟信号SCL为高的整个脉宽内SDA必须保持稳定。
2. 只有在SCL脉冲为低的时候,SDA才被允许高低切换,如果SDA在SCL为高的时候变化,则会被认为是Start/Stop。

微信图片4.png      


IIC的电路设计
1. 对于3.4Mbps速率以下的IIC,是漏极开路(Open Drain)的结构,此时需要外部上拉电阻,上拉电阻的选择需要考虑上拉之后的rise/fall的时间是否满足其时序要求同时也需要考虑功耗。上拉电阻越大,功耗越小,但rise/fall时间越长,会影响通讯;上拉电阻越小,功耗越大,但rise/fall时间短,会降低通讯的误码率。
     
       微信图片5.png
2. 对于3.4Mbps速率以上的IIC,其是推挽(Push Pull)的结构,其rise/fall的时间就完全取决于主机/从机设备内部的push/pull的能力。需要注意的是,不同设备之间的通讯需要选择同样结构的IIC。

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|RF技术社区

GMT+8, 2024-5-9 16:35 , Processed in 0.080546 second(s), 10 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表