|
Помогите с I2S на LPC2478 |
|
|
|
Jan 7 2011, 13:21
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Взял пример http://electronix.ru/forum/index.php?act=a...st&id=34513, единственный который удалось найти в инете. Убрал вход I2S, подключил DMA (#define I2S_DMA_ENABLED 0), в выходной буфер DMA сгенерил синус. На выходе получаю только один период соответствующий размеру буфера. 1. В примере прерывание от I2S разрешается только когда нет DMA. В обработчике реализован только приём данных. Это правильно? 2. Как возобновить проигрывание буфера? 3. I2SDMAx. Что означает rx_depth_dma, trx_depth_dma? 4. I2SIRQ. Что означает rx_depth_Irq, tx_depth_Irq? 5. I2SSTATE. Что означает dmareq1, dmareq2, rx_level, tx_level? 6. Есть ЦАП с входными пинами SCK, BCK, DATA, LBCK. Им соответствуют пины LPC, I2STX_CLK – BCK, I2STX_WS – LBCK, I2STX_SDA – DATA. А куда подключать SCK? 7. Самое главное. Есть документ, где обо всем этом подробно и толково изложено. И вообще обо всех интерфейсах.
|
|
|
|
|
Jan 8 2011, 17:32
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Цитата(DpInRock @ Jan 8 2011, 12:42)  Но, к сожалению, даташиты от NXP устроены так, что их нужно читать от начала до конца, как детектив. Иначе не поймешь кто убийца. Да, я это начинаю понимать, информация распределена тонким слоем по всему документу. Как было просто с AVR. Но может есть специализированные документы, где конкретно программирование каждого интерфейса расписано, не хочется много время на стандартные вещи тратить. Есть же примеры в RL-ARM, но почему то не для всех интерфейсов.
|
|
|
|
|
Jan 10 2011, 17:22
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 8-12-09
Пользователь №: 54 123

|
Цитата(Oleg_IT @ Jan 7 2011, 19:21)  А куда подключать SCK? Ну, это очинно сильно!!! А если по хорошему, то: i2s у LPC весьма не плох и очень прост в использовании, это ж Филлипс. в DMA режиме сложно сделать поддержку некоторых режимов, например 20 или 24 бита на канал, но фифо сильно выручает. Топик- стартеру: читайте аппноты.
|
|
|
|
|
Jan 11 2011, 04:39
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Цитата(IgorKossak @ Jan 8 2011, 23:36)  Спасибо за ссылку, интересно. Цитата(карабас @ Jan 10 2011, 23:22)  А если по хорошему, то: i2s у LPC весьма не плох и очень прост в использовании, это ж Филлипс. в DMA режиме сложно сделать поддержку некоторых режимов, например 20 или 24 бита на канал, но фифо сильно выручает. Я не говорил, что i2s плох и сложен. Просто есть вопросы. По спецификации I2S имеет три линии, синхронизация, выбор канала, данные. Только в некоторых источниках есть ещё упоминание о сигнале синхронизации кадра. (например http://www.n-audio.com/articles/i2s.htm). Где-то была информация, что на это пин нужно подавать слок в сколько-то раз меньше чем синхронизация. В LPC я этого клока не вижу. Как правильно это делать? Цитата(карабас @ Jan 10 2011, 23:22)  Ну, это очинно сильно!!!
Топик- стартеру: читайте аппноты. Это тоже не слабо  Этим я и занимаюсь. Я прошу, для экономии времени, направить меня в правильном направлении, где те самые аппноты находятся.
|
|
|
|
|
Jan 12 2011, 16:59
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 8-12-09
Пользователь №: 54 123

|
форум забивать не хочу, если что-то не понятно по квадратной шине , прошу в почту jem<XXXXXXXX>udm.ru могу помочь разжевыванием даташита на i2s и примерами на lpc и atmel arm7. Саша.
|
|
|
|
|
Jan 14 2011, 19:07
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(sysel @ Jan 15 2011, 00:39)  Вот не вразумлю одну вещь:
У меня есть ЦАП AD1955 и процессор LPC1768.. На I2S шине ЦАП полнейший слейв. Хочу его затактировать от внешней PLL (вход MCLK).
При этом вопрос: как правильно формировать битовый клок (BCLK) чтоб не было рассинхронизации по отсчетам. Так и не понял, на какой вывод LPC1768 можно принять MCLK, так чтобы обеспечить BCLK = MCLK/4 и LR_CLOCK соответствующий. А зачем принимать MCLK на LPC откуда-то снаружи, когда можно генерировать его прямо внутри контроллера с помощью дробного делителя? Дальше настраиваете I2S под ваш ЦАП, ставите делитель для BCLK на 4 (tx_bitrate) и указываете правильный ws_halfperiod в зависимости от разрядности сэмплов. К примеру, для воспроизведения файла .wav в формате PCM стерео 44100 Гц 16 бит и если ЦАП требует для себя MCLK, равное частоте 256*Fs (11289600 Гц) и BCK равное MCLK/4 (I2STXBITRATE = 3), то ws_halfperiod получается равным 64/2-1 = 31. Вот хорошая иллюстрация I2S TX мастера у LPC1768:
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|