Перейти к содержанию
    

TM32F091 - StopMode

Добрый день

 

Есть устройство, работает под CMSIS_RTOS. Нужно засыпать и просыпаться от изменения состояния на 2х пинах и один раз в час

Правильны ли мои мысли в реализации этого хозяйства:

 

1. Само "засыпание" - у Кейла в примерах это делается в задаче Idle, так и оставим

2. Тактирование GPIO - я так понимаю, без этого никак. Единственное, наверное, перевести на тактирование от внутреннего RC, кварц и PLL отключаем перед засыпанием

3. RTC настраиваем на тактирование от LSE и пусть от батарейки тикает

4. Настраиваем EXTI для пинов и RTC

 

При пробуждении от пинов необходимо только зафиксировать факт изменения состояния пина, увеличить счетчик и снова заснуть

Пробуждение от RTC вызовет работу в течение минуты-полторы и снова в сон.

 

Также есть ADC, хотелось бы как-то и его приплести для просыпания, там делитель с +5в примерно до 1в. Получается, его также нужно тактировать?

 

Теперь интересен сам процесс просыпания, например, от пинов. Прерывание настроено, получается, я "очнусь" в обработчике? Точнее, после __WFE() и сразу влечу в прерывание

 

И самый важный момент - оставляя тактирование периферии, я ведь не получу заветный 1мкА потребления? :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

UPD

 

Мда... что-то грустно. В Stop режиме у меня отключены все источники тактового сигнала. Получается, я не смогу использовать GPIO периферию? А так как отключен и HSI14, то и ADC в пролете...

Ну что ж, придется отключать всю периферию по максимуму и довольствоваться только ~2-3mA в Sleep mode :(

По ТЗ мне хватит, но есть ощущение, что что-то я пропустил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По ТЗ мне хватит, но есть ощущение, что что-то я пропустил

 

Stop mode - просыпается от любого внешнего прерывания (Any EXTI line configured in the EXTI registers)

Standby - минимальное потребление. просыпается от фронта на пине WKUP а так же RTC alarm.

 

И, кстати, можно просыпаться от ножек EXTI но НЕ входить в прерывание (event mode).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Stop mode - просыпается от любого внешнего прерывания (Any EXTI line configured in the EXTI registers)

Standby - минимальное потребление. просыпается от фронта на пине WKUP а так же RTC alarm.

 

И, кстати, можно просыпаться от ножек EXTI но НЕ входить в прерывание (event mode).

Это все понятно. Непонятно вот что: как работает периферия, генерящая EXTI, если ее тактирование отключено?

Ну хорошо, GPIO, его можно смультиплексировать непосредстаенно в дебри EXTI, но как быть с USART и I2C, которые также могут разбудить? Как они могут вообще работать, если нет тактирования?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На сколько я понимаю USART и I2C не будут работать. EXTI line это ж вроде просто нога проца. Т.е. нога дернулась, проц проснулся.

 

На техасовском DSP я когда-то делал немного грязный хак. Перед сном переводил RX ногу USART в режим внешнего прерывания и когда данные прилетали то прерывание срабатывало от stop битов USARTa. Да, именно эти данные мы проспали, но проц просыпался, перенастраивал ногу на RX и следующий пакет уже принимал. Конкретно как там оно в ARM я не знаю, но думается мне, что пробуждение от внешнего прерывания примерно одинаково у всех реализовано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мда... что-то грустно. В Stop режиме у меня отключены все источники тактового сигнала.

Внимательно прочитайте RM0091 Reference manual раздел 7.3 Low-power modes

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

EXTI line это ж вроде просто нога проца. Т.е. нога дернулась, проц проснулся.

нет, Extended interrupts and events controller - это целая конструкция. Источником пробуждения может быть очень много чего

 

Внимательно прочитайте RM0091 Reference manual раздел 7.3 Low-power modes

да, я это уже видел, спасибо

но, в любом случае, ADC я туда точно не вкручу, придется довольствоваться Sleep mode

хотя... можно перенастроить мой делитель на >Vh от +5в и просыпаться по событию Rise Edge, как вариант

пожалуй, да. Пины со свим Falling Edge, входной пин ADC, настроенный на EXTI как просто Rise Edge пин... и RTC на свои линии EXTI - должно получиться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...