STM32 HAL库 模拟SPI
2022-08-06 23:45 作者:僚机Wingplane | 我要投稿
在使用单片机的过程中,SPI总线是常用的一种通信方式,与此类似的还有 I²C 和 UART 。在实际的工程开发的工程中硬件工程师可能会无法满足硬件SPI的要求,此外部分芯片的 SPI 通信协议是24位,不是常见的8位或16位,为此我们需要使用IO口来模拟SPI。
SPI的简介:

SPI 有四线和三线两种,本文以常见的三线 SPI 为例
用 STM32CubeMx 初始化模拟 SPI 的引脚:

STM32CubeMx的GPIO的配置可以参考:

所用到的三个IO口分别对应SPI总线的串行数据线和串行时钟线。
CS:PC5
SCLK:PC4
SDI / SDO:PC1
user_spi.h
user_spi.c
SDO_IN:更改一个 SDO 脚为输入
SDO_OUT:更改一个 SDO 脚为输出
SPI_Write_OneByte:使用 SPI 写一个字节
SPI_Read_OneByte:使用 SPI 读一个字节
WriteReg:通过调用 SPI_Write_OneByte 函数使用 SPI 向外传输3个字节24位的数据(实际应用案例:2个地址字节,在这个地址字节下写入1个字节的数据)
ReadReg:通过调用 SPI_Write_OneByte 函数和SPI_Read_OneByte函数使用 SPI 传输2个字节16位的数据,接受1个字节8位的数据(实际应用案例:2个地址字节,等待从从机接受1个字节的数据)
参考文献:
STM32不完全手册_标准库版本_V3.3