IIC总线一般有两根信号线SCL和SDA;
一般SCL和SDA都会通过上拉电阻实线电平的转换和提高驱动能力;
IIC总线协议包括:起始信号、停止信号、数据位、应答位;
一般一次通信是9个CLK,8个数据位加一个应答位;
IIC属于同步通信,CLK信号线是独立的。
TSU:STA | SDA下降前,SCL维持高时间 |
THD:STA | SDA下降后,SCL维持高时间 |
TSU:DAT | SCL上升前,SDA维持不变时间 |
THD:DAT | SCL下降后,SDA维持不变时间 |
TSU:STO | SDA上升前,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的信号质量和时序都要关注
通过串口发送命令,波形解码严格匹配地址位,如果不一致则是无效波形