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