ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
655693 Топик полностью
Antimouse (24.02.2016 14:22 - 14:56, просмотров: 78) ответил Гудвин на Похоже вот здесь хлопец столкнулся с "французким шармом" STM32 - отсутствием fifo в uart и, как следствие, "гонками" DMA пересылок. NXP рулит, короче ;)
Посмотрел его творчество. Похоже никаких гонок там нет, используется один единственный канал DMA, а проблемы оттого, что он неудачно использует периферию и прерывания. Думаю, что надо от таймера вообще запретить все прерывания, синхроимпульсы выпихнуть от синхронизированных таймеров по PWM, SPI-DMA запускать также от таймеров автоматически (разрешить триггер). А вот прерывания сделать по "DMA-complite", чтобы предварительно заряжать новую строку и вычитывать UART, если хоть один байт "валяется" в регистре. (прерывания каждые 64мкс проглотят 115200 бод - это же порядка 87мкс на один байт) И уж если поставить работу UART по DMA, то по двойному буферу, и обрабатывать в прерывании с низким приоритетом, и для этого настроить группы по вытеснению, чего хлопец так и не сделал, хотя ему прямо об этом подсказали.