STM32标准库开发—硬件SPI外设

本文介绍了SPI外设的工作原理,包括SPI1和SPI2的不同时钟频率,以及串口数据发送的低位先/高位先规则。重点分析了全双工连续传输与非连续传输的优缺点,强调了非连续传输的推荐使用场景。
摘要由CSDN通过智能技术生成

SPI外设简介

在这里插入图片描述

SPI1与SPI2所挂载的总线位置不一样,所以时钟频率也不一样,SPI2挂载在APB1时钟频率为36MHZ是SPI1的一半
I2S是一种音频传输协议,适用于STM32大容量产品
一般来说串口发送数据时是低位先行,SPI通信是高位先行

SPI框图

在这里插入图片描述

  • 发送缓冲区TDR,接收缓冲区RDR。当我们要传输一批数据时,写入数据到TDR,TDR 的值会自动根据移位寄存器的情况移入数据。当TXE置为1时表示TDR为空,我们可以将数据及时的写入TDR,移位寄存器的数据又会被移出去。当移出完成时,输入的数据也被置换到移位寄存器,此时移位寄存器的数据又会整体的移入RDR。此时RXNE被置为1,表示RDR里有数据。我们要即使的读取RDR里的数据并且软件置为0,否则数据将会被覆盖。
SPI主模式全双工连续传输【不推荐】

在这里插入图片描述
使用复杂,但是传输快。

  • 当有数据放置到TDR时,TXE置为0表示数据正在移动到移位寄存器,当TXE置为1时此时TDR为空,立马移入下一个数据。当移位寄存器完成数据的置换并且移除到RDR时,此时才能将TDR的数据移入到移位寄存器,如此往复
  • 当RXNE为1时,代表接收到数据已经放到RDR上,此时要尽快的读出,并且软件清0
  • 我们可以很明显的看到,这个发送和接收的顺序很不规则,首先是发送数据一再发送数据二然后才接收数据一,对于代码编写不友好
SPI非连续传输【推荐】

在这里插入图片描述
使用简单,但是传输效率低。

  • 当有数据放置到TDR时,TXE置为0表示数据正在移动到移位寄存器,当TXE置为1时此时TDR为空,不需要立马移入下一个数据,而是等到数据置换完成并且等待一段时间后才放入新的数据到TDR。
  • 我们可以对比看出这么做的目的就是为了能够发送一个数据,接收一个数据,这样顺序的发收程序更为容易理解,但是损失了很多性能。
  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值