1. SPI相关理论
1.1 概述
spi是一种同步全双工串行总线,全称串行外围设备接口
通常SPI通过4个引脚与外部器件相连:
MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCK: 串口时钟,作为主设备的输出,从设备的输入。
CSN(NSS): 从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的CSN引脚可以由主设备的一个标准I/O引脚来驱动。
1.2 SPI通信过程分析
SPI通信中可作为从机也可以作为主机,这取决于硬件设计和软件设置。
当器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(CSN),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。
当器件作为从机时,传输在从机选择引脚(CSN)被主机拉低后开始,接收主机输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数
1.3 SPI总线的数据传输方式
SPI总线数据传输时传输方式由两类不同的选择标准决定
CPOL:时钟极性
CPOL=1:SPI时钟线在空闲状态下为高电平
CPOL=0:SPI时钟线在空闲状态下为低电平
CPHA:时钟相位
CPHA=0:在时钟的奇数边沿采样(读取数据),在偶数边沿触发(写入数据)
CPHA=1:在时钟的偶数边沿采样(读取数据),在奇数边沿触发(写入数据)
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在上升沿,数据发送是在下降沿。
CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在下降沿,数据发送是在上升沿。
CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据采样是在下降沿,数据发送是在上升沿。
CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据采集是在上升沿,数据发送是在下降沿。