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

 
 
> STM32F407 и его I2S, STM32F407 + WM8731
Quasar
сообщение Dec 19 2016, 05:13
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Есть STM32F407, есть WM8731 со своим кварцем (то есть мастерклок приходит не от процессора). Хочу наладить обмен по I2S в режиме 8000 Гц 16 бит, но получается какая-то ерунда.

Если сделать процессор мастером, то звук ходит в обе стороны, но периодически появляются артефакты, так как у каждого своя синхра.
Если сделать кодек мастером, то работать вообще перестает, точнее прерывания от DMA начинают приходить в 12 раз чаще. Данный кодек, генерит BCLK равный 64x(base frequency, в данном случае 64x48000), то есть 3.072 МГц при любой частоте выдачи семплов. То есть, при переключении частоты семплирования, у него меняется только частота на L/RCK линии, и STM такое не переваривает, так как ждет 8000 * 16 * 2 = 256000 Гц;

Получается L/RCK у меня переключается как надо, с частотой 8000 Гц, а BCLK - 3.072 МГц (замерил осциллом).

Собственно у меня вопрос, для slave I2S'а в STM'е, приходящий битклок должен быть строго Fs x nof_bits x nof_channels или нет?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Dec 19 2016, 15:19
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Мастер у меня со стороны - FPGA формирует BCLK 256 кГц и WS 8 кГц. Но процессор об этом не знает. Вы комметарии посмотрели бы..

Сообщение отредактировал Genadi Zawidowski - Dec 19 2016, 15:19
Go to the top of the page
 
+Quote Post
Quasar
сообщение Dec 19 2016, 15:47
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(Genadi Zawidowski @ Dec 19 2016, 18:19) *
Мастер у меня со стороны - FPGA формирует BCLK 256 кГц и WS 8 кГц. Но процессор об этом не знает. Вы комметарии посмотрели бы..



Вы про это?

Код
    // BCLK = 0.256 MHz (stereo, 16 bit/ch)
    tlv320aic23_setreg(TLV320AIC23_SRATE,            // Sample Rate Control
        3 * (1U << TLV320AIC23_SR_SHIFT) |    // BOSR = 0, SR[3:0] bits = 3: 12.288 / 256 / 6 = 8 kHz DAC and ADC sampling rate
        0 * (1U << TLV320AIC23_BOSR_SHIFT) |
        0    
        );


В даташите на tlv320aic23 написано:

Цитата
In normal mode, BCLK = MCLK/4 for all sample rates except for 88.2 kHz and 96 kHz. For 88.2 kHz and 96 kHz sample rate,
BCLK = MCLK.


Тоже самое и для WM8731. А STM32 в режиме слейва плохеет от такого. У вас ПЛИС генерит BCLK = 0.256 MHz и формирует она это из клока, который используется и в кодеке. А сам кодек в режиме мастера генерит хрень, равную MCLK/4.

Или вы про какие-то другие комменты?


Go to the top of the page
 
+Quote Post



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

 


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


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