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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> I2S, кодек, помогите разобраться с интерфейсом
aaarrr
сообщение Feb 18 2010, 20:42
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Daria @ Feb 18 2010, 23:21) *
Подскажите, можно ли использовать вместо I2S SPI? Может, кто-нибудь кинет ссылку, где про этот протокол почитать? unsure.gif

Для работы с I2S нужно было задействовать SSC. Почитайте вот этот документ, все должно стать понятно.
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 20 2010, 14:29
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(aaarrr @ Feb 18 2010, 23:42) *
Для работы с I2S нужно было задействовать SSC. Почитайте вот этот документ, все должно стать понятно.

А писать-читать только в один канал нельзя? если на выход потом подается дифферинциальный моносигнал.
К сожалению, SSC уже занят у меня...sad.gif

Сообщение отредактировал Daria - Feb 20 2010, 14:58
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 20 2010, 18:19
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Daria @ Feb 20 2010, 17:29) *
А писать-читать только в один канал нельзя? если на выход потом подается дифферинциальный моносигнал.

Можно попробовать извратиться с использованием одного левого канала, только вот LRCK в I2S уходит вниз на один клок раньше начала передачи. А какой кодек используется?
Go to the top of the page
 
+Quote Post
rsv
сообщение Feb 20 2010, 19:08
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 16-07-07
Из: Тула
Пользователь №: 29 160



Цитата
на можно ли использовать вместо I2S SPI
я когда-то так и делал на lpc2294. а в прерывании шевелил нужной ногой. только наименование кодека не помню, с ними аккуратнее надо, а то там есть два стандарта: нормальный и японский ( smile.gif ну так он в доке на один проц звался - "japanese"). Вроде японский и есть
Цитата
только вот LRCK в I2S уходит вниз на один клок раньше начала передачи
, как в предыдущем посте написано. В общем, совет: внимательно посмотрите на времянки из даташита
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 21 2010, 14:37
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Кодек PCM3794
Там вроде есть четыре режима: I2S, Лево-выровненный, право-выровненный(вроде так) и DSP. DSP однозначно не подходит, там LRCK длительностью в один бит только. А вот эти лево-... вроде бы по даташиту соотвествуют SPI, там данные начинают передаваться одновременно с появлением высокого уровня на LRCK. Инвертирую этот вывод с помощью внешней логики и вроде должен был получиться SPI, как и у меня в проце. Только если игнорировать второй канал. Но на выходе синусоида какая-то рваная. и частота подаваемого сигнала явно не соотвествует частоте выходного.
Пытаюсь сделать "петлю" - кодек принемает от внешнего источника синусоиду, передает процу с DOUT, а проц отсылает ему обратно на DIN, в итоге на выходах наушников HPOL/HPOR должна получиться такая же синусоида. но проблема, как сделать такую петлю по SPI в режиме slave
А вообще кодек дельта-сигма - это что такое?smile.gif Может это японский как раз и есть?smile.gif
Вообще какие бывают стандарты?

Сообщение отредактировал Daria - Feb 21 2010, 14:40
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 21 2010, 23:06
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Daria @ Feb 21 2010, 17:37) *
...Но на выходе синусоида какая-то рваная. и частота подаваемого сигнала явно не соотвествует частоте выходного.
Пытаюсь сделать "петлю"...

Не надо делать петлю. Попробуйте для начала выдавать просто биты на нужных позициях (0x8000, 0x0001 и т.п.), и проконтролируйте правильность выдаваемых данных осциллографом.
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 23 2010, 18:28
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



А что такое дельта-сигма модуляция? rolleyes.gif
В кодеке ЦАП и АЦП - дельта-сигма фильтры
Go to the top of the page
 
+Quote Post
Designer56
сообщение Feb 23 2010, 18:37
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 932
Регистрация: 13-10-06
Из: Уфа
Пользователь №: 21 290



Такой способ размена разрешения (разрядности) на время (скорость). Иллюстрация к принципу неопределенности.


--------------------
"...Дьяволу ведомо многое не потому, что он- Дьявол, а потому, что он стар..."
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 26 2010, 19:43
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(aaarrr @ Feb 18 2010, 23:42) *
Для работы с I2S нужно было задействовать SSC. Почитайте вот этот документ, все должно стать понятно.

аааrrr, большое спасибо! После долгих мучений с SPI все-таки переделала на SSC, как здесь сказано, и все получилось! 08.gif
Только вопрос - почему, если надо читать два канала, используют второй млдуль SSC(у меня второго нетsmile.gif)?
RF и RK берут с TF и TK - почему нельзя так же завести их в одном модуле? и читать не по положительному фронту фрейма, а по перепаду?
Пробовала, получилась фигня. Но не понятно почемуsad.gif
но все равно, главное работает 08.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 26 2010, 22:53
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Daria @ Feb 26 2010, 22:43) *
Только вопрос - почему, если надо читать два канала, используют второй млдуль SSC(у меня второго нетsmile.gif)?
RF и RK берут с TF и TK - почему нельзя так же завести их в одном модуле? и читать не по положительному фронту фрейма, а по перепаду?
Пробовала, получилась фигня. Но не понятно почемуsad.gif

Вообще, ноги у этого ограничения растут из ерраты на RM9200 (а пример написан именно для него):
Цитата
The SSC receiver does not support reception of the last data sequence of a frame that overlaps
a new start of frame, regardless of the mode of detection of the start condition. For
example, this prevents reception of the last data of a TDM bus.

На SAM'ах этой ошибки нет, так что должен работать прием для двух каналов.
Go to the top of the page
 
+Quote Post
Daria
сообщение Mar 14 2010, 11:49
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Здравствуйте.
Такая проблема - работают два модуля, SSC с кодеком и SPI0 с внешним устройством.
Обмен данными должен идти асинхронно, на разной частоте. но непрерывно.
обмениваюсь через pdc. Прерывания PDC по каналам SPI имеют более высокий приоритет, и мешают обмену с кодеком по SSC unsure.gif
Можно ли как-то перенастроить приоретет прерываний, или запрещать прерывания по каналам SPI во время прерывания от SSC? кто что посоветует?smile.gif
Еще вопрос - приходит прерывание по ENDTX, когда счетчик TCR достигает ноля. хочу прямо в прерывании, не останавливая pdc, переписать TPR и TCR. TPR переписывается, а TCR почему-то нет unsure.gif Приходится сначала записать TXDIS в PTCR, потом переписать, а потом TXEND. но мне нежелательно останавливать обмен. и непонятно, почему нельзя записать новое значение TCR, не останавливая.
вот такие дилетантские вопросы - может, кто поможет? rolleyes.gif
очень жду! laughing.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2010, 17:51
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Daria @ Mar 14 2010, 14:49) *
Можно ли как-то перенастроить приоретет прерываний, или запрещать прерывания по каналам SPI во время прерывания от SSC? кто что посоветует?smile.gif

Можно, конечно. Но лучше увеличить размер буферов и использовать двойную буферизацию - без нее PDC для непрерывных потоков мало приспособлен. В этом случае приоритет прерываний может быть вообще не важен.
Go to the top of the page
 
+Quote Post
Daria
сообщение Mar 14 2010, 19:38
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(aaarrr @ Mar 14 2010, 20:51) *
Можно, конечно. Но лучше увеличить размер буферов и использовать двойную буферизацию - без нее PDC для непрерывных потоков мало приспособлен. В этом случае приоритет прерываний может быть вообще не важен.

То есть писать адрес нового буфера данных и размер все время в TNPR и TNCR?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 14 2010, 19:47
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, именно так.
Go to the top of the page
 
+Quote Post
Daria
сообщение Mar 31 2010, 18:13
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Может, не по теме, но продолжение задачиsmile.gif
Кто-нибудь может скинуть алгоритм работы фильтра с конечной импульсной характеристикой?
Короче просто свертку(быстрое преобразование Фурье)smile.gif Надо быстро сделать, а зачем изобретать велосипед? rolleyes.gif
Буду очень благодарна!

Сообщение отредактировал Daria - Mar 31 2010, 18:34
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 09:19
Рейтинг@Mail.ru


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