STM32F0 在 SPI 接收中断时从 STOP 退出

Posted

技术标签:

【中文标题】STM32F0 在 SPI 接收中断时从 STOP 退出【英文标题】:STM32F0 exit from STOP on SPI receive interrupt 【发布时间】:2017-07-10 18:20:22 【问题描述】:

我是否正确地假设在 SPI 接收中断时无法退出 STOP 模式,因为所有时钟都已停止?

【问题讨论】:

【参考方案1】:

是的,SPI 在 STOP 模式下停止。

如果您的 MCU 是 SPI 从机,并且您可以承受丢失第一个数据包的情况,即如果主机没有得到正确的答案,它将重新启动,那么您可以将 NSS 引脚重新配置为在下降沿激活的 EXTI ,即使在 STOP 模式下也能正常工作。

【讨论】:

【参考方案2】:

你是对的,SPI接收中断不能用于将控制器从STOP模式唤醒。

但任何配置为中断模式的 EXTI 线都可以唤醒微控制器。 (表source)

完整的 EXTI 线路映射可在参考手册第 176 页中找到。从 GPIO 映射到 EXTI0 - EXTI15。其余可用行如下:

EXTI 线 17 连接到 RTC 警报事件 EXTI 线 18 连接到内部 USB 唤醒事件 EXTI 线 19 连接到 RTC Tamper 和 TimeStamp 事件 EXTI 线 20 连接到 RTC 唤醒事件(仅适用于 STM32F070xB 和 STM32F030xC 器件) EXTI 线 23 连接到内部 I2C1 唤醒事件

您可以在相应 SPI 线路的 GPIO 引脚上配置一个外部中断,该中断将唤醒控制器。之后,可以使用正确的 SPI RX 中断。请注意,您将丢失 SPI 上的早期数据,因为您将只有一个 GPIO 中断,并且 SPI 外设将停止直到唤醒。

【讨论】:

以上是关于STM32F0 在 SPI 接收中断时从 STOP 退出的主要内容,如果未能解决你的问题,请参考以下文章

STM32F4 在中断时从UART接收数据的问题

STM32F0 DMA“输入溢出”

65 STM32F0系列 串口DMA循环接收实验记录

65 STM32F0系列 串口DMA循环接收实验记录

65 STM32F0系列 串口DMA循环接收实验记录

STM32F0 SPI 环回 - MISO 上没有数据