Axel 1 29 сентября, 2012 Опубликовано 29 сентября, 2012 · Жалоба Понадобилось организовать периодическое чтение из SPI через DMA - по 19 байт за один сеанс. Получилось, но как-то криво: 1. Понадобилось два канала DMA - один ессно на прием, другой на передачу - чтобы клоки гнать. Иначе никак... 2. После каждой транзакции приходится очищать FIFO - там почему-то оказываются лишние пять байт (нулевые). На внешних линиях никаких лишних пересылок не отмечено (смотрел осциллографом). Оно бы ничего, но лишний код в прерываниях... Если кто знает, как сделать лучше - научите... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 29 сентября, 2012 Опубликовано 29 сентября, 2012 · Жалоба А Вы учитываете, что, когда выполняется передача от МК к внешнему устройству, параллельно производится приём, даже если принимаемые значения не имеют никакого смысла? Ведь по SPI в принципе невозможно организовать только чтение или только запись -- обе эти операции всегда выполняются одновременно и используют одинаковое число "символов" (обмен не обязательно идёт именно байтами). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 30 сентября, 2012 Опубликовано 30 сентября, 2012 · Жалоба Ведь по SPI в принципе невозможно организовать только чтение или только запись В принципе - сколько угодно: оторвать MISO и будет Вам только передача. Ну и наоборот... Все это понятно, но некрасиво... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 30 сентября, 2012 Опубликовано 30 сентября, 2012 · Жалоба В принципе - сколько угодно: оторвать MISO и будет Вам только передача. Не будет - просто входные биты не будут с ноги получаться! Все флаги и данные можно будет из регистров прочитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Axel 1 1 октября, 2012 Опубликовано 1 октября, 2012 · Жалоба Все флаги и данные можно будет из регистров прочитать. А можно и не читать Но я вобщем не об этом... С DMA понятно. Просто я поначалу надеялся, что он поумнее будет и сможет организовать это одним каналом. А вот с очисткой FIFO - похоже что DMA не обнуляет его указатель. Это правда только первое впечатление, более детально проверю, когда время будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться