Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188
Понадобилось организовать периодическое чтение из SPI через DMA - по 19 байт за один сеанс. Получилось, но как-то криво: 1. Понадобилось два канала DMA - один ессно на прием, другой на передачу - чтобы клоки гнать. Иначе никак... 2. После каждой транзакции приходится очищать FIFO - там почему-то оказываются лишние пять байт (нулевые). На внешних линиях никаких лишних пересылок не отмечено (смотрел осциллографом). Оно бы ничего, но лишний код в прерываниях... Если кто знает, как сделать лучше - научите...
А Вы учитываете, что, когда выполняется передача от МК к внешнему устройству, параллельно производится приём, даже если принимаемые значения не имеют никакого смысла? Ведь по SPI в принципе невозможно организовать только чтение или только запись -- обе эти операции всегда выполняются одновременно и используют одинаковое число "символов" (обмен не обязательно идёт именно байтами).