Що таке кільцевої буфер?

Сховище даних UART

Цей репозиторій дає інформацію про те, як зчитувати дані по UART з використанням DMA, коли кількість байтів для прийому заздалегідь невідомо. Сімейство мікроконтролерів кільцевої буфер STM32 може працювати в різних режимах:

  • Режим опитування (без DMA, без IRQ)- додаток повинен опитувати біти стану, щоб перевірити, чи був прийнятий новий символ, і прочитати його досить швидко, щоб отримати всі байти. Дуже проста реалізація, але ніхто не використовує її в реальному житті. Мінуси – легко пропустити одержані символи в пакетах даних, працює тільки для низьких швидкостей передачі.
  • Режим переривання (без DMA) – кільцевої буфер UART запускає переривання, і ЦПУ переходить до службової програмі для обробки прийому даних. Найбільш поширений підхід у всіх додатках сьогодні, добре працює в діапазоні середніх швидкостей. Мінуси – процедура обробки переривання виконується для кожного отриманого символу, може зупиняти інші завдання у високопродуктивних мікроконтролерах з великою кількістю переривань і одночасно операційну систему при отриманні пакету даних.
  • Режим DMA використовується для передачі даних з регістра USART RX у пам’ять на апаратному рівні. На цьому етапі взаємодія з додатком не потрібно, за винятком необхідності обробки отриманих додатком даних. Може дуже легко працювати з операційними системами. Оптимізовано для високих швидкостей передачі даних > 1Mbps і малопотужних додатків, у разі великих пакетів даних збільшення розміру буфера може поліпшити функціональність.