stm32中SPI通信协议
总结stm32中的SPI通信
概要
SPI的工作方式与串行通信略有不同 - 它使用同步数据总线而不是异步数据总线。考虑到这一点,它使用单独的数据线和时钟,使接收端和发送端彼此保持完美同步。时钟是一个振荡信号,它告诉接收器何时对数据线上的位进行采样。这是时钟信号的上升沿或下降沿。当接收器检测到该边沿时,它将立即查看数据线以读取下一个位。SPI受欢迎的一个原因是,接收硬件可以是一个简单的移位寄存器,比异步串行通信所需的UART更简单、更便宜。
SPI通信协议有四根线组成:CS(NSS、SS)、SCK、SDI、SDO 。主要应用在EEPROM、FLASH、实时时钟、AD转换器上,以及数字信号处理器和数字信号解码器之间。
基本特点:
- 全双工
- 同步
- 串行
- 可以多主机
- 只有主机可以产生信号
如果主机连接多个从设备时,则每个从设备上都需要有一个片选引脚接入到主设备机中,当我们的主设备希望和某个从设备通信时,需要将对应从设备的片选引脚电平拉低。同时,SPI协议还规定时钟信号必须由主机提供给从机,从机自身不能产生和控制时钟信号,没有时钟信号同步从机不能正常工作。
主机和从机的连接方式:
时钟配置
由于SPI是同步的通信协议,所以其是需要时钟的。
配置三个参数:
- 时钟频率:理论上可以配置任意大小的频率,但是一般受限于系统可以提供的时钟大小,SPI最大时钟频率。
- 时钟极性:CPOL,表示SPI总线的极性,当其为0时,SPI总线的空闲状态是低电平,反之为高电平。
- 时钟相位:CPHA,表示SPI总线的相位,当其为0的时候,表示从第一个跳变沿开始采样,为1的时候表示从第二个跳变沿开始采样。
CPOL和CPHA可以组合出四种工作模式,可以根据不同器件的支持情况和自己的需求进行选择和配置。
SPI通讯的优缺点
优点:
- 全双工通讯,传输速度快
- 没有开始位、停止位。数据传输不会终止
缺点:
- 没有校验位,数据传输的准确性不足
- 相较于I2C,其有4根线比较复杂
编程
初始化结构体定义
1 |
|
stm32中SPI通信协议
https://ysc2.github.io/ysc2.github.io/2023/12/02/stm32中SPI通信协议/