1. SPI介绍
1) 串行外围设备接口(Serial Peripheral Interface),是Motorola公司推出的三线同步通信接口。
2) 特点:高速、全双工、同步通信 四根管脚利于PCB布局节省空间
① 同步:有同步时钟
② 异步:无同步时钟,同行有起始位和终止位来同步传输数据(字符与字 符之间之间的时间间隔可变,不需严格限制时间关系)
③ 主从通讯:采用主从模式(Master Slave)架构;支持多slave模式应 用,一般仅支持单Master。
3) 组成(4根线):由CS(片选)、SCLK(时钟)、MOSI(主机发送/从机接收)、MISO(主机接收/从机发送)构成。
4) 工作模式:4种,时钟信号的相位与极性,使用广泛的是SPI0,SPI3
如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。
5) 用途:EEPROM、FLASH、实时时钟、AD转换等
2. STM32_103-SPI
1) 特点:可以当主机或从机工作,可以同时发送或接收串行数据;提供频率可编程时钟;冲突保护-写冲突保护、总线竞争保护。
2) STM32板上的SPI控制器---作为主机---控制---外扩FALSH-W25Q6。
3) 结构图:
原理:两个移位寄存器在同步时钟信号下进行移位,互换数据(先发高位)
内部环形结构
4) 物理层连接
PA5 : SCK -- 输出 : 复用推挽
PA6 : MISO ---输入 : 浮空输入
PA7 : MOSI ---输出 : 复用推挽
PB0 : CS --输出 : 推挽输出 --I/O引脚直接驱动
原理图:
5) SPI主模式配置步骤
① 设置 BR[2:0] 位以定义串行时钟波特率(参见 SPI_CR1 寄存器)。
② 选择 CPOL 和 CPHA 位,以定义数据传输和串行时钟之间的关系
③ 设置 DFF 位,以定义 8 或 16 位数据帧格式
④ 配置 SPI_CR1 寄存器中的 LSBFIRST 位以定义帧格式
⑤ 如果 NSS 引脚配置成输入,在 NSS 硬件模式下, NSS 引脚在整个 字节发送序列期间都连接到高电平信号;在 NSS 软件模式下,将 SPI_CR1 寄存器中的 SSM 和 SSI 位置1。如果 NSS 引脚配置成输 出,只应将 SSOE 位置 1。
⑥ 将 SPI_CR2 中的 FRF 位置 1,以选择 TI 协议进行串行通信。
⑦ MSTR 和 SPE 位必须置 1