В этой статье кратко и без воды распишу как создать и загрузить программу в DSP аудиопроцессор adau**** на примере проекта самодельного УНЧ с аудиопроцессором ADAU1701.
Что потребуется:
- Сам dsp проц ADAU1701 или другой adau****. (У меня он на самодельной плате по схеме из даташита с флеш-памятью 24c64).
- Плата cy7c68013a. (Удобна тем, что прямо во время создания прошивки можно сразу видеть результат работы платы и регулировать уровни/значения "онлайн").
- Программа Sigma Studio (для простого создания прошивки из готовых блоков/модулей).
- Программа CyConsole (для эмуляции платы cy7c68013a (далее программатор) в качестве USBi программатора).
- Драйвер для платы cy7c68013a.
Все необходимые файлы:
Пошаговая инструкция:
1. Устанавливаем программу CyConsole.
2. Подключаем плату cy7c68013a к компу шнуром юсб. В диспетчере устройств должно обнаружится "Неизвестное устройство" - накатываем на него скачанный драйвер.
3. Устанавливаем Sigma Studio и запускаем.
4. Создаем новый проект. Должна быть открвта вкладка Hardware Configuration на странице Config. Слева есть блоки, перетаскиваем на рабочее окно блоки USBi, ADAU1701 и E2PROM и соединяем USBi с ADAU и USBi с E2PROM как на картинке ниже.
5. Подключаем плату аудиопроцессора к программатору. Используем одноименные пины GND, SCL, SDA и на программаторе и на плате адау. Т.е. GND к GND, SCL к SCL, SDA к SDA.
На плате программатора имеется пин VCC с напряжением 3.3v - с него можно запитать плату аудиопроцессора при прошивке и тестах.
6. После подключения щёлкаем кнопку reset на программаторе (слева снизу на фото) - она часто помогает от зависаний после подключения.
7. Запускаем CyConsole, и загружаем в неё скачанный файлик скрипта (либо его по пути C://Program Files/Analog Devices/SigmaStudio 4.7/USB drivers/x64). Нажимаем запуск (плей скрипт).
Если все сделали правильно - на плате программатора загорится второй светодиод, а в Sigma Studio блок USB interface сменит цвет с красного на зелёный.
8. Переходим на вкладку Schematic и рисуем свой проект из блоков слева.
Пример проекта
Прошивка для самодельного усилителя звука 2.1 (из прошлой статьи) с ADAU1701 на борту.
Подключил программатор к усю и к компу, кликнул reset на плате программатора, запустил скрипт в CyConsole. К усю подключил колонки, саб и подал звуковой сигнал.
В Sigma Studio создал простейший проект для тестов. В нём аудиосигнал со входа кроссовером разделяется на колонки и саб. На канал саба сигналы L и R суммируются.
Добавил для теста на выводы MP0-MP10 (MP11 в проекте незадействован) по программному тумблеру (подает логический 0 или 1 на вывод MP*) и вычислил какой вывод за что отвечает. На вкладке Hardware Configuration в пункте Register Control, (блок GPIO) временно выставил все MP* выводы на работу как выходы (GPIO Output).
Залил прошивку в адау кнопкой на фото ниже.
Перевел в сигма студио тумблеры в позицию ON на ST-BY обоих усилителей и они запустились - аудиосигнал пошел на колонки и саб. Выставил частоту разделения аудиосигнала 80Гц. После залития прошивки управлять и выставлять значения можно "вживую" до тех пор, пока не меняются блоки в прошивке или их подключение.
Уже после проверки "рисую" полноценную прошивку.
Опишу принцип работы прошивки для УНЧ в конце статьи.
Выставляю MP* (GPIO) выводы (вкладка Hardware Configuration, страница Register Control, блок GPIO) под свои задачи:
- С переменных резисторов - ADC
- С переключателя и на прием сигналов ошибок усилителей - Input
- На светодиоды, st-by и mute усей - Output
Загрузка прошивки
9. Конечный результат загружаю в адау (фото выше).
10. Во вкладке Hardware Configuration снизу страница Config, щелкаем по ADAU1701 правой кнопкой мыши, выбираем Write latest, чтобы записать загруженную в адау прошивку во флеш память.
11. В появившемся окне задаём размер флеш памяти. Для 24c64 это значение 65536. Жмём ок.
12. По завершении процесса записи отключаем адау от программатора. Отключаем питание адау. Подаем заново питание и адау должна сразу загрузиться с прошивкой из флеш памяти.
Завершение проекта УНЧ
Усилитель хорошо разместился на столе под монитором. Под рукой доступ ко всем органам управления. Качает колонки от муз центра и саб (сужающийся ЧВ на овале).
Принцип работы прошивки для УНЧ
Слева сверху блок [Input1] - линейный вход. На нём, соответственно, 2 канала - L и R. Оба канала поступают на программный регулятор усиления/ослабления сигнала [Single2].
Далее аудиосигнал поступает на общий регулятор громкости [SW vol master], который, снимая аналоговый сигнал (напряжение) с пина ADC0 (он-же MP*, который подключен к центральному выводу переменного резистора "VOLUME" (а крайние выводы - к GND и к 3.3в)) регулирует громкость.
После регулятора громкости стоят 2 разветвителя сигнала [T5 и T6] на каждый из каналов (L и R).
С разветвителей аудиосигнал попадает в графический эквалайзер [Param EQ2]. Параллельно аудиосигнал попадает на переключатель входов [X fade2]. В зависимости от положения физического переключателя "HPF" на усилителе [HPF1/HPF2] сигнал проходит либо через эквалайзер, либо мимо него.
Далее сигнал поступает на разветвители [Т1 и Т2] и попадает на 2ух полосный кроссовер [Crossover1]. Аудиосигнал в нём делится на НЧ и СЧ-ВЧ (колонки и саб). С разветвителей параллельно кроссоверу сигнал поступает на переключатель входов [Xfade1], который также управляется переключателем "HPF" на усилителе [HPF1/HPF2]. В зависимости от его положения аудиосигнал именно на колонки идет либо через кроссовер (срезается НЧ диапазон), либо идёт мимо него и на колонки летит вся полоса частот [выходы L и R]. При этом TPA3118 (сабвуферный канал) отключается и усилитель звука превращается из формата 2.1 в 2.0.
С кроссовера НЧ сигналы суммируются [Mg1], превращаясь в один сигнал, который поступает на регулятор громкости [SW vol sub], работающий по принципу регулятора общей громкости, подключен к переменному резистору "BASS". После него аудиосигнал поступает выход для канала сабвуфера [SUB].
Светодиод питания на усилителе светит зеленым цветом когда усилитель работает в режиме 2.1, а эквалайзер отключен. В режимах 2.0 и 2.1 с включенным эквалайзером индикатор питания светит рыжим цветом (зелёный+красный) [LED_power].
Также задействуются пару выводов MP* для приема сигналов ошибки и клипинга с усилителей звука [FALL_tda7377 и tpa3118]. Программно эти сигналы суммируются [Add1], далее сигнал подается на блок задержки значения [PeakEnv1] и затем подается на вывод MP*, который управляет красным светодиодом клипинга и ошибок (CLIP).
Хотел задействовать ручку LPF на усилителе для регулировки частоты среза кроссовера, но пока не придумал как это сделать. Если кто сталкивался, подскажите как осуществить?
С DSP и Sigma Studio сам познакомился не так давно и такая статья лично мне сильно бы помогла в то время, когда сам первый раз узнал про аудиопроцессоры ADAU. Это всего лишь второй проект с использованием DSP. Если разобраться, то открываются возможности делать интересные многофункциональные проекты. В сигма студио очень много модулей обработки звука и логики. В проекте задействована малая их часть.