Вход аварийного отключения таймера (break)
Если драйвер силового моста сообщил о перегрузке, выключать ШИМ из прерывания — слишком медленно и ненадёжно. У расширенных таймеров STM32 для этого есть отдельный вход break: он отключает выходы аппаратно, даже если тактирование уже пропало.
Обновлено Редакция GAW
Содержание
Вход аварийного отключения (break input, вывод BKIN) — вход расширенных таймеров STM32 (TIM1 и TIM8 у STM32F4), который при аварийном сигнале аппаратно снимает разрешение выходов — бит MOE в регистре TIMx_BDTR — и переводит выходы ШИМ в заранее заданные безопасные уровни. Источником может быть вывод BKIN или сбой внешнего генератора, обнаруженный системой контроля тактирования (RM0090, разд. 17.3.12). Отключение асинхронное и срабатывает даже без тактового сигнала.
Настройка
| Бит | Регистр | Назначение |
|---|---|---|
| BKE | TIMx_BDTR | включает break (после сброса выключен) |
| BKP | TIMx_BDTR | полярность входа |
| MOE | TIMx_BDTR | общее разрешение выходов, сбрасывается при аварии |
| AOE | TIMx_BDTR | автоматически ставит MOE на следующем событии обновления |
| OSSI, OISx, OISxN | TIMx_BDTR, TIMx_CR2 | состояние выходов после аварии |
| BIE / BDE | TIMx_DIER | прерывание / запрос DMA по флагу BIF |
Изменение BKE и BKP вступает в силу через один такт шины APB, поэтому прочитать новое значение сразу после записи нельзя. Break можно вызвать и программно — битом BG в TIMx_EGR, это удобно для проверки защиты.
Зачем он нужен
Типичный источник аварийного сигнала — выход «перегрузка» драйвера H-моста, датчик тока, тепловой датчик. RM0090 прямо предлагает подключать к break сигналы аварии от силовых драйверов и датчиков. Важная деталь для мостов: если таймер работает с комплементарными выходами, после аварии уровни выставляются через мёртвое время, и оба ключа плеча не будут открыты одновременно ни в какой момент.
Вход действует по уровню: пока авария не снята, MOE установить нельзя, а флаг BIF не сбрасывается. Если же включён AOE, выходы вернутся сами на следующем событии обновления; RM0090 упоминает это для регулирования, а для защиты советует держать MOE выключенным до записи программой. У STM32F1 у TIM1 и TIM8 та же функция с теми же битами (RM0008, разд. 14.3.12). Подробнее о таймерах — в статье «Таймеры STM32».
Не путать
С условием break в UART — длинным нулём на линии приёма; это термин break в UART.
Частые вопросы
Что произойдёт с выходами при срабатывании break?
Бит MOE сбрасывается асинхронно, и выходы переходят в состояние, заданное битом OSSI и уровнями OISx и OISxN в TIMx_CR2. Если используются комплементарные выходы и тактирование таймера есть, уровни OISx и OISxN выставляются через мёртвое время, так что оба ключа плеча одновременно не откроются (RM0090, разд. 17.3.12). Это работает даже при остановленном генераторе микроконтроллера.
Как вернуть ШИМ после аварии?
Пока вход break активен, MOE установить нельзя ни программно, ни автоматически — вход действует по уровню. Когда авария снята, MOE ставят записью в TIMx_BDTR. Если включён бит AOE, MOE поставится сам на следующем событии обновления; RM0090 предлагает это для регулирования, а для защиты — оставлять AOE выключенным, чтобы выход включала программа.
Зачем нужны биты LOCK?
Чтобы сбой программы не изменил настройки защиты. Биты LOCK в TIMx_BDTR замораживают мёртвое время, полярности и состояния выходов, режимы OCxM, разрешение и полярность break на одном из трёх уровней, а записать их можно только один раз после сброса (RM0090, разд. 17.3.12).
Источники
- STMicroelectronics. RM0090 Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439, Rev 21 — разд. 17.2 — break input у TIM1 и TIM8; 17.3.12 — источник: вывод BRK или сбой тактирования от CSS; после сброса break выключен, MOE = 0; BKE включает, BKP задаёт полярность, изменение действует через 1 такт APB; при срабатывании MOE сбрасывается асинхронно, работает и при остановленном генераторе; выходы — в уровни OISx/OISxN, с комплементарными выходами — через мёртвое время; флаг BIF, прерывание BIE, DMA BDE; AOE — MOE снова ставится на следующем событии обновления; вход действует по уровню, пока он активен, MOE не установить; программный break — бит BG в TIMx_EGR; биты LOCK (три уровня) записываются один раз после сброса
- STMicroelectronics. RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx, Rev 21 — разд. 14.3.12 — та же функция break у TIM1 и TIM8 STM32F1; описание TIMx_BDTR — биты BKE, BKP, AOE, MOE
Нашли ошибку?
Смотрите также
- Мёртвое времяПауза между ключами полумоста против сквозного тока
- H-мостЧетыре ключа для смены полярности на нагрузке
- Таймеры STM32Тактирование, PSC/ARR, ШИМ, мёртвое время, захват, энкодер, OPM, синхронизация
- Система контроля тактирования (CSS)Обнаружение отказа кварца HSE и переход на HSI
- Канал захвата/сравненияРегистр CCRx таймера: запоминает счётчик или сравнивается с ним