打印
[活动]

【APM32F411V Tiny Board测评】示例工程SPI_FullDuplex

[复制链接]
154|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 [鑫森淼焱垚] 于 2024-5-17 17:17 编辑

【APM32F411V Tiny Board测评】示例工程SPI_FullDuplex

SPI_FullDuplex
    示例说明
    管脚说明
    流程
        SendDataTest()
        FullDuplexTest()
    运行现象
        传输未开始
        SendDataTest
        FullDuplexTest
        串口日志

SPI_FullDuplex  
示例说明

SPI1 和 SPI2 互联进行数据收发,其中 SPI1 作为 Master, SPI2 作为 Slave。

管脚说明

SPI1 Master
SPI2 Slave
SCK  PA5
PB10
MISO PA6
PC2
MOSI PA7
PC3


流程

第一步:初始化LED2 (PE6),LED3(PE5),
第二步:配置UART(PA9 是 USART1_TX, PA10 是USART1_RX),第三步:初始化两个按键 KEY1 (PA1) 和 KEY2 (PA0),
第四步:SPI 初始化,SPI1 双线全双工 Master,管脚为 PA5 SCK, PA6 MISO, PA7 MOSI; SPI2 双线全双工 Slave,管脚 PB10 SCK, PC2 MISO, PC3 MOSI。
第五步:死循环中,如果按键1按下,执行 SendDataTest() 函数;如果按键2按下,执行 FullDuplexTest() 函数。


SendDataTest()
  
是轮询收发模式,SPI1 发送前需检查 SPI_FLAG_TXBE 标志,等发送缓冲区为空才能发送。SPI2 接收前序检查 SPI_FLAG_RXBNE 标志,等接收缓冲区不为空才能从中取出数据。
发送接收完成,比对 txDataBufSPI1 和 rxDataBufSPI2,数据相同则点亮 LED2,数据不同则 LED2 闪烁并打印 Error。


FullDuplexTest()

同上面测试相似,不同的是 SPI2 作为 Slave ,也进行数据发送、接收,SPI1 作为 Master,同时进行数据发送、接收。
发送的条件:等待 SPI_FLAG_TXBE ,发送缓冲区为空才开始发送一个数据;等待 SPI_FLAG_RXBNE,接收缓冲区不空,才开始接收一个数据。收发完成,比对数据,数据相同则点亮 LED3,数据不同则LED3闪烁,并打印 Transfer Fail 日志。


运行现象

传输未开始

LED2 off, LED3 off



SendDataTest

按下KEY1,传输结束,数据比对成功,LED2 on



FullDuplexTest

按下 KEY2,传输结束,数据比对成功,LED2 on, LED3 on



串口日志





使用特权

评论回复
沙发
szt1993| | 2024-5-23 17:17 | 只看该作者
SPI通信稳定性非常强,速率快

使用特权

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

本版积分规则

16

主题

72

帖子

0

粉丝