30秒轻松搞定I²C、SPI、MDIO时序分析

何为时序分析?

简单来说,时序(timing)就是通信总线各信号有效的先后顺序及配合关系,因而为了确保乐动官方在线入口的稳定,需要对器件的总线通信时序进行一致性测试。

总线信号通信举例

1、I2C

I2C总线只需要两条线,一条SDA数据线,一条SCL时钟线,根据这两条线的高低电平、上升沿、下降沿就可以实现主机与I2C设备的通讯,其中有:

  • 传输开始条件:SCL处于高电平,SDA下降沿时;
图1 I2C时序图
  • 传输接收条件:SCL处于高电平,SDA上升沿时;
图2 I2C时序图
  • 传输数据:开始传输后,SCL处于高电平时,SDA的数据为所传输的数据;
  • 回应: 当传输完一个字节后,I2C设备需要回应一个ACK,这样主机才继续发送;因此回应信号是在传输完8bit后的下一个数据位(SDA值),当SDA为0表示有回应,为1表示没回应。

2、SPI

SPI总线有四种工作方式:

  • {POL,PHA}={0,0}:时钟空闲时为低电平,上升沿采样;
  • {POL,PHA}={0,1}:时钟空闲时为低电平,下降沿采样;
  • {POL,PHA}={1,0}:时钟空闲时为高电平,下降沿采样;
  • {POL,PHA}={1,1}:时钟空闲时为高电平,上升沿采样;
图3 SPI时序

SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

3、MDIO

MDIO接口(Management Data Input/Output Interface),最早在IEEE 802.3的第22卷定义,后来在第45卷又定义了增强版本的MDIO,其主要被应用于以太网的MAC和PHY层之间,用于MAC层器件通过读写寄存器来实现对PHY层器件的操作与管理。

MDIO接口包括两条线,MDIO和MDC,其中MDIO是双向数据线,而MDC是由STA驱动的时钟线。MDIO接口只是会在MDC时钟的上升沿进行采样,而并不在意MDC时钟的频率(类似于I2C接口)。当MDIO由STA输出时,需要满足建立时间、保持时间均大于10ns。当MDIO由PHY输出时,需要满足输出延迟不超过300ns。

图4 MDIO时序

ZDS5054Pro示波器最多支持四十多种通信协议解码,拥有512Mpts的存储深度,可以一次解码长时间通信报文,同时可自动分析MDIO、I2C、SPI、CAN等协议的通信时序。以SPI为例,ZDS5054Pro系列可以对SPI的信号进行解码,还可以设定以下时序参数的阈值,看每一帧信号是否符合时序要求。

图5 测试项目

整个解析到出结果的过程不超过30秒,在进行测试后,位于STATUS一栏,则会显示各项测量项目是否通过,并且能够生成测试报告。

图6 时序测试结果