IIC总线测试总结
对于Current Address Read,其操作过程为:
1、主设备发出START信号;
2、主设备发出DEV SEL信号,之后“R/W”位置1,表示接下来执行读操作;
3、从设备应答ACK;
4、从设备从当前指针所指单元发出数据;
5、主设备应答位,不应答从数据设备读入(NO ACK,高电平);
6、主设备发出STOP信号,结束此次读操作。
Sequential Current Read一次可读出多个数据,每8位数据读出后,主设备进行一次ACK应答,最后一个数据,主设备不进行应答,应答位置高,之后发出STOP信号结束操作。
对于Random Address Read,其操作过程为:
1、主设备发出START信号;
2、主设备发出DEV SEL信号,之后“R/W”位置0,表示接下来仍执行写操作;
3、从设备应答ACK;
4、主设备发出Byte addr信号,从设备对每8位Byte addr进行一次应答ACK;
5、主设备再次发出START信号;
6、主设备再次发出DEV SEL信号,之后“R/W”位置1,表示接下来执行读操作;
7、从设备应答ACK;
8、从设备从之前写入的Byte addr地址中读出数据;
9、主设备不进行应答,应答位置高(NO ACK);
10、主设备发出STOP信号,结束此次操作。
三、IIC总线测试项目
1、时钟SCL信号质量测试
包括高电平电压、低电平电压、上冲、下冲、上升时间、下降时间、时钟频率、高电平脉宽、低电平脉宽。
2、数据SDA信号质量测试
包括高电平电压、低电平电压、上冲、下冲、上升时间、下降时间。
3、写保护WC信号质量测试
包括高电平电压、低电平电压、上冲、下冲。
4、时序测试
需要测试的时序如下图所示:


图4 IIC总线时序测试项目图
(1) tHD:STA:START信号保持时间。IIC总线是在SCL信号为高电平时,SDA下降沿作为START信号的。该参数是指SDA信号由高变低后,SCL还需要维持高电平的最短时间,以确保START信号成功采样;
(2) tHD:DAT:数据保持时间。IIC总线是在时钟SCL上升沿的时候对数据进行采样,SDA需在时钟上升沿来临前保持稳定;同时SDA需在时钟SCL为低电平时才能进行转换。该参数即是时钟SCL由高变低后,SDA还需要维持上一位数据电平的最短时间;
(3) tSU:DAT:数据建立时间。指在SCL上升沿来临之前,SDA此次采样数据电平需要提前维持的最短时间,以确保此次数据的采样成功;
(4) tSU:STA:START信号建立时间。指在SDA下降沿来临之前,SCL需要提前维持高电平的最短时间,以确保START信号的成功建立;
(5) tSU:STO:STOP信号建立时间。IIC总线是在SCL信号为高电平时,SDA上升沿作为STOP信号的。该参数是指在SDA上升沿来临之前,SCL需要提前维持高电平的最短时间,以确保STOP信号的成功建立;
(6) tBUF:总线释放最短时间。本次IIC操作结束和下次IIC操作开始需要对总线进行释放的最短时间;
(7) tWLDL(tSU:WC):WC信号建立时间。WC信号需要在START信号发出前便完成建立。该参数即在START信号SDA下降沿来临之前,WC信号需要提前维持低电平以确保成功建立的最短时间;
(8) tDHWH(tHD:WC):WC信号保持时间。WC信号需要在STOP信号发出后仍维持一段时间。该参数即在STOP信号SDA上升沿发出之后,WC信号仍需维持低电平以确保STOP操作成功完成的最短时间。
以上便是需要进行测试的项目。
四、IIC总线测试注意事项
自己之前在进行IIC总线测试时,由于急于完成,误认为读过程就是完全的数据读出。其实从IIC读操作过程就可以很明确的得知,读过程也包含着数据写入的阶段,比如START信号发出,DEV SEL信号发出和Byte addr信号的发出;
另一方面,由于START信号和STOP信号均是由主设备发出的,因此在测试IIC读操作时序的时候,仅需要测试tSU:DAT和tHD:DAT两项参数。而写操作才需要测试所有时序参数;
最后在测试过程中,尤其是在读操作过程中,由于前面先要执行设备识别、地址写入等写操作,之后才会出现数据的读出,如果要用示波器去抓整个读操作过程,然后再放大局部去读取时序参数,可能会由于时基过大,局部分辨率不够,导致读取的时序参数并不准确。
对于示波器,自己觉得比较重要的几个参数包括:带宽、采样速率和存储深度。
带宽主要针对的是示波器支持的输入波形频率范围;
采样速率主要是指示波器内部对波形的采样速率,根据香农采样定理,要想不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。而实际上对于输入的波形,其最高频率取决于波形的边沿,可以用5~7倍信号频率来评估;
存储深度主要指示波器存储采样点的多少。之所以说在IIC读操作测试中,为了获取整个操作过程中的波形,将时基调大,然后再局部放大,受限于存储深度,局部的波形可能就会失真,读取出来的参数会有较大误差。
因此在读测试时,可以采用脉宽采样,由于我们的测试中,用到的是Random Address Read和Sequential Random Read两种模式,在读出数据前,主设备还要再发出一次DEV SEL信号,tSU:STA便是在此时测量,但此时的SCL信号脉宽也不同于之前,如下图红色框中的波形所示:

图5 tSU:STA测试时对应的SCL脉冲波形
可以先将时基调大,初步测出红色框中SCL脉宽长度,然后用脉宽采样,划定波形脉宽范围,然后采出波形,这样得到的读数据波形便有足够的采样点,读取的参数值也更有参考价值。
tSU:STA和tBUF也可按此方法采样测试。
通过这次测试,使自己更加明白,在做任何事情,不要急于着手,而是先想想看计划是怎样,采用什么样的方法,从总体上理清了头绪再着手,遇到细节问题再深究。
评论