[STM32L4] 如何确认 SPI 从机已把待发数据载入外设 TX 寄存器、主机可以读取?

[复制链接]
21|1
地瓜patch 发表于 2026-6-14 20:32 | 显示全部楼层 |阅读模式
我使用 STM32L4S9AII6作为 SPI 从机,对接主频高得多的外部 SPI 主机,二者通过 SPI1 总线通信,希望优化一下双方通信速率。

我需要确认 SPI 发送接口已经把数据装载进 SPI 外设发送寄存器,主机可以来读取。我的逻辑是:从机处理完一条指令后,拉高一根 GPIO 引脚通知主机「数据就绪,可以读取」。
但我如果在调用HAL_SPI_TransmitReceive_IT()之后立刻置位就绪标志,主机会紧接着下发下一条新指令,同时读取上一条指令对应的应答数据;绝大多数情况下从机来不及把应答数据送入 SPI 发送寄存器,本该发给主机的数据要等到下一轮通信周期才能被主机读到。
我认为主机发起读取请求时,MCU 还没把应答数据搬运到 SPI 外设 TX 寄存器。因此我需要一种检测手段,确认数据已经稳稳存入 SPI 外设 TX 寄存器之后,再置位就绪 GPIO,通知主机:数据已就位,可以来读取。
如何检测数据是否已经存入SPI外设TX寄存器?
除了拉高GPIO引脚,还有其他方法通知主机数据就绪吗?
如何优化SPI通信速率?


ClarkLLOTP 发表于 2026-6-15 09:32 | 显示全部楼层
先检查 SPI 发送缓冲区是否为空,再置位就绪 GPIO。可以考虑使用 DMA 传输提高速率。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

3039

主题

18148

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部
0