教你怎样看懂IIC时序图

本文详细解析IIC通信时序图,强调SCL高电平时SDA的数据传输特性,并解释了SDA信号变化的时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教你怎样看懂IIC时序图

这两天在看IIC通信的时序,由于没有找到一个很全面的IIC通信的时序说明,看了三天才基本上明白了IIC通信的时序,刚开始有几个不明白的地方,说来跟大家分享一下,也加深

其他刚入门的兄弟对IIC通信的理解;二话没说,上图,

这个不难理解,实际的代码只是根据硬件时钟和各种不同的IIC器件的要求不同,在延时大小上有区别;

 

这个有段文件说明:

数据/地址传送:所有数据传送(包括地址)都发生在SCL为高电平的时候,除了以上两种情况外,SDA信号在SCL为高电平时不能改变。可能有的资料说明中没有说全,或好多资料是英文版的,不好理解,只有这句。我在另一个资料中看到,还有一个更重要的说明是:1、串行时钟(SCL):SCL的输入是在时钟的上升沿数据进入每个EEPROM设备和下降沿数据输出每个设备。刚开始没有理解的话,看不懂上图1后面的SDA为什么信号是个X,SDA数据是0呢?还是1?仔细看懂了,才反应过来,SCL为低电平时,SDA只是

用来改变数据电平的,要等SCL为高电平时,SDA才传送数据;

### IIC通信时序图及规范 #### 数据传输过程中的时钟和数据线操作 IIC协议的数据传输依赖于两条主要线路:串行数据线(SDA)和串行时钟线(SCL)。每条消息由多个字节组成,而每个字节又分为八个数据位加上一个确认位ACK/NACK。在每次传送一字节之后,接收方需返回一个应答信号给发送方表示已成功接收到该字节[^4]。 #### 起始条件与停止条件 起始条件是在SCL保持高电平时,SDA从高变低;停止条件则相反,在SCL为高的情况下,SDA由低转高。这两个特殊的转换标志着一次完整的读/写周期的开始与结束[^1]。 #### 字节间处理流程 当主机完成了一个字节的发送后,会暂停拉低SDA线以便让出总线使用权给潜在的响应者——即从机。随后,根据具体情况决定是否继续下一个字节的操作或是发出终止序列[^5]。 #### 应答机制 每当有新的8比特被传送到目标节点处时,后者会在紧接着到来的那个第九拍期间给出反馈。具体来说就是通过把SDA置成活动状态(通常表现为逻辑'0')来告知对方自己已经准备好接受更多输入了;反之,则意味着出现了错误或者其他异常情况阻止其进一步参与对话。 #### 时钟延展特性 值得注意的是,某些时候由于内部资源紧张等原因造成的目标器件无法即时做出反应的现象并不罕见。为此设计了一种叫做“时钟伸缩”的解决方案允许下游成员暂时冻结全局脉冲直到自身状况改善为止。这一步骤不会影响整体架构稳定性反而有助于提高系统的灵活性以及可靠性[^3]。 ```plaintext SDA ___ _______ ____ | | | | _v______v________v___v_ / \ / / \ / / \ / / \ / / \ / / \/ SCL ____ _____ ____ | | | | _|______|______|___| ``` 此简易图表展示了典型的IIC启动、数据交换及时停的过程概览。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值