第十五篇 IIC时序基础知识

本文深入探讨了IIC总线的工作原理,包括关键信号线SCL和SDA的作用,上拉电阻的选择依据,以及通信协议的基本要素如起始和停止信号。详细分析了时序参数对通信质量的影响,并提供了上拉电阻计算公式。此外,还概述了IIC总线的测试指标和注意事项。

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

IIC总线一般有两根信号线SCL和SDA;

一般SCL和SDA都会通过上拉电阻实线电平的转换和提高驱动能力;

IIC总线协议包括:起始信号、停止信号、数据位、应答位;

一般一次通信是9个CLK,8个数据位加一个应答位;

IIC属于同步通信,CLK信号线是独立的。

TSU:STASDA下降前,SCL维持高时间
THD:STASDA下降后,SCL维持高时间
TSU:DATSCL上升前,SDA维持不变时间
THD:DATSCL下降后,SDA维持不变时间
TSU:STOSDA上升前,SCL维持高时间

其中,SDA只能在SCL低电平才能变化数据;

IIC总线测试读时序的时候,只需要测试TSU:DAT和THD:DAT就可以了。因为START信号和STOP信号都是主设备发出的。

IIC总线测试写时序的时候,全部时序都需要测试。

SCL的频率一般是根据基准时钟倍频或者分频来配置。

IIC总线上器件的数量受400pf容性负载限制。

因为在RC回路中时间常数τ=RC,如果C过大就会引起时钟方波的上升时间,造成方波畸变,出现振铃等信号质量问题,会造成数据通信误码率增加,降低通信质量。

IIC都需要做上拉处理,一般都会上拉到3V3,选择的上拉电阻一般是1k,4.7k,(一般是不小于1k,不大于10k)

如何选择上拉电阻的阻值有两个维度考量:

1.电阻的上限

根据τ=RC来决定R的上限值,由于数字信号在跳变的过程中,都会引入耦合电容Cbus,可以根据器件资料查找到对应的耦合电容,一般也是100pf级别,那么τ是根据什么来确定呢,不同的IIC总线频率不同,频率就决定了周期,也就决定了上升时间,一般对IIC的上升时间要求是小于330ns,这样可以保证通信质量。

比如一个频率是100KHz的SCL信号,其周期就是10us,那么时钟的trise要是15us的话,就是说从0还没跳变到1就开始跌落到0,已经无法完成通信了。

根据以上的时间要求τ和Cbus就可以确定了上拉电阻的上限了。

2.电阻的下限

电阻下限呢,主要是因为IC都有电流限制,如果电阻太小,引起bus中的电流过大,必然对IC是有风险的,所以对电阻有个最低要求。

关于IIC的上拉电阻计算公式有个参考:

Rmin=(VDD-0.4)/3mA;

Rmax=(T/0.874)*C, [T=1us@100KHz,T=0.3us@400KHz], C是Cbus

3.为什么必须要IIC要上拉?

因为IIC是OD门,本身只能输出低电平,所以必须通过外部上拉才能输出高电平;

4.IIC没数据的时候为什么要是高电平?

为了省电,因为IIC是低电平的话,上拉电阻上会消耗电能;

简单阐述IIC总线

答案:IIC总线包含两个信号线SCL和SDA,分别是时钟和数据;
基本概念IIC标准时钟频率是100KHz,快速模式是400KHz,高速模式下3.4MHz。
数据有效性的概念,SCL高电平周期SDA保持稳定,SCL低电平周期SDA可以跳变。
起始条件 SCL高电平时,SDA从高电平跳变为低电平;
停止条件SCL高电平时,SDA从低电平跳变为高电平;
上升时间/下降时间指10%-90%或者20%-80%;
IIC总线需要测试的指标
SCL时钟频率、起始条件建立时间/保持时间、SCL低电平周期、SCL高电平周期、数据建立时间/保持时间、SCL/SDA上升时间、SCL/SDA下降时间、停止条件的建立时间、起始条件和停止条件的空闲时间、线路的容性负载最大值、低电平噪声容限、高电平噪声容限
测试注意事项:
SCL第一个字节的bit7对应的SDA电平(高读低写)
波形测试在接收端末端测试
注意参考地的选择
SDA是双向信号、SCL是主机发出,测试主控芯片端读回信号只关心SDA信号质量时序,SCL只做参考
测试从控芯片端信号SDA和SCL的信号质量和时序都要关注
通过串口发送命令,波形解码严格匹配地址位,如果不一致则是无效波形
 

 

 

根据提供的引用内容,"Command 'python setup.py egg_info' failed with error code 1 in /tmp/pip-build-shwvzlo3/simplejpeg/" 是一个错误信息,它表示在执行命令 "python setup.py egg_info" 时出现了错误代码1。这通常发生在安装Python包时,其中的某个依赖项无法正确安装或编译。 解决此问题的一种方法是确保你的系统上已经安装了所需的依赖项。你可以尝试以下步骤来解决这个问题: 1. 确保你的系统上已经安装了所需的编译工具。在Linux上,你可以使用以下命令安装: ```shell sudo apt-get install build-essential ``` 2. 确保你的系统上已经安装了所需的Python开发包。在Linux上,你可以使用以下命令安装: ```shell sudo apt-get install python-dev ``` 3. 确保你的系统上已经安装了所需的库和依赖项。你可以查看项目的文档或README文件,了解所需的依赖项,并使用适当的包管理器进行安装。 4. 确保你的系统上已经安装了正确版本的Python。有些包可能只支持特定的Python版本。你可以使用以下命令检查你的Python版本: ```shell python --version ``` 5. 如果以上步骤都没有解决问题,你可以尝试使用虚拟环境来安装包。虚拟环境可以隔离不同项目的依赖项,避免冲突。你可以使用以下命令创建和激活虚拟环境: ```shell python -m venv myenv source myenv/bin/activate ``` 以上是解决"Command 'python setup.py egg_info' failed with error code 1 in /tmp/pip-build-shwvzlo3/simplejpeg/"错误的一些常见方法。如果问题仍然存在,你可以尝试搜索相关错误信息或向开发者社区寻求帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值