打印
[STM32F1]

HAL库 模拟SPI

[复制链接]
101|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mickit|  楼主 | 2024-8-31 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用单片机的过程中,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个字节的数据)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

1217

帖子

1

粉丝