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

 
 
> 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
Ответов
KnightIgor
сообщение Dec 20 2016, 09:25
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Quasar @ Dec 19 2016, 07:13) *
Есть STM32F407, есть WM8731 со своим кварцем (то есть мастерклок приходит не от процессора).

Так может затактировать WM8731 от процессора, "забив" на наличие кварца у DAC'а?
Go to the top of the page
 
+Quote Post
Quasar
сообщение Dec 21 2016, 07:27
Сообщение #3


Местный
***

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



Цитата(KnightIgor @ Dec 20 2016, 12:25) *
Так может затактировать WM8731 от процессора, "забив" на наличие кварца у DAC'а?



Для этого, надо заводить мастер клок на WM от процессора (то есть плату переделывать). I2SPLL в STM32 умеет генерить его и выводить на ножку, но он строго Fs x 256. Для WM в режиме 8 кГц, это скорее всего окажется маловато. Только если вести работу в режиме 48 кГц. Тогда получается мастерклок нормальный - 12.288. Но в 48 кГц и в STM32 слейве нормально работается.

Вообще, у WM8731 есть режим DSP-mode, он очень похож на TI_MODE в STM32. Ножки даже те же используются, но информационные ноги меняют направление для режима TI_MODE slave в STM32, то есть опять плату переразводить.

Я в принципе нашел решение, в жертву пришлось принести ОЗУ (в три раза больше нужно) и в два раза чаще при таком решении вызывается DMA обработчик. Но связка работает в режим 8 кГц, WM master - STM32 slave.
Go to the top of the page
 
+Quote Post



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

 


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


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