版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/83782770
1 SPI 介绍
- SPI 是由Motorola 公司提出的一种同步串行外围接口;
- SPI 是一个全双工的同步串行接口,在数据传输过程中,总线上只能是一个主机和一个从机进行通信;
1.1 接口
- MISO(Matser In Slave Out)
- MOSI
- SCK : Serial Clock,串行时钟信号
- SS: Slave Select ,从机选择信号,低电平有效
1.2 SPI 基本机构
相当于8位移位寄存器的首位相接,构成 16 位环形移位寄存器
1.3 时钟信号的相位和极性
- SPI 接口可由 CPOL 和 CPHA 设定4种不同传输格式的时序;
- CPOL 决定时钟脉冲 SCK 的有效脉冲方式(正脉冲、负脉冲),CPHA决定数据线 MOSI 什么时候输出数据或者采集数据;
- CPOL=0,空闲为0;
- CPHA =0,第一个跳变沿采样;CPHA=1,第二个跳变沿采样;
2 SPI 主模式配置
2.1 数据发送
- 当一字节写入发送缓冲器,发送开始;
- 在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到 MOSI 脚; MSB 在前与否取决于 SPI_CR1 寄存器中 LSBFIRST 位。 数据从发送缓冲器传输到移位寄存器时 TXE 标志位将被置位,如果设置 SPI_CR1 寄存器中的 TXEIE 位,将产生中断;
- 在写发送缓冲器之前,需要确认 TXE 标志位 应该是1;
2.2 数据接收
当数据传输完成。
- 移位寄存器里的数据传送到 接收缓冲器,并且 RXNE 标志被置位。如果 SPI_CR2 寄存器中 RXEIE 位被设置,则产生中断;
- 读 SPI_DR 寄存器时, SPI 设备返回接收到的数据字。读 SPI_DR寄存器将清除 RXNE 位。