SciFi (29.04.2011 13:10, просмотров: 142) ответил AVF на stm32 +uart rx +dma - философский смысл этого всего?
По пунктам 1) "т.е. получается, если я объявлю достаточно большой буфер, то прерывание по dma произойдет только после его заполнения, и если пакет меньше длины буфера, то не получу никогда. либо периодически опрашивать в цикле, сколько получено байт"
Именно так. Часто бывает так, что реагировать на принятый пакет быстро не требуется, поэтому опрос буфера может быть нечастым. Никаких проблем. DMA разгружает процессор.
2) "если dma буфер меньше длины пакета, то каждый раз по получении прерывания надо будет перекладывать в другой буфер"
Даже если и так, перекладывание из одного буфера в другой быстрее, чем без DMA: заполняя буфер побайтно. Опять же DMA разгружает процессор.
3) "и если пакет не кратен дма опять же придется либо опрашивать в цикле, либо теряется последняя часть пакета"
Терять часть пакета необязательно. Там есть режим кольцевого буфера.
4) "если буфер dma = 1 байт, то нафига он нужен?"
Не нужен. Это было бы извращение.
5) "как правильно делать?"
Зависит от применения. Озвучьте, что Вы делаете.
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้