前言
SPI是最常见的串行通讯之一,其通信速率比较高,适合需要传输大量数据的应用。常见的有SPI FLASH,无线模块等。
一、SPI通讯规则
- 采用4条通讯线:时钟线SCLK,数据线MOSI,MISO,片选SS。图中SS[2:0]表示3条线。MOSI是主机输出,从机输入数据线。MISO是主机输入,从机输出数据线。
- 主从方式通讯,一个主机(一般是单片机),可以多个从机(器件)。
- 主机发送一个数据的同时,同时会读一个数据。
二、通讯规则
1、极性CPOL和相位CPHA:
极性CPOL确定SCLK时钟空闲时的电平,CPOL=0,空闲时低电平,CPOL=1,空闲时高电平。
相位CPHA确定数据采样的时钟沿,CPHA=0,第一个时钟沿采样数据。CPHA=1,第二个时钟沿采样数据。
1.1、CPOL=0,CPHA=0
极性CPOL=0,所以SCLK空闲时低电平,CPHA=0,第一个时钟沿采样数据,所以SCLK上升沿采样数据,对MOSI数据线,在第一个SCLK上升沿前需要准备好数据,图中数据线的上下箭头表示切换高低电平。MISO也是在上升沿读数据,发送一个数据同时读入一个数据。SS是片选,低电平有效。
1.2、CPOL=0,CPHA=1
极性CPOL=0,所以SCLK空闲时低电平,CPHA=1,第二个时钟沿采样数据,所以SCLK下降沿采样数据。
1.3、CPOL=1,CPHA=0
极性CPOL=1,所以SCLK空闲时高电平,CPHA=0,第一个时钟沿采样数据,所以SCLK下降沿采样数据。
1.4、CPOL=1,CPHA=1
极性CPOL=1,所以SCLK空闲时高电平,CPHA=1,第二个时钟沿采样数据,所以SCLK上升沿采样数据。
总结:SPI通信主要是极性和相位的理解,主机和从机必须配置相同的极性和相位。