简介
SPI 是串行外围设备接口。
首先在其 MC68HCXX 系列处理器上定义的。
SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32有 SPI接口。
SPI接口一般使用 4 条线通信:
- MISO 主设备数据输入,从设备数据输出。
- MOSI 主设备数据输出,从设备数据输入。
- SCLK 时钟信号,由主设备产生。
- CS 从设备片选信号,由主设备控制。
SPI 主要特点有:
- 可以同时发出和接收串行数据;
- 可以当作主机或从机工作;
- 提供频率可编程时钟;
- 发送结束中断标志;
- 写冲突保护;
- 总线竞争保护等。
spi四种模式
SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode)
- Mode 0 CPOL=0, CPHA=0
- Mode 1 CPOL=0, CPHA=1
- Mode 2 CPOL=1, CPHA=0
- Mode 3 CPOL=1, CPHA=1
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(1:空闲时高电平; 0:空闲时低电平)
时钟相位CPHA: 即SPI在SCLK第几个边沿开始采样(0:第一个边沿开始; 1:第二个边沿开始)
sd卡地spi常用的是mode 0 和mode 3,这两种模式的相同的地方是都在时钟)上升沿采样传输数据,区别这两种方式的简单方法就是看空闲时,时钟的电平状态,低电平为mode 0 ,高电平为mode 3。
步骤:
(1)配置相关引脚的复用功能,使能 SPI2 时钟
(2)初始化 SPI2,设置 SPI2 工作模式
(3)使能 SPI2
(4)SPI 传输数据
(5)查看 SPI 传输状态
下图为STM32F1 和W25Q128连接电路图