Harvester 0 20 мая, 2019 Опубликовано 20 мая, 2019 · Жалоба Прошу не пинать за глупые вопросы, в очередной раз разбираюсь с унаследованным кодом. В устройстве производится обмен по шине I2S (McBSP0) с использованием EDMA в режиме пинг-понг. В коде присутствуют следующие определения: // каналы ЕДМА для нужд шины #define EDMA_CH_RX1 3 #define EDMA_CH_RX2 13 #define EDMA_CH_TX1 2 #define EDMA_CH_TX2 12 И уже здесь возникают вопросы: 1. В DS (Table 6-12. EDMA Synchronization Events) указано, что Event 2 - McBSP0 Receive, Event 3 - McBSP0 Transmit, т.е. ровно наоборот. В принципе это не очень важно, поскольку обмен по I2S дуплексный и флаги прерывания по RX и TX устанавливаются и проверяются одновременно. Но хотелось бы понять. 2. В той же таблице указано, что каналы 12 и 13 вообще относятся к UART1. С другой стороны, в документации сказано, что при завершении транзакции DMA будут установлены биты прерывания, соответствующие значению поля TCC регистра OPT PaRAM. Т.е. вроде как никто не запрещает использовать "правильный" для MCBSP канал DMA, но "неправильное" прерывание. Насколько это умозаключение верно? Помогите разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба Сдался вам этот пинг-понг.... Всё без него делается по референс-мануалу на EDMA3 и Mc*SP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 12 minutes ago, __inline__ said: Сдался вам этот пинг-понг.... Всё без него делается по референс-мануалу на EDMA3 и Mc*SP Ну, пинг-понг сделан ручной, т.е. в прерывании переключаются буфера и запускается обмен. А что касается мануала, то в нем-то и вопрос. В процессе изучения рабочего исходного кода я вижу, что он не совпадает с мануалом. Поскольку у меня нет опыта работы с такими процессорами, возникает вопрос - правильно ли я понимаю мануал? Тем более что, как я уже сказал, в DS указано: Event 2 - McBSP0 Receive, Event 3 - McBSP0 Transmit. А в TRM написано: "DMA channel 3 services the incoming data stream of the McBSP. <...> DMA channel 2 services the outgoing data stream of the McBSP" (16.3.4.3.1 и 16.3.4.3.2) Т.е. вроде как наоборот. PS На 2-й вопрос я ответ нашел сам - да, так можно: "If in an application, a channel does not make use of the associated synchronization event or does not have an associated synchronization event (unused), that channel can be used for manually-triggered or chained-triggered transfers." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 21 мая, 2019 Опубликовано 21 мая, 2019 (изменено) · Жалоба Может поможет. Вот мой код для C6745 (не думаю, что I2S в 6746-м сильно отличается). Играет звук через McASP + Audio FIFO + EDMA3 по трём измерениям + прерывание. Компилируется с CCS 6 TI C compiler 8.3.3, синтаксис -C99 : McASP_EDMA3.rar Изменено 21 мая, 2019 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 3 hours ago, __inline__ said: Может поможет. Вот мой код для C6745 (не думаю, что I2S в 6746-м сильно отличается). Спасибо, посмотрю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба 4 часа назад, __inline__ сказал: Вот мой код для C6745 (не думаю, что I2S в 6746-м сильно отличается). Не отличаются??? У ТС-а - McBSP, а у Вас - McASP. Это как-бы несколько разные вещи. Не говоря уже о том, что МК другой. Насколько помню - по периферии подобны 2 линейки внутри между собой: 1) C6745, C6747, L137; 2) C6746, C6748, L138. А вот между этими линейками уже значительно больше отличий чем внутри. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 21 мая, 2019 Опубликовано 21 мая, 2019 · Жалоба Кстати, от техподдержки TI пришел ответ на мой 1-й вопрос. Правильная информация - в datasheet: Event 2 - McBSP0 Receive, Event 3 - McBSP0 Transmit В TRM ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться