реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите с I2S на LPC2478
Oleg_IT
сообщение Jan 7 2011, 13:21
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 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. Самое главное. Есть документ, где обо всем этом подробно и толково изложено. И вообще обо всех интерфейсах.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 7 2011, 14:18
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



7. Самое главное - сей документ называется UM10237. User Manual LPC2478.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jan 7 2011, 15:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Этот замечательный документ у меня есть. А есть что-то по подробнее про программирование интерфейсов для LPC?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 8 2011, 06:42
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



В этом документе большими буквами написаны ответы на ВСЕ ваши вопросы. Причем, абсолютно на все.

Программирование интерфесов для LPC в частности, ничем не отличается от программирования интерфейсов вообще.
Они все одинаковые, за исключением мелких деталей реализации. Ибо эти интерфейсы подключаются к другим микросхемам, которые подключаются не только к LPC.

Но, к сожалению, даташиты от NXP устроены так, что их нужно читать от начала до конца, как детектив. Иначе не поймешь кто убийца.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jan 8 2011, 17:32
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(DpInRock @ Jan 8 2011, 12:42) *
Но, к сожалению, даташиты от NXP устроены так, что их нужно читать от начала до конца, как детектив. Иначе не поймешь кто убийца.

Да, я это начинаю понимать, информация распределена тонким слоем по всему документу. Как было просто с AVR. Но может есть специализированные документы, где конкретно программирование каждого интерфейса расписано, не хочется много время на стандартные вещи тратить. Есть же примеры в RL-ARM, но почему то не для всех интерфейсов.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 8 2011, 17:36
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Sample Code Bundle for LPC23xx/LPC24xx Peripherals using Keil's μVision V1.60 (Mar 10, 2009)
Здесь смотрели?
Хотя да, именно оттуда и взят приведённый Вами пример. Но если Вас интересуют именно ВСЕ интерфейсы, то это оно (всего понемногу) rolleyes.gif
Go to the top of the page
 
+Quote Post
карабас
сообщение Jan 10 2011, 17:22
Сообщение #7


Участник
*

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



Цитата(Oleg_IT @ Jan 7 2011, 19:21) *
А куда подключать SCK?


Ну, это очинно сильно!!!

А если по хорошему, то:
i2s у LPC весьма не плох и очень прост в использовании, это ж Филлипс.
в DMA режиме сложно сделать поддержку некоторых режимов, например 20 или 24 бита на канал, но фифо сильно выручает.
Топик- стартеру: читайте аппноты.

Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jan 11 2011, 04:39
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 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) *
Ну, это очинно сильно!!!

Топик- стартеру: читайте аппноты.

Это тоже не слабоsm.gif Этим я и занимаюсь. Я прошу, для экономии времени, направить меня в правильном направлении, где те самые аппноты находятся.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 11 2011, 05:25
Сообщение #9


Любитель
*****

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



Тоже сейчас запускаю I2S (LPC1768 с TLV370DAC23).
Как понял, ЦАПЫ могут хотеть до четырёх сигналов (в режиме слэйва):
1. MCLK (Master Clock) - тактирование самого ЦАПА, частота, к примеру, 256*Fs.
2. BCLK (Bit Clock) - тактовая битового потока данных, к примеру, MCLK/4.
3. WS (Word Select) - выбор слова (сэмпла), к примеру, правый/левый каналы.
4. DATA - непосредственно битовый поток.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jan 11 2011, 05:34
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Вот тут я выкладывал код для lpc1768 и tlv320. Думаю, модуль i2s не сильно отличается. Правда позже народ нашел в нем баг. Но для начала сойдет.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
карабас
сообщение Jan 12 2011, 16:59
Сообщение #11


Участник
*

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



форум забивать не хочу, если что-то не понятно по квадратной шине , прошу в почту jem<XXXXXXXX>udm.ru
могу помочь разжевыванием даташита на i2s и примерами на lpc и atmel arm7.
Саша.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 14 2011, 17:57
Сообщение #12


Любитель
*****

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



Как считаете, уважаемые, каким размером установить Burst Size для загрузки FIFO I2S модуля LPC1768 с помощью DMA?
При размере FIFO в 8 слов (каждое по 32 бита, 32 байта всего), думаю, или 4 слова, или 8 будет ОК?
Go to the top of the page
 
+Quote Post
sysel
сообщение Jan 14 2011, 18:39
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Вот не вразумлю одну вещь:

У меня есть ЦАП AD1955 и процессор LPC1768.. На I2S шине ЦАП полнейший слейв.
Хочу его затактировать от внешней PLL (вход MCLK).

При этом вопрос: как правильно формировать битовый клок (BCLK) чтоб не было рассинхронизации по отсчетам.
Так и не понял, на какой вывод LPC1768 можно принять MCLK, так чтобы обеспечить BCLK = MCLK/4 и LR_CLOCK соответствующий.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 14 2011, 19:07
Сообщение #14


Любитель
*****

Группа: Свой
Сообщений: 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:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
sysel
сообщение Jan 14 2011, 19:19
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(sonycman @ Jan 15 2011, 01:07) *
А зачем принимать MCLK на LPC откуда-то снаружи, когда можно генерировать его прямо внутри контроллера с помощью дробного делителя?


Снаружи хочу. У меня будут использоваться не стандартные частоты. К тому же для обеспечения малого THD клок должен быть с очень малым джиттером.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016