STM32 DMA Кольцевой FIFO-буфер
Добавлено: 24 сен 2013, 06:45
Всем привет. Хочу организовать 2 кольцевых FIFO-буфера для передачи и приема данных по UART. Если делать тупо прерываниями, то проблем не воникает. Но хочется использовать DMA, чтобы избавить проц от лишних телодвижений.
Работать должно так:
Имеется n байт. Проверяем заполненность буфера и смотрим влезут-ли туда эти n байт.
Если влезут, записываем и запускаем дма на передачу данных из буфера в UART, если нет, то сигнализируем об ошибке.
Вся проблема в том, что у дма недоступно значение смещения от базового адреса памяти. Следовательно нельзя узнать сколько байт уже ушло и проверить заполненность буфера.
В сязи с чем возникает вопрос, как можно реализовать такую штуку? Нашел этот апноут, но там, кроме того, что "DMA является крутой штукой для организации FIFO" ничего толкового не сказано.
Работать должно так:
Имеется n байт. Проверяем заполненность буфера и смотрим влезут-ли туда эти n байт.
Если влезут, записываем и запускаем дма на передачу данных из буфера в UART, если нет, то сигнализируем об ошибке.
Вся проблема в том, что у дма недоступно значение смещения от базового адреса памяти. Следовательно нельзя узнать сколько байт уже ушло и проверить заполненность буфера.
В сязи с чем возникает вопрос, как можно реализовать такую штуку? Нашел этот апноут, но там, кроме того, что "DMA является крутой штукой для организации FIFO" ничего толкового не сказано.