一、概念介绍
SPI:Serial Peripheral Interface 串行外设接口
Microwire:SPI的精简接口,microwire的时钟极性和相位是固定的,而SPI的时钟极性和相位则是可编程的
二、SPI与Microwire
1、SPI四种模式
SPI的极性(POL:polarity)和相位(PHA:phase)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode),一般的SPI器件支持mode 0和3。
Mode 0 CPOL=0, CPHA=0 空闲时CLK为低,CLK第一个边沿开始采样数据。
Mode 1 CPOL=0, CPHA=1 空闲时CLK为低,CLK第二个边沿开始采样数据。
Mode 2 CPOL=1, CPHA=0 空闲时CLK为高,CLK第一个边沿开始采样数据。
Mode 3 CPOL=1, CPHA=1 空闲时CLK为高,CLK第二个边沿开始采样数据。
MICROWIRE标准的时钟极性和时钟相位是固定的(CPOL = 0和CPHA = 0)。DIN的数据读取总是锁定在SCLK的上升沿。DOUT的数据输出总是在SCLK的下降沿。MICROWIRE标准没有规定最大数据速率。
SPI可以是三线(MI和MO共用一根线)或者四线,三线的时候只能做半双工。
2、SPI CS的两种接法
2.1 CPU多个CS接口:CPU与SPI设备的CS一对一不共用,如下左图。
2.2 CPU一个CS接口:采取菊花链方式(不是所有SPI器件都支持),如下右图。
3、实测---DM9051的SPI
如上,DM9051 SPI正常通信流程为:CPU发2A,9051回51;然后CPU发2B,9051回90。如同波形,CPU接收到SPI的ID(0x9051),读到后CPU才对应继续发数据。
逻辑分析仪使用提示:
- 记得用CS下降沿触发(CS低有效,主机拉低SPI从设备的CS进行通信采样数据)。因为在CS下降沿之前CLK和DAT也有信号,有些是使能信号指令,有些是无用信号,所以要过滤掉这些信号。
- 如果是1.8V电平,记得把阈值电压略调低点,以免未抓到遗漏的数据。
4、SPI的时钟CLK频率一般最大是几十兆,比如MT6762是27.3MHz。有的CLK频率和SPI器件电源有关,供电越高,CLK频率会更高。