Нашёл проект который меня заинтересовал - "Темброблок - анализатор спектра на STM32F103".
Начал собирать музыкальный центр на основе проекта "Темброблок - анализатор спектра на STM32F103"
Править нужно только Makefile. А ampcontrol-f103.config - это вспомогательный файл для проекта в QtCreator, обеспечивающий правильный парсинг кода (правильное затемнение условных конструкций препроцессора #if / #else / #endif и т.п.). Его править имеет смысл только если собираешься писать код.
В принципе, и Makefile можно не трогать. А собирать (в консоли) наподобие:
make clean
make DISPLAY=RM68140 DISPVAR=8BIT
Так, например, работает скрипт массовой сборки прошивок build.sh. Кому интересно, может и в него заглянуть.
Для начала нужно скачать и установить с сайта STMicroelectronics софт Flash Loader Demonstartor. Подключаем USB ttl конвертер к UART1 (J3 на схеме).
Зажимаем кнопку BTN_2 и подаем питание, загрузится bootloader. В программе на первом экране выбираем нужный СОМ порт, больше ничего менять не нужно, программа должна увидеть подключенный проц и пустить дальше, а там уже выбрать размер памяти 128кБ, указываем путь к файлу прошивки, и в принципе, все. Пойдет загрузка, после чего нужно перезапустить проц без нажатой BTN_2, на дисплее должны появиться часы.
Если STLink - то да, шьётся по SWD. Кнопку reset нажимать не надо, но в первый раз (кто знает, что там в МК было) лучше нажать.
Прошивка STM32 с помощью ST-Link программатора
UART1 — занят под BT201
UART2 — занят под KaRadio
SWDIO/SWCLK используются для прошивки
Спаял темброблок на TDA7719 на одной плате с Lumazoid (цветомузыка) — звук взял с разъёма SP который идет на анализатор спектра.
TDA7719 - входы идут в порядке 0-4-1-2-5-6 — конфигурация CFG2 по даташиту. В конфигурации CFG2 на 6 входов, недоступен "вход" IN3.
На схеме с TDA7719 есть три резистора R1, R2, R3 но номиналы их не указаны.
R2 и R3 не нужны (они уже есть на самом ampcontrol), R1 - либо перемычка, 0 Ом, при подключении на IN2 обычного источника сигнала, либо не ставить (∞ Ом), если не подключается псевдо-дифференциальный источник сигнала.
Пока — только управление воспроизведением (play/next/prev).
Принудительное переключение источника на модуле ВТ201 (ВТ-->TF-->USB) — отдельная кнопка пульта, с передней панели — длинное нажатие кнопки 2.
Подключается к системе по UART1
Восстановить заводские настройки
AT+CW Восстановить заводские настройки, очистить все ранее запомненные параметры
AT + CW \ r \ n Чип восстанавливает заводские параметры по умолчанию
Отключит входящие звонки
AT+B2 call settings Ditto
Отключает все звуки ( включения, коннекта, перехода в режим проигрывателя)
AT+CN01\r\n Turn on -- The chip will automatically play the prompt sound
AT+CN00\r\n Turn off -- the chip will turn off the prompt sound at this time -- power off and save
Отключить переключение на разговор при игре флэшки при входящем
AT+CK00\r\n Turn off -
AT+CK01\r\n Turn on - если играет флешка и идет входящий то автоматом переключается на разговор.
Выключить блютуз из фона
AT+CG00\r\n Close-Bluetooth does not run in the background
AT+CG01\r\n Open-Bluetooth Background
Установите имя и пароль Bluetooth [BD] [BE] [BM]
AT + BDAUDIO \ r \ n Установите имя Bluetooth на «AUDIO»
Отключить BLE
AT+B400\r\n Here is the function to turn off BLE.The default is 0x01
Подключение:
Menu AUDIO: вход 0 - Bluetooth, вход 1 - ФМ тюнер, вход 3 - KaRadio
TDA7719: вход 0 - Bluetooth, вход 2 - KaRadio, вход 1 - ФМ тюнер
PCF8574 и PCF8574A - Расширитель портов 8 бит I2C DataSheet
P.S. Адреса могут быть только чётными — потому что нечётность означает чтение.
0x27, соответствует адресу 0x4E в даташите PCF8574 и в настройках.
Используем пины: P0 - Bluetooth, P1 - ФМ тюнер, P3 - KaRadio
Линии MUTE/STBY — выходы непосредственно МК. В ждущем режиме на них обеих уровень 0В.
При включении устройства сначала логический уровень единицы (3.3В) появляется на выходе STBY,
которым через, например, реле можно подать питание на УНЧ. Через некоторое время логическая единица
появляется на выходе MUTE, одновременно аудиопроцессор начинает выдавать звук на УНЧ.
При отключении (выходе в ждущий режим) MUTE и STBY выключаются в обратной последовательности,
что может помочь избавиться от щелчков в динамиках. Очень часто интегральные усилители
сразу имеют подобные входы MUTE/STBY, и можно подключаться и к ним. Только надо иметь,
что 3.3В активного уровня может быть недостаточно для УНЧ и, возможно,
нужно ставить дополнительную схему согласования уровней.
Так, например, у популярной TDA7293/TDA7294 для включения на её входах MUTE/STBY должно быть не менее 3.5В.
Как выставить часы:
При включённом AMP зажать кнопку INPUT и удержать её около 3 сек - отпустить и тут же зажать и подержать пару сек
Задействовать режим работы 2.1
Есть возможность в меню понизить функциональность в порядке 5.1 => 4.1 => 4.0 => 2.1 => 2.0, что убирает ненужные в данный момент регулировки из меню.
Дополнительно, для TDA7719:
1) если выбрать 2.1 или 4.1 режимы, то на выходы сабвуфера включаются встроенное микширование L+R плюс НЧ-фильтр
2) если выбрать 4.0 режим, то на выходах сабвуфера будет не зависящий от уровня громкости аудиосигнал.
3) если выбрать 2.0 или 2.1 режимы, то на тыловых выходах не зависящий от уровня громкости аудиосигнал.
Во 2 или 3 случае эти "лишние" выходы удобно подключать к собственно анализатору спектра, т.к. TDA7719 не имеет промежуточных выходов с селектора входов, как другие аудиопроцессоры.
IR-Пульт
При настройке пульта очистить распознанный код кнопки если она мне не нужна - на даный момент нет возможности.
Можно назначить тот же код, что у кнопки STBY. Это самая первая функция в списке на обучение, поэтому код отработает только для неё.
Для часов используется:
Резонатор кварцевый часовой 32.768 кГц KX-38T 6pF
Инверсия дисплея ST7735
Там вся фишка в том, что этот дисплей поддерживает инверсию двух типов - программную (через регистры) плюс аппаратную (специальная ножка). Видимо, в том дисплее, под который драйвер делался, аппаратно была выставлена, поэтому пришлось компенсировать. А в тех, что на Ali продаются - вывод более правильно подключен.
Подключение:
BCKL - LED, SCK - SCK, WR - SDA, RS - A0, RST - RESET, CS - CS, GND - GND, 3.3V - VCC
В этих модулях (аналогично, возможно, и в других) есть возможность управления плеером на телефоне через кнопки. Кнопки в этих модулях подключатся к питанию.
Таким образом, идея управления следующая. PCF8574 держит на своих выводах (эмулирующих кнопки) уровень 0. Когда на передней панели (или пульте) ampcontrol нажимается медиакнопка (Play/Prev/Next), соответствующий выход PCF8574 на 200мс становится лог. 1, эмулируя нажатие кнопки. Затем снова опускается.
На CSR8645 работает нормально, на BK8000L не проверял, но тоже не вижу причин, почему бы нет. Выводы PCF8574 и BT-модуля соединял через резисторы 10кОм. Но это, вероятно, не критично.
Разводка следующая (можно подсмотреть в bt.h исходников).
У PCF8574 есть выходы P7..P0. Они играют роль кнопок для BT модуля. Ну а к проекту подключаются по I²C.
Код:
Bluetooth PCF8574
VOL_MINUS P7
VOL_PLUS P6
NEXT_TRACK P5 - реализовано
PREV_TRACK P4 - реализовано
NEXT INPUT P3 - реализовано
PLAY_PAUSE P2 - реализовано
LED1 P1
LED0 P0
Адрес PCF8574 для контроля BT-модулей задаётся также в настройках, аналогично статусу входов.