一、SPI接口简介
SPI(Serial Peripheral Interface),一种高速、全双工的、同步的串行总线,通信需要四根线,采用主从工作方式,通常为一个主设备和一个或多个从设备。
二、SPI接口
SPI通信需要四根线,其中两根数据线、一根时钟线、一个控制线。
SPI_CS(chip select):用于控制芯片是否被选择,低电平有效。
SPI_SCK(serial clock):由主机产生的同步时钟,用于同步数据。
SPI_MISO(master input slave output):主入从出,用于主机接收从机发来的数据,单向传输(SI)。
SPIO_MOSI(master output slave input):主出从入,主机发送数据,单向传输(SO)。
在SPI通信时,当具有多个从机时,要求从机IO在未被选通(即CS为低电平)时,为高阻状态。
三、SPI工作模式
SPI根据时钟极性和采样相位,分成了四种。即:通过时钟空闲状态时的是高电平还是低电平,采样是在上升沿采样还是下降沿采样进行区分。
不同的从设备在出厂时被配置为其中一种模式,不允许用户进行修改。主机和从机必须工作在同一种模式下,否则会发生数据错误。
一般用CPOL(时钟极性:clock polarity)和CPHA(时钟相位:clock phase)进行描述,通信模式如下:
模式 | CPOL | CPHA | 备注 |
---|---|---|---|
0 | 0 | 0 | 上升沿采样,数据发送得在第一个边沿之前完成 ,即:使能信号一有效,立即发送数据 |
1 | 0 | 1 | 下降沿采样,数据发送在上升沿时完成发送 |
2 | 1 | 0 | 下降沿采样,数据发送在第一个边沿之前完成,即:使能信号一有效,立即发送数据 |
3 | 1 | 1 | 上升沿采样,数据发送在下降沿时发送完成 |
对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
对于CPOL=1, idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;
对于CPOL=0, idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;
- CPOL:对应空闲时,时钟状态
CPOL=0时,时钟状态在空闲时为低电平;
CPOL=1时,时钟状态在空闲时为高电平。 - CPHA:表示数据采样在第几个边沿进行
CPHA=0时,在第一个边沿进行采样:
CPHA=1时,在第二个边沿进行采样。
四、SPI配置
编号 | 配置信息 | 描述 |
---|---|---|
1 | SCLK频率 | 主机选择从机可以接受的频率 |
2 | slave选择 | 主机选择需要操作的从机(低电平有效) |
3 | 传输数据量(bit) | 一般为8的整数倍 |
4 | 传输位序 | 默认先发送最高位(MSB) |
5 | CPOL | 选择时钟极性 |
6 | CPHA | 选择采样边沿(0第一个边沿,1第二个边沿) |
7 | 启停时间 | 启动或停止时,主设备的等待时间 |
链接: https://zhaishuangdong.blog.csdn.net/article/details/105624672