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

Выход из режима STOP STM32F030

Здравствуйте, Коллеги.

Потребовалась помощь. Устройство должно получать основное питание от сетевого БП с гасящим конденсатором. При пропадании сети надо переходить в режим STOP, а при появлении сети - снова в RUN. Питание во время отсутствия сети предполагается от электролитического конденсатора. Датчик сети выдаёт меандр при наличии сети, при отсутствии его нет.

Тактирование от внутренних генераторов, используется PLL. Переход в режим STOP происходит, перед этим отключаю индикацию, записываю данные во FLASH, останавливаю таймер, АЦП, выключаю P-MOSFET-ключ, через который подаётся питание. Все неиспользуемые выводы в режиме выходов с низким уровнем. Практически если включить в сеть позже, чем через 1-2с, то вместо продолжения работы происходит RESET.

Подал внешнее питание 3,3В на STM через мультиметр, чтобы измерить ток. Сделал внешний сигнал пробуждения от кнопки. Ток потребления составляет 5-6мкА. Конденсатора 470мкФ должно хватать на 80с. Отключаю сеть, через 10-20с снова включаю - STM в режиме STOP. Затем подаю сигнал пробуждения - и ... происходит RESET.

Не пойму в чём дело... Подпаял временно ионистор, на нём контролирую напряжение мультиметром. Напряжениие держится. При включении в сеть - небольшая просадка. И RESET.

Подскажите, куда копать?

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


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

3 minutes ago, Ioann_II said:

И RESET.

А нельзя ли посмотреть отладчиком причину сброса? Регистр RCC_CSR.

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


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

Попробуйте запитать МК от батареи и тоже подергать сеть - вполне вероятно, что дело не в питании.

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


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

5 minutes ago, Ioann_II said:

При переходе в STOP отладка у меня отваливается.

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

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


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

1 minute ago, Ioann_II said:

Вот и спрашиваю.

Вероятно, в момент коммутации сети ваш МК ловит импульс сброса. Как цепь RESET организована?

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


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

21 минуту назад, haker_fox сказал:

А нельзя ли посмотреть отладчиком причину сброса? Регистр RCC_CSR.

Сделать вывод в отладочный UART.

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


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

Посмотрел - бит RCC_CSR_PORRSTF установлен. Получается, что по питанию. Цепь RESET - на выводе конденсатор 0,1мкф и на земляной полигон.

Поставил дополнительно к ионистору конденсатор 470мкФ - стало правильное пробуждение. Вероятно, при пробуждении получается большой ток. Но почему? И можно этого избежать?

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


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

14 минут назад, Ioann_II сказал:

Посмотрел - бит RCC_CSR_PORRSTF установлен. Получается, что по питанию. Цепь RESET - на выводе конденсатор 0,1мкф и на земляной полигон.

Так если POR, то причём тут "цепь RESET"? Смотреть глитчи по линиям питания.

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


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

Тут есть у меня предположение: питание появляется не сразу, как к сети подключаю - надо, чтобы ещё конденсаторы зарядились. Пробовал сделать пробуждение от другого входа, на который подавал питание. Не получилось. Наверное, медленно питание появляется.

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


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

58 minutes ago, Ioann_II said:

Так я запитал от ионистора, он "держит" питание

Держит ли? Если будить не сетью, а вручную - не сбрасывается?

Лучше подключите батарею, а цепи питания МК от сети временно отключите.

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


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

Ув. aaarrr, на макетке всё было прекрасно, ток измерял (но источник не отключал), по одному событию уходил в STOP, и ток при этом не более 5-6мкА, по другому (кнопка) - переход в RUN. Никаких фокусов по питанию не обнаруживал, при пробуждении от кнопки ход программы продолжался как положено.

Но вот когда всё это было перенесено в испытываемый образец, появились проблемы.

Хочу заострить внимание на том обстоятельстве, что датчик сети пробуждает раньше, чем появляется нормальное питание на МК. Этот момент нужно исправить. Но как? Какие есть рекомендуемые решения? Что посоветуете?

Ранее с подобными особенностями по питанию устройства делать не приходилось.

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


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

23 минуты назад, Ioann_II сказал:

датчик сети пробуждает раньше, чем появляется нормальное питание на МК. Этот момент нужно исправить. Но как?

Добавьте ключ на сигнал от датчика, который включится либо от сигнала с МК, либо по достижению нормального питания.

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


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

Zig, включать от сигнала с МК невозможно, т.к. МК в режиме STOP полностью остановлен и ничего не делает (если я конечно, не ошибаюсь). Про сигнал о достижении нормального питания думаю, это по сути нужна микросхема монитора питания - кстати, можете порекомендовать дешёвую, распространённую, на 3.3В, желательно в корпусе sot-23...sot23-6. Ну или в другом малогабаритном SMD? А то я давно забыл уже за них.

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


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

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

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

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

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

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

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

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

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

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