Правильно ли я предполагаю, что невозможно выйти из режима STOP при прерывании приема SPI, потому что все часы остановлены?STM32F0 выход из STOP на прерывание приема SPI
ответ
Да, SPI остановлен в режиме STOP.
Если ваш MCU является ведомым SPI, и вы можете позволить себе потерять первый пакет, то есть мастер перезапустится, если он не получит правильный ответ, тогда вы можете перенастроить вывод NSS как активированный EXTI при падении edge, он будет работать даже в режиме STOP.
Вы правы, прерывание приема SPI не может использоваться для пробуждения контроллера из режима STOP.
Но любая линия EXTI, сконфигурированная в режиме прерывания, может разбудить микроконтроллер. (Таблица source)
Полное отображение EXTI линии можно найти в справочнике, стр 176. Из GPIOs отображаются в EXTI0 - EXTI15. А остальные используемые линии являются следующие:
- EXTI линия 17 подключается к событию тревоги RTC
- EXTI линии 18 подключен к событию внутреннего USB пробуждения
- EXTI линия 19 соединена с RTC Трамбовщик и Timestamp событие
- EXTI линии 20 подключены к событию РОК Wakeup (доступно только на STM32F070xB и STM32F030xC устройствах)
- Exti линии 23 соединен с внутренним событием I2C1 пробуждения
Что вы можете сделать, это настроить внешнее прерывание на выводе GPIO соответствующей линии SPI, которая пробудит контроллер. После этого можно использовать надлежащее прерывание SPI RX. Обратите внимание, что вы потеряете ранние данные в SPI, поскольку у вас будет только прерывание GPIO, а периферийное устройство SPI будет остановлено до пробуждения.