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

 
 
 
Reply to this topicStart new topic
> stm32f4discovery проблема настройки cs43l22, нужен режим Analog Passthrough
billidean
сообщение Feb 20 2015, 04:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Добрый день всем.
Имеется у меня плата stm32f4-Discovery. Делаю всякие мелкие проекты по реализации имеющихся в проце возможностей (SPI, USART, USB-CDC, USB-HID, LCD, EXT). Использую ОС ChibiOS и среду ChibiStudio.
Сейчас пытаюсь реализовать вывод звука на разъем для наушников.
Проект веду следующим путем: данные для воспроизведения гоню с помощью ДМА на встроенный в проце ЦАП, далее с ноги РА4 аналоговый сигнал должен проходить через звуковой драйвер-микросхему CS43L22, и уже с выхода этой микросхемы на наушники.
В-общем, на данный момент я на ноге РА4 имею звуковой поток. По схеме вывод РА4 с проца подключен к входам AIN1A,AIN1B микросхемы CS43L22. Но на выходе этой микросхемы ничего нет.
Для реализации моей задумки микросхему CS43L22 по интерфейсу I2C нужно перевести в режим Analog Passthrough, при котором аналоговые данные со входа идут на выход, т.е. транслируется. Но при этом можно управлять громкостью (уровнем) выводимого звука.
Сколько ни пытался инициализировать эту микросхему на нужный мне режим работы, никак не получается, на выходе вообще ничего нет.
В инете натыкался на процедуры инициализации для режима воспроизведения цифрового потока, подаваемого по I2S. Но мне этот режим не нужен.

Кто-нибудь может что-нибудь подсказать по данному вопросу, даже без привязки к ОС, просто алгоритм (рабочий) инициализации этой микросхемы CS43L22?

Заранее благодарю за ответы.
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 20 2015, 07:52
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(billidean @ Feb 20 2015, 07:39) *
В инете натыкался на процедуры инициализации для режима воспроизведения цифрового потока, подаваемого по I2S. Но мне этот режим не нужен.

Насколько я понял для работы кодек использует частоту, подаваемую на MCLK.
Поэтому без I2S удет сложно. Как вариант, попробуйте подать на MCLK (PC7) меандр, частотой 12.8МГц.
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 20 2015, 10:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Получилось запустить работу этой микросхемы, была проблема с выдачей частоты на РС7.
Но частота эта довольно маленькая получается - 350кГц. Выше поднять не получается, проект не апускается.
Делаю так: таймер использую третий, настроил на частоту 42МГц, настроил выход на Toggle, АRR делаю 60, вывод настроил как высокоскоростной. В таком исполнении работает.
Как только делаю ARR 50 и меньше, проект вываливается на первом же прерывании от таймера.

Не знаю пока, как победить. В доке о таком ограничении, да и вообще об ограничении на таймеры, ничего не нашел.

Но если бы поднять частоту, то звук получше бы стал.

Подскажите кто-нибудь как выдать на ногу бОльшую частоту.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 20 2015, 11:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



зачем вам вообще прерывание?
на Pc7 нет выхода ШИМ?
скважность 50% и всех делов
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 20 2015, 15:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Да.нет. я прерывание не использую. Я настроил таймер чтобы он сразу на ногу выводил свой сигнал. Задействовал режим Toggle в регистре управления таймером.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 20 2015, 17:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



тогда не очень понятно что имеется ввиду
Цитата
Как только делаю ARR 50 и меньше, проект вываливается на первом же прерывании от таймера.


по идее с таймером 42 МГц вы можете иметь частоту под 21 МГц.
сброс по достижению 1 регистра
значение регистра в 1
и вперед, как это может не работать?
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 21 2015, 05:08
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Да в том-то и дело, что из документации ясно, что это должно работать, как Вы и говорите - счет до 1 и сброс, т.е. делитель частоты на два.
Но почему-то не работает.
Может проблема связана с Осью. ChibiOS имеет в себе драйвера для периферии (hal), и проект я делал используя их. Я ChibiOS недавно использую, может и я где-то что-то не увидел. А может лучше все на регистрах сделать.
Go to the top of the page
 
+Quote Post
billidean
сообщение Feb 27 2015, 05:27
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



В-общем, используя настройку таймера через регистры, добился генерации тактовой на MCLK высокой частоты.
Звуковой драйвер работает, транслирует сигнал с ЦАПа на выход наушников.

Теперь проблема другого плана.
Я в проекте еще не дошел до работы с SD-картой. Поэтому для вывода звука нашел в инете некий массив (около 360 слов), в котором расположены отсчеты звука, некая мелодия. Настроив таймер управления ДМА, выдающего эти отсчеты в ЦАП, на определенную частоту, слышу эти самые отсчеты. И складывается ощущение, что чего-то не хватает, звук какой-то недоделанный. Меняя частоту работы ДМА изменяется только тональность всей мелодии в целом.
Нашел еще несколько массивов звуков. Эффект или такой же, или еще хуже.

По задаче мне нужно сделать вывод какой-нибудь музыки или речи (в конце-концов это будет определенная фраза), но чтобы звучание было более-менее правдоподобным. При этом мне не нужно воспроизведение mp3-файлов, это должен быть некий зашитый/статичный массив отсчетов.
Может проблема в том, что при моей реализации нужен массив в определенном формате.

Можете посоветовать, в каком направлении покопать.

З.Ы.: с обработкой звуковых файлов пока дело не имел и с кодеками не знаком, поэтому решил пойти таким вот путем вывода звука через встроенный ЦАП без всякой обработки.
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 27 2015, 06:21
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(billidean @ Feb 27 2015, 08:27) *
Можете посоветовать, в каком направлении покопать.

В каком формате массив данных? Битность? Знаковость?
Go to the top of the page
 
+Quote Post
Dmitry2017
сообщение Sep 25 2017, 06:05
Сообщение #10





Группа: Новичок
Сообщений: 2
Регистрация: 24-09-17
Пользователь №: 99 452



Цитата(billidean @ Feb 27 2015, 08:27) *
В-общем, используя настройку таймера через регистры, добился генерации тактовой на MCLK высокой частоты.
Звуковой драйвер работает, транслирует сигнал с ЦАПа на выход наушников.


Расскажите как Вам удалось настроить кодек с управлением MCLK по таймеру?
Вы режимы I2S изменяли? Режим мастера остается? С разрешенным MCLK_Output?

Какая у вас частота проца, какая на шине с таймерами? Какой прескаллер и период на таймере? Какое значение в pulse для шим?

У меня нет осциллографа - все делаю вслепую. Вот и спрашиваю всех подряд.

Настроил шим на таймере3 на ноге pc7 (channel2) , все что получаю - это писк на выходе кодека через минуту-две после включения таймера.

Сообщение отредактировал Dmitry2017 - Sep 25 2017, 06:05
Go to the top of the page
 
+Quote Post

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

 


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


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