Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1778 SPI DMA
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Axel
Понадобилось организовать периодическое чтение из SPI через DMA - по 19 байт за один сеанс. Получилось, но как-то криво:
1. Понадобилось два канала DMA - один ессно на прием, другой на передачу - чтобы клоки гнать. Иначе никак...
2. После каждой транзакции приходится очищать FIFO - там почему-то оказываются лишние пять байт (нулевые). На внешних линиях никаких лишних пересылок не отмечено (смотрел осциллографом). Оно бы ничего, но лишний код в прерываниях...
Если кто знает, как сделать лучше - научите...
SII
А Вы учитываете, что, когда выполняется передача от МК к внешнему устройству, параллельно производится приём, даже если принимаемые значения не имеют никакого смысла? Ведь по SPI в принципе невозможно организовать только чтение или только запись -- обе эти операции всегда выполняются одновременно и используют одинаковое число "символов" (обмен не обязательно идёт именно байтами).
Axel
Цитата(SII @ Sep 30 2012, 02:05) *
Ведь по SPI в принципе невозможно организовать только чтение или только запись

В принципе - сколько угодно: оторвать MISO и будет Вам только передача. Ну и наоборот... biggrin.gif Все это понятно, но некрасиво...
KRS
Цитата(Axel @ Sep 30 2012, 07:34) *
В принципе - сколько угодно: оторвать MISO и будет Вам только передача.

Не будет - просто входные биты не будут с ноги получаться! Все флаги и данные можно будет из регистров прочитать.
Axel
Цитата(KRS @ Sep 30 2012, 22:44) *
Все флаги и данные можно будет из регистров прочитать.

А можно и не читать biggrin.gif Но я вобщем не об этом... С DMA понятно. Просто я поначалу надеялся, что он поумнее будет и сможет организовать это одним каналом. А вот с очисткой FIFO - похоже что DMA не обнуляет его указатель. Это правда только первое впечатление, более детально проверю, когда время будет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.