STM32H7的SPI总线基础


◆ STM32H7 的 SPI 支持 4 到 32bit 数据传输,而 STM32F1 和 F4 系列仅支持 8bit 或者 16bit。
◆ STM32H7 的主频 400MHz 时,SPI1, 2, 3 最高通信时钟是 100MHz,而 SPI4, 5, 6 是 50MHz。
◆ STM32H7 的 MISO 和 MOSI 引脚功能可以互换,使用比较灵活。
◆ SPI 总线的片选引脚 SS 在单一的主从器件配置下是可选的,一般情况下可以不使用。

硬件框图

在这里插入图片描述
通过这个框图,我们可以得到如下信息:
spi_wkup 输出
低功耗唤醒信号。
spi_it 输出
spi 的中断请求信号。
spi_tx_dma
spi_rx_dma
spi 的 DMA 发送和接收请求信号。
spi_pclk
为寄存器提供时钟。
spi_ker_ck
为 spi 内核时钟。
SCK(CK),Serial Clock
此引脚在主机模式下用于时钟输出,从机模式下用于时钟输入。
MISO(SDI),Master In / Slave Out data
此引脚在从机模式下用于发送数据,主机模式下接收数据。
MOSI(SDO), Master Out / Slave In data
此引脚在从机模式下用于数据接收,主机模式下发送数据。
SS(WS), Slave select pin
根据 SPI 和 SS 设置,此引脚可用于:
选择三个从器件进行通信。
同步数据帧。
检测多个主器件之间是否存在冲突。
通过这个框图还要认识到一点,SPI 有三个时钟域,分别是寄存器所在的 ABP 总线时钟域,内核时钟发生器时钟域以及内核时钟发生器分频后的串行时钟域。

接口的区别和时钟源(SPI1 到 SPI6)

SPI1 到 SPI6 的区别
SPI1,SPI2 和 SPI3 支持 4 到 32bit 数据传输,SPI4,SPI5 和 SPI6 是 4 到 16bit 数据传输。
SPI1,SPI2 和 SPI3 的 FIFO 大小是 168bit,而 SPI4,SPI5 和 SPI6 的 FIFO 大小是 88bit。
在这里插入图片描述
SPI1 到 SPI6 的所在的总线(对应 SPI 框图的 SPI_CLK 时钟域)
SPI1,SPI4 和 SPI5 在 APB2 总线,SPI2,SPI3 在 APB1 总线,SPI6 在 APB4 总线。注意,SPI 的最高时钟不是由这些总线决定的。
SPI1 到 SPI6 的支持的最高时钟(对应 SPI 框图的 SPI_KER_CK)
STM32H7 主频在 400MHz 下,SPI1,SPI2 和 SPI3 的最高时钟是 200MHz,而 SPI4,5,6 是 100MHz, 以 SPI1 为了,可以选择的时钟源如下:
在这里插入图片描述
这里特别注意一点,SPI 工作时最少选择二分频,也就是说 SPI1,2,3 实际通信时钟是 100MHz,而 SPI4,5,6是50MHz。

spi总线全双工、单工、半双工通信

片选信号 SS 在单一的主从器件配置下是可选的,一般情况下可以不使用。但需要同步数据流,或者用于 TI 模式时需要此信号。
全双工通信
全双工就是主从器件之间同时互传数据,SPI 总线的全双工模式接线方式如下:
在这里插入图片描述 半双工通信
半双工就是同一个时刻只能为一个方向传输数据,SPI 总线的半工模式接线方式如下:
在这里插入图片描述
1KΩ 的接线电阻很有必要,因为当主器件和从器件的通信方向不是同步变化时,容易出现其中一
个输出低电平,另一个输出高电平,造成短路。

单工模式
单工就是只有一种通信方向,即发送或者接收,SPI 总线的单工模式接线方式如下:
在这里插入图片描述

总线星形拓扑

在这里插入图片描述
◆ 主器件的 SS 引脚不使用,使用通用 GPIO 控制。为每个器件配一个 SS 引脚,方便单独片选控制。
◆ 从器件的 MISO 引脚要配置为复用开漏输出(很多外部芯片在未片选时,数据引脚是呈现高阻态)。

总线通信格式

在这里插入图片描述
四种通信格式如下:
◆ 当 CPOL = 1, CPHA = 1 时
SCK 引脚在空闲状态处于高电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。
◆ 当 CPOL = 0, CPHA = 1 时
SCK 引脚在空闲状态处于低电平,SCK 引脚的第 2 个边沿捕获传输的第 1 个数据。
◆ 当 CPOL = 1, CPHA = 0 时
SCK 引脚在空闲状态处于高电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。
◆ 当 CPOL = 0, CPHA = 0 时
SCK 引脚在空闲状态处于低电平,SCK 引脚的第 1 个边沿捕获传输的第 1 个数据。

示例

比如对个NORflash进行操作
首先 W25Q 是上升沿做数据采集,所以 STM32H7 的可选的配置就是:
CHOL = 1, CPHA = 1
CHOL = 0, CPHA = 0
对于这两种情况,具体选择哪种,继续往下看。W25Q 有两种 SCK 模式,分别是 Mode0 和 Mode3,也就是空闲状态下,SCK 既可以是高电平也可以是低电平。这样的话,这两种情况都可以使用,经过实际测试,STM32H7 使用这两个配置均可以配置驱动 W25Q。
在这里插入图片描述

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值