Альтернативное использование UART как таймера в STM32

В условиях нехватки таймеров в микроконтроллерах STM32, UART можно эффективно использовать для генерации периодических прерываний. UART предоставляет гибкую настройку скорости передачи данных, фактически, делитель частоты, что позволяет точно контролировать интервалы между отправками байтов и, как следствие, частоту прерываний. Для этого UART настраивается на передачу данных, даже если его выходы не подключены, а прерывания вызываются после завершения передачи кадра, который можно растянуть до 12 бит (9 бит данных + 2 стоповых бита + стартовый). Частоту прерываний можно менять «на лету», просто меняя делитель в регистре BRR.
Альтернативное использование UART как таймера в STM32
Изображение носит иллюстративный характер

Использование UART в качестве таймера без DMA реализуется за счет обработки прерываний по окончании отправки каждого байта. Внутри обработчика прерывания необходимо повторно инициировать передачу данных, чтобы обеспечить непрерывную генерацию прерываний. Хотя этот метод и прост в реализации, он имеет некоторые недостатки, связанные с задержкой вхождения в прерывание и исполнением кода в обработчике, что может привести к отклонению от расчетной частоты.

Для более точной генерации прерываний можно использовать контроллер DMA, который снижает задержку. DMA позволяет передавать данные в UART без участия CPU, что уменьшает задержку между прерываниями. В этом случае DMA настраивается на циклическую передачу данных в регистр TDR UART, а прерывания возникают по завершении цикла передачи. Использование DMA также позволяет уменьшить частоту следования прерываний. Для этого в канале DMA настраивается количество передач данных.


Новое на сайте

20065[b]СПКЯ стало СПМЯ: почему переименование болезни, затрагивающей миллионы женщин, заняло... 20064[b]Почему великая пирамида Гизы пережила все землетрясения за 4500 лет[/b] 20063[b]Генетика Homo erectus: что зубная эмаль рассказала о наших предках[/b] 20062[b]Кости в бухте эребус: что кости моряков Франклина рассказывают спустя полтора века[/b] 20061[b]Крупнейший плавучий ветрогенератор в мире: Китай испытывает установку у берегов... 20060[b]Карие глаза младенца стали индиго после лечения от COVID-19[/b] 20058[b]Почему серебряная чаша с Афиной пролежала в немецком лесу две тысячи лет?[/b] 20057[b]Дыра в атмосфере солнца: вспышка достигла пика и может зажечь полярное сияние[/b] 20056[b]Динго возрастом 950 лет: кто и зачем кормил могилу животного сотни лет?[/b] 20055[b]Томоэ гозэн: женщина-самурай, которая существовала на самом деле[/b] 20054[b]Что видели астронавты «Аполлона-12» над лунным горизонтом?[/b] 20053[b]Восковой блокнот на латыни и шёлковая туалетная бумага: кто посещал средневековый... 20052[b]Хантавирус на борту: 41 человек под наблюдением после рейса MV Hondius[/b]
Ссылка