RSS блога
Подписка
Добавляем поддержку aptX в старый музыкальный центр Sony
- Цена: $5.64
- Перейти в магазин
Этот обзор посвящён Bluetooth-модулю BTM625B на микросхеме CSRA64215 и одному из возможных способов его применения, а именно доработке старенького музыкального центра Sony с целью внедрения в него поддержки aptX Bluetooth. ЛУТ, пайка и изменение настроек модуля самодельным программатором на основе FTDI FT232RL в комплекте. Будет много фото и скриншотов!
В комментариях к моему обзору о переделке музыкального центра Sony HCD-551 были выдвинуты предложения по замене применяемого мной адаптера Bluetooth на более современный, использующий протокол aptX, и даны ссылки на несколько моделей. В принципе, меня решение из моего прошлого обзора устраивало почти полностью (за исключением небольшого фонового шума во время тишины между треками или при паузе воспроизведения), но любопытство и желание попробовать что-то новое и прогрессивное пересилило, и я начал изучать устройства по приведённым ссылкам. Однако, в своём изначальном состоянии ни одно из них не подходило мне без переделки, поскольку, во-первых, мне хотелось на одной плате разместить ещё и эмулятор кассетной деки (напомню, в этом музыкальном центре приходится эмулировать сигнал с датчика оборотов шпинделя кассеты, поскольку иначе электроника центра считает, что воспроизведение кассеты закончилось и переключает электронный коммутатор входов звука в режим Mute), во-вторых для повышения устойчивости радиосвязи мне необходимо вывести Bluetooth-антенну за металлический корпус центра, в-третьих мне нужно управлять включением модуля, разрешая его работу лишь тогда, когда в этом имеется необходимость, а в остальное время модуль должен быть отключен, в-четвёртых, по цене готовое решение получалось несколько дороже. Но телефон мой этот стандарт вроде как поддерживает. Я начал искать альтернативный путь решения этой задачи.
И вот, оказалось, что на просторах AliExpress имеются “голые” модули адаптеров, содержащие на миниатюрной плате лишь саму микросхему, работающую с Bluetooth, а также минимально необходимую для её работы обвязку. Мало того, “фабричные”, уже готовые к использованию Bluetooth-ресиверы, собираются как раз именно на основе таких модулей. Я подумал, а почему бы и мне не сделать собственную плату на основе этого модуля, полностью адаптировав её подо все мои требования? Для своего проекта я выбрал модуль BTM625B на основе микросхемы CSRA64215, как наиболее современное решение.
Давайте посмотрим, что обещает на продавец на странице товара:
1. Поддержку стандарта Bluetooth 4.2
2. Малые габариты платы модуля: 15*18*2.0мм
3. Диапазон напряжений питания: 2.8-4.2 В
4. Частотный диапазон: 2402~2480 МГц
5. Кодеки: aptX,aptX Low Latency, SBC и AAC
6. TrueWireless Stereo (TWS)
и ещё много всего!
Это всё, конечно, хорошо, но поскольку этот модуль содержит дифференциальный вывод звука, а в той цепи музыкального центра, куда я буду подавать звук с Bluetooth-модуля используется небалансный вход, то нужно как-то преобразовать аудиосигнал. Для этих целей послужит ещё один модуль, который мне также нужно приобрести, на этот раз это будет усилитель на основе микросхемы SGM4812.
В теории всё просто и хорошо, но если бы я тогда знал, с какими проблемами мне предстоит столкнуться… Но об этом чуть позже!
Сказано-сделано! Я приобрёл на AliExpress необходимые модули, а пока они шли почтой, я развёл и изготовил первую ревизию платы моего будущего устройства. На этот раз было решено использовать SMD-компоненты. По сути, схема простейшая, но для большего понимания я всё же частично зарисовал её:
В качестве генератора импульсов, имитирующего сигнал вращения шпинделя деки, я использовал схему на основе выпаянной с платы старого привода CD-ROM микросхемы 74LS00, представляющей собой 4 логических элемента И-НЕ в одном компактном SMD-корпусе, где частоту генерации задают алюминиевый электролитический конденсатор 220мкФ x 6В и пара резисторов по 100 Ом. Почему резисторов два? Просто потому, что я у себя в закромах не нашёл один резистор на 200 Ом, зато имелось несколько на 100. В итоге, судя по встроенному в тестер частотомеру, с указанными номиналами элементов частота генерации составила 5,5 Гц. Далее, поскольку сигнал на включение мотора лентопротяжного механизма инвертирован (активный уровень сигнала — низкий), а BTM625B запускается высоким уровнем сигнала, то пускай тогда один из неиспользуемых логических элементов 74LS00 будет заниматься инвертированием сигнала, если уж в схеме уже имеется логический инвертор, почему б его не использовать? Кроме того, поскольку BTM625 питается напряжением 3,3 В (в отличие от 7400, работающей от +5 Вольт), то и логические уровни используются вовсе не пятивольтовые, поэтому сигнал с выхода инвертора на разрешающий вход модуля проходит через резистор 1 кОм. Также на плате имеются два раздельных линейных стабилизатора LM1117-3.3 для формирования питаний Bluetooth-модуля и модуля усилителя звука.
Через некоторое время заказанные модули приехали, и я впаял в плату и их тоже.
Ах как же жаль, что я не догадался тогда сделать фотографию первой ревизии моей платы, в тот момент ведь я даже не планировал писать на BTM625B обзор! В самом деле, что там писать, всё ж просто вроде бы: выход звука с модуля Bluetooth выдаём на вход усилителя и с выхода усилителя аудиосигнал подаём на вход аналогового переключателя музыкального центра, всё ж просто, всё как в прошлом обзоре, о чём тут писать? Ага, щазз, как бы не так!
Радостный, я подключил к только что собранной плате питание с лабораторного блока питания, замкнул разрешающий провод на землю, и увидел появившуюся сеть “BT Speaker”. Как же я в тот момент обрадовался! Мой телефон подключился без особых проблем, на экране выскочила надпись, сигнализирующая о том, что телефон и моё устройство работают по протоколу aptX, и я запустил музыкальный трек в надежде услышать звук из подключенного динамика. Но… Как бы не так, звука не было, хотя усилитель совершенно точно работал, это подтверждалось тем, что если коснуться его входа металлическим предметом, в динамике появлялся нискочастотный гул. Куда делся звук? Вот в чём вопрос. После непродолжительных поисков в Интернете выяснилось, что BTM625B по умолчанию сконфигурирован таким образом, что выдает звук не в дифференциальный аудиовыход, а в шину I2S, и чтобы перенастроить это поведение, необходимо к шине SPI микросхемы CSRA64215 подключить SPI-USB адаптер, да не простой, а проприетарный от самой компании CSR. Посмотрев, сколько стоит это чудо техники даже в варианте от китайцев, я пришёл в уныние. Но! Есть ещё добрые и талантливые люди, и в строке поиска поисковой системы меня заинтересовала ссылка на один проект на GitHub’е.
Автор проекта “csr-spi-ftdi” под ником lorf предлагает в качестве адаптера CSR SPI использовать дешевый адаптер USB-UART на основе микросхемы FT232R, который можно как собрать самостоятельно, так и приобрести готовый (просто наберите в поиске AliExpress или ebay “FT232R adapter”). Магия здесь в том, что микросхема FT232R в качестве одной из своих функций может использовать свои выводы в режиме BitBang, т.е. позволяет программно изменять их состояние из высокого в низкое и наоборот, что очень напоминает работу обычного LPT-порта или GPIO-выводов Arduino и многих других подобных плат, что открывает возможность создавать на её основе различные самодельные программаторы, адаптеры и прочее нестандартное оборудование. Программная реализация протокола SPI осуществляется при помощи библиотеки usbspi.dll, созданной автором проекта, причём поддерживаются как микросхемы производства самой FTDI, так и китайские клоны. Пришлось заказать ещё и адаптер, благо стоит он недорого.
Пока адаптер находился в пути, я решил сделать более компактную плату для моего будущего устройства и заложить в неё возможность программирования (разведя дорожки шины SPI).
Самые внимательные могли заметить неправильно припаянный фильтрующий конденсатор по входу питания. Всё именно так, в процессе ревизирования платы я этот косяк тоже заметил и устранил :)))
Кроме того, судя по множеству отзывов, установленные на выходе модуля усилителя переходные электролитические конденсаторы имеют недостаточную ёмкость (100 мкФ), и установка конденсаторов с большей ёмкостью улучшает звучание усилителя на низких частотах, было решено их заменить. В хозяйстве нашлась лишь пара на 470 мкФ х 16 В, их и запаял. В будущем ещё заменю и 4 SMD-конденсатора по входу, т.к. по datasheet-у на микросхему SGM4812 их ёмкость должна составлять 390 нФ, а по факту стоят конденсаторы на 100 нФ.
Расскажу немного о процессе программирования BTM625B. Для перевода платы в режим программирования необходимо вывод PCM/SPI (вывод №5 BTM625B) через резистор 10 кОм подключить к напряжению +3,3 В, а непосредственно подключение к микросхеме происходит при помощи шины SPI. Для программирования необходимо подключить 6 выводов: общий провод, питание, а также сигналы CLK, CSB, MOSI, MISO через резисторы 220 Ом (по крайней мере, так рекомендовано автором проекта на GitHub'е) с адаптером. При разводке платы я про эти резисторы успешно забыл, а переделывать уже не хотелось, посему припаял их прямо в разрыв соединительных проводов. На моей плате уже имеется преобразователь на 3,3 В, поэтому (а также потому, что судя по данным из даташита на FT232R сила тока на выходе встроенного в неё линейного преобразователя на 3,3 В не может превышать 50мА) для питания модуля с платы адаптера идёт напряжение 5 В.
Соединяем адаптер и самодельную плату в соответствии со следующей таблицей:
Обратите внимание! Сигнал DSR на адаптере обозначен как RSD! Вот он, верный признак настоящего качества…
Также для изменения настроек модуля нам потребуется программное обеспечение под названием “CSRA64xxx and CSRA63xxx Tools v2”. В Интернете довольно просто найти софт первой версии, но я где-то видел отзывы о том, что она не хочет работать с этим модулем из-за слишком новой версии встроенного в модуль программного обеспечения, и необходима именно вторая версия (позже оказалось, что это именно так). Софт версии 2 найти было намного сложнее, по большинству найденных мной ссылок программа была недоступна для скачивания, однако всё же мне удалось её скачать. Чтобы никому из читателей не пришлось так же, как и мне, лазить по куче китайских сайтов, выложил её на файлохранилище.
Итак, теперь необходимо установить программу, зайти в ту папку, в которую она была установлена (на моей системе это “C:\Program Files (x86)\CSRA64xxx and CSRA63xxx Tools v2” и заменить файл “usbspi.dll” на файл “lib-win32/usbspi.dll”, скачанный со страницы проекта на GitHub (не забыв предварительно сделать резервную копию заменяемого файла). Но, к сожалению, только этого недостаточно. Всё дело в том, что стандартный драйвер для Windows предоставляет для таких адаптеров лишь функциональность COM-порта, чего для наших нужд будет явно мало, поэтому необходимо временно заменить драйвер от FTDI на libusb-совместимый драйвер, что даёт возможность более низкоуровневого доступа к чипу. Для замены драйвера используется программа Zadig. Подключаем наш адаптер к USB-порту компьютера, скачиваем и запускаем программу Zadig. В открывшемся окне выбираем пункт меню «Options» и ставим галочку «List all devices», где находим название адаптера (что-то вроде “FT232R USB UART”), далее стрелочками выбираем драйвер “libusbK” и нажимаем кнопку “Replace driver” или “Install driver”.
Запускаем CSRA64xxx and CSRA63xxx v2 Configuration Tool, подаём (это только в моём случае, т.к. у меня в схеме используется инвертор; на голый модуль надо подавать высокий уровень на контакт MFB) низкий уровень сигнала на вход «EN» (замыкаем на землю), выбираем в списке «Select a device» устройство «FT232R 00000000» и жмём на «Read device», и, если соединения выполнены правильно, то программа считает все настройки с платы и позволит их изменять на наше усмотрение.
Первым же делом я, разумеется, изменил аудиовыход с I2S на DAC (встроенный ЦАП), собственно, ради этого всё и затевалось:
А также изменил название Bluetooth-точки с невнятного «BT Speaker» на «Sony MHC-551», это ж будет его блютус, не так ли?
И включил поддержку кодека AAC (по умолчанию почему-то отключена):
Вообще в программе имеется множество настроек, описывать их я не буду, кому это потребуется — разберётся самостоятельно.
Попробовал я ради интереса и первую версию программы — действительно, не работает!
На этом, в принципе, перепрограммирование устройства завершено, можно проверять! Я подал питание на модуль, подключился с телефона к точке «Sony MHC-551», и на экран выскочило сообщение о подключении к устройству с поддержкой aptX!
Запускаю музыкальный трек для проверки… Всё работает!!! Даже CSR GAIA Control (также выложил её в облако, может кому пригодится) видит устройство:
Теперь нужно это чудо техники установить в музыкальный центр. Разместить плату было решено за приводом CD-проигрывателя, там места предостаточно, и доступ к ней для доработок в будущем значительно упростится.
И снова я столкнулся с трудностями. После подключения моей платы к цепи питания +5 В музыкального центра, не запустился генератор импульсов для эмуляции работы лентопротяжного механизма (на выходе постоянно была лог. «1»), хотя от ЛБП всё совершенно точно работало… Знаете почему так произошло? Оказывается, что по линии 5 В в этом центре на самом деле идёт напряжение +5,6 В. Стоило бы найти источник более высокого напряжения (в схеме центра имеется источник 7,5 В) и добавить в свою схему преобразователь на чём-нибудь типа 7805, но травить-лудить-паять другую плату не хотелось совсем, да и делать это ради всего одной микросхемы? Не, проще перерезать дорожку к ножке питания 74LS00 и поставить диод, на нём упадёт как раз 0,6 В. Так и сделал, использовав диод 1N4148 в SMD-исполнении. После его установки генератор импульсов завёлся без проблем. Антенну Bluetooth (а по факту маленькую антенну WiFi) я просто закинул в держатель кассеты — потом что-нибудь придумаю, пока оставлю так.
Теперь нужно определиться, при каких условиях модуль будет включаться. От того, чтобы Bluetooth был включен постоянно, я отказался сразу же. В первой версии я подключал разрешающий сигнал к выходу сигнала "#POWER-ON" процессора муз. центра, который принимает низкий уровень при выходе центра из спящего режима в рабочий режим. Но опять же, я не всегда использую муз. центр для прослушивания музыки через Bluetooth, чаще всего он работает просто как усилитель звуковых сигналов с телевизора, поэтому модуль будет работать впустую. Решение нашлось практически сразу — раз я подключил выход модуля усилителя звука своей платы к входу усилителя деки, так надо уж и активировать Bluetooth-модуль по сигналу активации мотора лентопротяжного механизма «CAPM. ON/OFF», к тому же он тоже инверсный и переделывать в схеме ничего не нужно. Взять этот сигнал можно прямо с процессора муз. центра либо с базы транзистора Q407 (см. рисунок):
Теперь, когда всё припаяно и заработало должным образом, пора и поиграть немножко в новую игрушку!
Сначала я решил проверить, в каком режиме модуль Bluetooth работает с разными телефонами. Методика проверки проста и описана в моём предыдущем обзоре, но скопирую её сюда, чтобы не заставлять читателя ходить по ссылкам:
Результаты проверки 3 различных телефонов:
Как видно, модуль и телефон «договорились» использовать кодек aptX, всё отлично!
И опять же, используется aptX
А вот LG K8 2017 кодек aptX не поддерживает, и я, признаться, думал, что работать будет используя базовый кодек SBC, но нет! Оказалось, что устройства «договорились» использовать кодек AAC! Ого, такого я не ожидал!Ну и бонусом, лог соединения ноутбука на Ubuntu 16.04 LTS:
Здесь видно, как Ubuntu опрашивает модуль обо всех поддерживаемых им возможностях и их вариациях, но в итоге соединение идёт с использованием кодека SBC.
Теперь немного субьективщины о звуке от человека с обтопанными медведем ушами. Он восхитителен! Никаких лишних шумов, слышны все инструменты, по отношению к предыдущему BT-модулю, поддерживающему только кодек SBC, звук стал намного лучше, т.е. разницу между aptX и SBC слышу даже я! Для проверки включил трек Nightwish — Sleeping Sun и практически утонул в голосе Тарьи. Я очень доволен результатом!
Конечно же микрофон моей экшн-камеры не передаёт качество звука, но посмотреть на работу в общем вполне можно. В планах на будущее — переместить или как-либо облагородить светодиод индикации режимов работы. Может кто-нибудь из читателей подаст какую-нибудь идею? Жалко нет каких-нибудь светодиодных индикаторов в форме значка Bluetooth (по крайней мере я не нашёл)…
Прошу прощения за несколько сумбурный стиль изложения, но чукча не писатель, чукча — паятель. Если у кого-либо остались вопросы — милости прошу в комментарии…
P.S. Выложил файл платы в формате Sprint Layout 6, скачать здесь.
P.P.S. Обратите внимание! Теперь, благодаря пользователю player404 у нас есть патч для программы CSRA64xxx and CSRA63xxx Tools v2 с поддержкой Configuration Set версии [ROM,15]. Так что если при настройке модуля вы видите такую ошибку:
то просто распакуйте обновление в папку с установленной программой. Скачать обновление можно с Dropbox'а player404 или с моего облачного диска.
В комментариях к моему обзору о переделке музыкального центра Sony HCD-551 были выдвинуты предложения по замене применяемого мной адаптера Bluetooth на более современный, использующий протокол aptX, и даны ссылки на несколько моделей. В принципе, меня решение из моего прошлого обзора устраивало почти полностью (за исключением небольшого фонового шума во время тишины между треками или при паузе воспроизведения), но любопытство и желание попробовать что-то новое и прогрессивное пересилило, и я начал изучать устройства по приведённым ссылкам. Однако, в своём изначальном состоянии ни одно из них не подходило мне без переделки, поскольку, во-первых, мне хотелось на одной плате разместить ещё и эмулятор кассетной деки (напомню, в этом музыкальном центре приходится эмулировать сигнал с датчика оборотов шпинделя кассеты, поскольку иначе электроника центра считает, что воспроизведение кассеты закончилось и переключает электронный коммутатор входов звука в режим Mute), во-вторых для повышения устойчивости радиосвязи мне необходимо вывести Bluetooth-антенну за металлический корпус центра, в-третьих мне нужно управлять включением модуля, разрешая его работу лишь тогда, когда в этом имеется необходимость, а в остальное время модуль должен быть отключен, в-четвёртых, по цене готовое решение получалось несколько дороже. Но телефон мой этот стандарт вроде как поддерживает. Я начал искать альтернативный путь решения этой задачи.
И вот, оказалось, что на просторах AliExpress имеются “голые” модули адаптеров, содержащие на миниатюрной плате лишь саму микросхему, работающую с Bluetooth, а также минимально необходимую для её работы обвязку. Мало того, “фабричные”, уже готовые к использованию Bluetooth-ресиверы, собираются как раз именно на основе таких модулей. Я подумал, а почему бы и мне не сделать собственную плату на основе этого модуля, полностью адаптировав её подо все мои требования? Для своего проекта я выбрал модуль BTM625B на основе микросхемы CSRA64215, как наиболее современное решение.
BTM625B
Давайте посмотрим, что обещает на продавец на странице товара:
1. Поддержку стандарта Bluetooth 4.2
2. Малые габариты платы модуля: 15*18*2.0мм
3. Диапазон напряжений питания: 2.8-4.2 В
4. Частотный диапазон: 2402~2480 МГц
5. Кодеки: aptX,aptX Low Latency, SBC и AAC
6. TrueWireless Stereo (TWS)
и ещё много всего!
Это всё, конечно, хорошо, но поскольку этот модуль содержит дифференциальный вывод звука, а в той цепи музыкального центра, куда я буду подавать звук с Bluetooth-модуля используется небалансный вход, то нужно как-то преобразовать аудиосигнал. Для этих целей послужит ещё один модуль, который мне также нужно приобрести, на этот раз это будет усилитель на основе микросхемы SGM4812.
Усилитель на микросхеме SGM4812
В теории всё просто и хорошо, но если бы я тогда знал, с какими проблемами мне предстоит столкнуться… Но об этом чуть позже!
Сказано-сделано! Я приобрёл на AliExpress необходимые модули, а пока они шли почтой, я развёл и изготовил первую ревизию платы моего будущего устройства. На этот раз было решено использовать SMD-компоненты. По сути, схема простейшая, но для большего понимания я всё же частично зарисовал её:
В качестве генератора импульсов, имитирующего сигнал вращения шпинделя деки, я использовал схему на основе выпаянной с платы старого привода CD-ROM микросхемы 74LS00, представляющей собой 4 логических элемента И-НЕ в одном компактном SMD-корпусе, где частоту генерации задают алюминиевый электролитический конденсатор 220мкФ x 6В и пара резисторов по 100 Ом. Почему резисторов два? Просто потому, что я у себя в закромах не нашёл один резистор на 200 Ом, зато имелось несколько на 100. В итоге, судя по встроенному в тестер частотомеру, с указанными номиналами элементов частота генерации составила 5,5 Гц. Далее, поскольку сигнал на включение мотора лентопротяжного механизма инвертирован (активный уровень сигнала — низкий), а BTM625B запускается высоким уровнем сигнала, то пускай тогда один из неиспользуемых логических элементов 74LS00 будет заниматься инвертированием сигнала, если уж в схеме уже имеется логический инвертор, почему б его не использовать? Кроме того, поскольку BTM625 питается напряжением 3,3 В (в отличие от 7400, работающей от +5 Вольт), то и логические уровни используются вовсе не пятивольтовые, поэтому сигнал с выхода инвертора на разрешающий вход модуля проходит через резистор 1 кОм. Также на плате имеются два раздельных линейных стабилизатора LM1117-3.3 для формирования питаний Bluetooth-модуля и модуля усилителя звука.
Через некоторое время заказанные модули приехали, и я впаял в плату и их тоже.
Ах как же жаль, что я не догадался тогда сделать фотографию первой ревизии моей платы, в тот момент ведь я даже не планировал писать на BTM625B обзор! В самом деле, что там писать, всё ж просто вроде бы: выход звука с модуля Bluetooth выдаём на вход усилителя и с выхода усилителя аудиосигнал подаём на вход аналогового переключателя музыкального центра, всё ж просто, всё как в прошлом обзоре, о чём тут писать? Ага, щазз, как бы не так!
Радостный, я подключил к только что собранной плате питание с лабораторного блока питания, замкнул разрешающий провод на землю, и увидел появившуюся сеть “BT Speaker”. Как же я в тот момент обрадовался! Мой телефон подключился без особых проблем, на экране выскочила надпись, сигнализирующая о том, что телефон и моё устройство работают по протоколу aptX, и я запустил музыкальный трек в надежде услышать звук из подключенного динамика. Но… Как бы не так, звука не было, хотя усилитель совершенно точно работал, это подтверждалось тем, что если коснуться его входа металлическим предметом, в динамике появлялся нискочастотный гул. Куда делся звук? Вот в чём вопрос. После непродолжительных поисков в Интернете выяснилось, что BTM625B по умолчанию сконфигурирован таким образом, что выдает звук не в дифференциальный аудиовыход, а в шину I2S, и чтобы перенастроить это поведение, необходимо к шине SPI микросхемы CSRA64215 подключить SPI-USB адаптер, да не простой, а проприетарный от самой компании CSR. Посмотрев, сколько стоит это чудо техники даже в варианте от китайцев, я пришёл в уныние. Но! Есть ещё добрые и талантливые люди, и в строке поиска поисковой системы меня заинтересовала ссылка на один проект на GitHub’е.
Автор проекта “csr-spi-ftdi” под ником lorf предлагает в качестве адаптера CSR SPI использовать дешевый адаптер USB-UART на основе микросхемы FT232R, который можно как собрать самостоятельно, так и приобрести готовый (просто наберите в поиске AliExpress или ebay “FT232R adapter”). Магия здесь в том, что микросхема FT232R в качестве одной из своих функций может использовать свои выводы в режиме BitBang, т.е. позволяет программно изменять их состояние из высокого в низкое и наоборот, что очень напоминает работу обычного LPT-порта или GPIO-выводов Arduino и многих других подобных плат, что открывает возможность создавать на её основе различные самодельные программаторы, адаптеры и прочее нестандартное оборудование. Программная реализация протокола SPI осуществляется при помощи библиотеки usbspi.dll, созданной автором проекта, причём поддерживаются как микросхемы производства самой FTDI, так и китайские клоны. Пришлось заказать ещё и адаптер, благо стоит он недорого.
Адаптер на основе FTDI FT232RL
Пока адаптер находился в пути, я решил сделать более компактную плату для моего будущего устройства и заложить в неё возможность программирования (разведя дорожки шины SPI).
Печатная плата
Самые внимательные могли заметить неправильно припаянный фильтрующий конденсатор по входу питания. Всё именно так, в процессе ревизирования платы я этот косяк тоже заметил и устранил :)))
Кроме того, судя по множеству отзывов, установленные на выходе модуля усилителя переходные электролитические конденсаторы имеют недостаточную ёмкость (100 мкФ), и установка конденсаторов с большей ёмкостью улучшает звучание усилителя на низких частотах, было решено их заменить. В хозяйстве нашлась лишь пара на 470 мкФ х 16 В, их и запаял. В будущем ещё заменю и 4 SMD-конденсатора по входу, т.к. по datasheet-у на микросхему SGM4812 их ёмкость должна составлять 390 нФ, а по факту стоят конденсаторы на 100 нФ.
Расскажу немного о процессе программирования BTM625B. Для перевода платы в режим программирования необходимо вывод PCM/SPI (вывод №5 BTM625B) через резистор 10 кОм подключить к напряжению +3,3 В, а непосредственно подключение к микросхеме происходит при помощи шины SPI. Для программирования необходимо подключить 6 выводов: общий провод, питание, а также сигналы CLK, CSB, MOSI, MISO через резисторы 220 Ом (по крайней мере, так рекомендовано автором проекта на GitHub'е) с адаптером. При разводке платы я про эти резисторы успешно забыл, а переделывать уже не хотелось, посему припаял их прямо в разрыв соединительных проводов. На моей плате уже имеется преобразователь на 3,3 В, поэтому (а также потому, что судя по данным из даташита на FT232R сила тока на выходе встроенного в неё линейного преобразователя на 3,3 В не может превышать 50мА) для питания модуля с платы адаптера идёт напряжение 5 В.
Соединяем адаптер и самодельную плату в соответствии со следующей таблицей:
Сигнал SPI Вывод адаптера
CSB DTR
CLK RTS
MOSI RI
MISO DSR
GND GND
Обратите внимание! Сигнал DSR на адаптере обозначен как RSD! Вот он, верный признак настоящего качества…
Также для изменения настроек модуля нам потребуется программное обеспечение под названием “CSRA64xxx and CSRA63xxx Tools v2”. В Интернете довольно просто найти софт первой версии, но я где-то видел отзывы о том, что она не хочет работать с этим модулем из-за слишком новой версии встроенного в модуль программного обеспечения, и необходима именно вторая версия (позже оказалось, что это именно так). Софт версии 2 найти было намного сложнее, по большинству найденных мной ссылок программа была недоступна для скачивания, однако всё же мне удалось её скачать. Чтобы никому из читателей не пришлось так же, как и мне, лазить по куче китайских сайтов, выложил её на файлохранилище.
Итак, теперь необходимо установить программу, зайти в ту папку, в которую она была установлена (на моей системе это “C:\Program Files (x86)\CSRA64xxx and CSRA63xxx Tools v2” и заменить файл “usbspi.dll” на файл “lib-win32/usbspi.dll”, скачанный со страницы проекта на GitHub (не забыв предварительно сделать резервную копию заменяемого файла). Но, к сожалению, только этого недостаточно. Всё дело в том, что стандартный драйвер для Windows предоставляет для таких адаптеров лишь функциональность COM-порта, чего для наших нужд будет явно мало, поэтому необходимо временно заменить драйвер от FTDI на libusb-совместимый драйвер, что даёт возможность более низкоуровневого доступа к чипу. Для замены драйвера используется программа Zadig. Подключаем наш адаптер к USB-порту компьютера, скачиваем и запускаем программу Zadig. В открывшемся окне выбираем пункт меню «Options» и ставим галочку «List all devices», где находим название адаптера (что-то вроде “FT232R USB UART”), далее стрелочками выбираем драйвер “libusbK” и нажимаем кнопку “Replace driver” или “Install driver”.
Запускаем CSRA64xxx and CSRA63xxx v2 Configuration Tool, подаём (это только в моём случае, т.к. у меня в схеме используется инвертор; на голый модуль надо подавать высокий уровень на контакт MFB) низкий уровень сигнала на вход «EN» (замыкаем на землю), выбираем в списке «Select a device» устройство «FT232R 00000000» и жмём на «Read device», и, если соединения выполнены правильно, то программа считает все настройки с платы и позволит их изменять на наше усмотрение.
Первым же делом я, разумеется, изменил аудиовыход с I2S на DAC (встроенный ЦАП), собственно, ради этого всё и затевалось:
А также изменил название Bluetooth-точки с невнятного «BT Speaker» на «Sony MHC-551», это ж будет его блютус, не так ли?
И включил поддержку кодека AAC (по умолчанию почему-то отключена):
Вообще в программе имеется множество настроек, описывать их я не буду, кому это потребуется — разберётся самостоятельно.
Попробовал я ради интереса и первую версию программы — действительно, не работает!
CSRA64xxx and CSRA63xxx Tools первой версии и BTM625B
На этом, в принципе, перепрограммирование устройства завершено, можно проверять! Я подал питание на модуль, подключился с телефона к точке «Sony MHC-551», и на экран выскочило сообщение о подключении к устройству с поддержкой aptX!
Скриншот с телефона
Запускаю музыкальный трек для проверки… Всё работает!!! Даже CSR GAIA Control (также выложил её в облако, может кому пригодится) видит устройство:
Скриншоты CSR GAIA Control
Теперь нужно это чудо техники установить в музыкальный центр. Разместить плату было решено за приводом CD-проигрывателя, там места предостаточно, и доступ к ней для доработок в будущем значительно упростится.
Установка платы в муз.центр
И снова я столкнулся с трудностями. После подключения моей платы к цепи питания +5 В музыкального центра, не запустился генератор импульсов для эмуляции работы лентопротяжного механизма (на выходе постоянно была лог. «1»), хотя от ЛБП всё совершенно точно работало… Знаете почему так произошло? Оказывается, что по линии 5 В в этом центре на самом деле идёт напряжение +5,6 В. Стоило бы найти источник более высокого напряжения (в схеме центра имеется источник 7,5 В) и добавить в свою схему преобразователь на чём-нибудь типа 7805, но травить-лудить-паять другую плату не хотелось совсем, да и делать это ради всего одной микросхемы? Не, проще перерезать дорожку к ножке питания 74LS00 и поставить диод, на нём упадёт как раз 0,6 В. Так и сделал, использовав диод 1N4148 в SMD-исполнении. После его установки генератор импульсов завёлся без проблем. Антенну Bluetooth (а по факту маленькую антенну WiFi) я просто закинул в держатель кассеты — потом что-нибудь придумаю, пока оставлю так.
Теперь нужно определиться, при каких условиях модуль будет включаться. От того, чтобы Bluetooth был включен постоянно, я отказался сразу же. В первой версии я подключал разрешающий сигнал к выходу сигнала "#POWER-ON" процессора муз. центра, который принимает низкий уровень при выходе центра из спящего режима в рабочий режим. Но опять же, я не всегда использую муз. центр для прослушивания музыки через Bluetooth, чаще всего он работает просто как усилитель звуковых сигналов с телевизора, поэтому модуль будет работать впустую. Решение нашлось практически сразу — раз я подключил выход модуля усилителя звука своей платы к входу усилителя деки, так надо уж и активировать Bluetooth-модуль по сигналу активации мотора лентопротяжного механизма «CAPM. ON/OFF», к тому же он тоже инверсный и переделывать в схеме ничего не нужно. Взять этот сигнал можно прямо с процессора муз. центра либо с базы транзистора Q407 (см. рисунок):
Теперь, когда всё припаяно и заработало должным образом, пора и поиграть немножко в новую игрушку!
Сначала я решил проверить, в каком режиме модуль Bluetooth работает с разными телефонами. Методика проверки проста и описана в моём предыдущем обзоре, но скопирую её сюда, чтобы не заставлять читателя ходить по ссылкам:
Проверка используемого Bluetooth-кодека
Дело в том, что современные смартфоны на базе ОС Android умеют вести логирование пакетов, проходящих через Bluetooth-соединение, нужно лишь его включить в настройках. Делается это довольно просто, нужно лишь активировать режим для разработчиков, для чего в пункте «О телефоне» или «О планшете» находим пункт «Номер сборки» и делаем на нём несколько нажатий. Если всё прошло успешно, появится сообщение «Вы стали разработчиком!». Теперь нужно вернуться в основное меню настроек, найти там пункт «Функции для разработчиков», зайти в него и активировать параметр «Сохранять все пакеты HCI Bluetooth».
После перезагрузки телефона в директории /sdcard появляется файл btsnoop_hci.log, который можно открыть в программе-анализаторе трафика Wireshark на компьютере. Стоит однако заметить, что в зависимости от конкретного устройства, файл может создаваться в другом месте файловой системы, узнать где — очень легко: нужно зайти в директорию /etc/bluetooth и открыть файл btstack.conf как текстовый файл, найти в тексте параметр BtSnoopFileName, его значением как раз и будет местонахождение файла btsnoop_hci.log. Всё перечисленное нужно делать в каком-либо «продвинутом» файловом менеджере, например TotalCommander for Android, и не забывайте, папка /sdcard далеко не всегда является корнем вашей SD карты!
После перезагрузки телефона в директории /sdcard появляется файл btsnoop_hci.log, который можно открыть в программе-анализаторе трафика Wireshark на компьютере. Стоит однако заметить, что в зависимости от конкретного устройства, файл может создаваться в другом месте файловой системы, узнать где — очень легко: нужно зайти в директорию /etc/bluetooth и открыть файл btstack.conf как текстовый файл, найти в тексте параметр BtSnoopFileName, его значением как раз и будет местонахождение файла btsnoop_hci.log. Всё перечисленное нужно делать в каком-либо «продвинутом» файловом менеджере, например TotalCommander for Android, и не забывайте, папка /sdcard далеко не всегда является корнем вашей SD карты!
Результаты проверки 3 различных телефонов:
Sony Xperia Z3 Compact
Как видно, модуль и телефон «договорились» использовать кодек aptX, всё отлично!
Samsung Galaxy S5 mini
И опять же, используется aptX
LG K8 2017
А вот LG K8 2017 кодек aptX не поддерживает, и я, признаться, думал, что работать будет используя базовый кодек SBC, но нет! Оказалось, что устройства «договорились» использовать кодек AAC! Ого, такого я не ожидал!
Лог соединения Ububtu Linux 16.04 LTS
evilslon@evilslon-lap:~$ sudo hcidump avdtp
[sudo] пароль для evilslon:
HCI sniffer - Bluetooth packet analyzer ver 5.37
device: hci0 snap_len: 1500 filter: 0x400
< AVDTP(s): Discover cmd: transaction 0 nsp 0x00
> AVDTP(s): Discover rsp: transaction 0 nsp 0x00
ACP SEID 6 - Audio Sink
ACP SEID 5 - Audio Sink
ACP SEID 3 - Audio Sink
ACP SEID 53 - Audio Source
ACP SEID 21 - Audio Sink
ACP SEID 51 - Audio Source
ACP SEID 19 - Audio Sink
ACP SEID 49 - Audio Source
ACP SEID 17 - Audio Sink
ACP SEID 33 - Audio Source
ACP SEID 1 - Audio Sink
< AVDTP(s): All Capabilities cmd: transaction 1 nsp 0x00
ACP SEID 6
> AVDTP(s): All Capabilities rsp: transaction 1 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
32 02 00 00 00 00 00 00 00 00 00
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 2 nsp 0x00
ACP SEID 5
> AVDTP(s): All Capabilities rsp: transaction 2 nsp 0x00
Media Transport
Media Codec - non-A2DP (aptX)
44.1kHz 48kHz
Stereo
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 3 nsp 0x00
ACP SEID 3
> AVDTP(s): All Capabilities rsp: transaction 3 nsp 0x00
Media Transport
Media Codec - MPEG-2,4 AAC
MPEG-2 AAC LC MPEG-4 AAC LC
8kHz 11.025kHz 12kHz 16kHz 22.05kHz 24kHz 32kHz 44.1kHz 48kHz
1 2 Channels
320000bps VBR
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 4 nsp 0x00
ACP SEID 53
> AVDTP(s): All Capabilities rsp: transaction 4 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 09 00 FF 4F 00 00 00 01 00 32
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 5 nsp 0x00
ACP SEID 21
> AVDTP(s): All Capabilities rsp: transaction 5 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 09 00 FF 4F 00 00 00 01 00 32
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 6 nsp 0x00
ACP SEID 51
> AVDTP(s): All Capabilities rsp: transaction 6 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 08 00 02 C0 FF 8C 84 E2 00
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 7 nsp 0x00
ACP SEID 19
> AVDTP(s): All Capabilities rsp: transaction 7 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 08 00 02 C0 FF 8C 84 E2 00
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 8 nsp 0x00
ACP SEID 49
> AVDTP(s): All Capabilities rsp: transaction 8 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 06 00 00 FF FF 02 35
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 9 nsp 0x00
ACP SEID 17
> AVDTP(s): All Capabilities rsp: transaction 9 nsp 0x00
Media Transport
Media Codec - non-A2DP (Unknown)
07 06 00 00 FF FF 02 35
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 10 nsp 0x00
ACP SEID 33
> AVDTP(s): All Capabilities rsp: transaction 10 nsp 0x00
Media Transport
Media Codec - SBC
16kHz 32kHz 44.1kHz 48kHz
Mono DualChannel Stereo JointStereo
4 8 12 16 Blocks
4 8 Subbands
SNR Loudness
Bitpool Range 2-53
Content Protection
02 00
Delay Reporting
< AVDTP(s): All Capabilities cmd: transaction 11 nsp 0x00
ACP SEID 1
> AVDTP(s): All Capabilities rsp: transaction 11 nsp 0x00
Media Transport
Media Codec - SBC
16kHz 32kHz 44.1kHz 48kHz
Mono DualChannel Stereo JointStereo
4 8 12 16 Blocks
4 8 Subbands
SNR Loudness
Bitpool Range 2-53
Content Protection
02 00
Delay Reporting
< AVDTP(s): Set config cmd: transaction 12 nsp 0x00
ACP SEID 1 - INT SEID 1
Media Transport
Media Codec - SBC
44.1kHz
JointStereo
16 Blocks
8 Subbands
Loudness
Bitpool Range 2-53
Здесь видно, как Ubuntu опрашивает модуль обо всех поддерживаемых им возможностях и их вариациях, но в итоге соединение идёт с использованием кодека SBC.
Теперь немного субьективщины о звуке от человека с обтопанными медведем ушами. Он восхитителен! Никаких лишних шумов, слышны все инструменты, по отношению к предыдущему BT-модулю, поддерживающему только кодек SBC, звук стал намного лучше, т.е. разницу между aptX и SBC слышу даже я! Для проверки включил трек Nightwish — Sleeping Sun и практически утонул в голосе Тарьи. Я очень доволен результатом!
Проверка BTM64215 в муз. центре Sony HCD-H551
Конечно же микрофон моей экшн-камеры не передаёт качество звука, но посмотреть на работу в общем вполне можно.
Прошу прощения за несколько сумбурный стиль изложения, но чукча не писатель, чукча — паятель. Если у кого-либо остались вопросы — милости прошу в комментарии…
P.S. Выложил файл платы в формате Sprint Layout 6, скачать здесь.
P.P.S. Обратите внимание! Теперь, благодаря пользователю player404 у нас есть патч для программы CSRA64xxx and CSRA63xxx Tools v2 с поддержкой Configuration Set версии [ROM,15]. Так что если при настройке модуля вы видите такую ошибку:
то просто распакуйте обновление в папку с установленной программой. Скачать обновление можно с Dropbox'а player404 или с моего облачного диска.
+161 |
69607
136
|
+117 |
28941
123
|
Самые обсуждаемые обзоры
+72 |
4178
139
|
+35 |
1889
26
|
Хотя балансные выходы можно было и через конденсаторы пустить, без усилителя, имхо конечно
И вообще, такое надо лепить на CMOS инверторах. Лучше — с встроенным триггером Шмитта. Вариант — 74HC14.
… ну, или классика — 555.
Какой мне сделать самый простой генератор?
Документация здесь.
cloud.mail.ru/public/31eM/8p3v6XZP6
Но, я думаю, что «счетчик» и микрик наличия кассеты не решит вопрос.
В документации есть схема до разъема деки.
А схему маленькой деки я безобразно зарисовал на скорую руку.
Ваше мнение?
Я брал Dbpower aptx за 16 баксов на али. Звук отменный. Подключает к AUX. Питается от USB.
Умеет переключать треки и есть встроенный микрофон для авто.
выше я просто уже не слышу в силу возраста.
Я по молодости работал в конторе, которая занималась разработкой железок. В какой-то момент работая с железкой сильно страдал от свиста. Никто (из присутствующих) больше не слышал его. Оказалось в железке был какой-то косяк и она издавала звук на уровне 18кГц.
Может на тао остался, но оттуда не люблю заказывать.
Его родственник www.amazon.com/DBPOWER-Bluetooth-Transmitter-Receiver-Wireless/dp/B073CRWNWN (в продаже уже нет)
https://aliexpress.com/item/item/Ugreen-Bluetooth-4-2-3-5/32840887897.html
Представляю, сколько времени было проведено в поисках решений встающих на пути к светлому
будузвуку трудностей )Не могу избавиться от фона на этой плате, даже при питании от лития (
По фону — подключение выхода модуля к усилителю балансное, или через дифф усилители?
может, стоит увеличить входное сопротивление схемы, к которой подключаетесь?
Подключение у меня идёт через ОУ с входным сопротивлением 10кОм в режиме преобразователя баланс->небаланс с ку=1.
ОУ менял начиная с простых заканчивая высокотоковыми для наушников.
Звук хорош, но вч писк/шуршание есть после сопряжения
Всё готово, и буфер, и програмировать не надо.
есть такое решение
если на плате прямые углы дорожек убрать — будет еще +10 к качеству звука :)
www.saturnpcb.com/assets/templates/web-images/transmitter-big.jpg
В нормальных ушах звук гораздо лучше и богаче, чем с недо«динамиков» современных ТВ. Хотя бы за счёт появления псевдо «басов».
Или у вас до сих пор телик с 4ГД-53???
С ушами с Aptx — куча решений и вариантов. Смотри ниже одно из них.
какой смысл в этом?
90% устроит.
Но с возрастом пришла лень, дальнозоркость (не вижу мелкое) и… киты со своими девайсами.
Недавно заказал на Ali Bluetooth наушники Ausdom AH3 aptX Low Latency
https://aliexpress.com/item/item/Ausdom-AH3-apt-X-Low-Latency-Bluetooth-V4-2-Wireless-Headphones-Deep-Bass-Bluetooth-Headset-Headphone/32820284171.html
Для компа заказал Orico BTA-403 213 rub
https://aliexpress.com/item/item/ORICO-Free-Shipping-Mini-Bluetooth-4-0-Adapter-Black-BTA-403-BK/32384484446.html
Для телека Philips 7606 2013 г. Ugreen Bluetooth 4.2 ТВ передатчик
https://aliexpress.com/item/item/Ugreen-Bluetooth-4-2-3-5/32840887897.html
Ugreen брал за 1200, но недавно была цена 850 ±.
В теле Oneplus 5T — Aptx и выше есть, вплоть до Aptx HD.
Задержек звука нет ни по одному девайсу (фактически есть, но я их не замечаю и ухо у 95% заметить не сможет)
Автор -молоток!!!
шуи и свисток уже закуплен. Про третье узнал только здесь и закажу с получкой!)
Правда я ещё хочу aptx ресивер взять, к ресиверу подключить.
…
Не, похоже тоже не умеют…
— вытравить инвертированную блютуз иконку нужного размера на куске текстолита(платы)
— наклеить на кругляш оргстекла эпоксидкой
— сошлифовать текстолит — останется оргстекло с медной иконкой блютуз (на просвет)
— посеребрить медь (гуглите рецепты)
— защитить покрытие (лаком или эпоксидкой)
— вклеить на место
— поместить сзади синий светодиод
ИНДИКАТОР ГОТОВ
вариации:
— не серебрить, а зачернить медь
— наклеить сверху второй кругляш оргстекла
— вырезать иконку лезвием или лазером на черной бумаге
— вклеить бумагу между кругляшей оргстекла
И даже не стекло, а 1-2мм прозрачный пластик — проще будет потом выпиливать в нужный размер.
Тонировочную плёнку снаружи добавить, чтобы выключенный индикатор не было видно.
Тонировка, «стекло», медь, белый матовый рассеиватель, светодиод.
В отличие от других Bluetooth-ресиверов, August MR230 поддерживает технологии aptX и aptX-LL, сокращая задержку аудиосигнала до 40 мс и ниже — https://aliexpress.com/item/item/August-MR230-Bluetooth-Audio-Receiver-for-Sound-Systems-aptx-Bluetooth-4-1-Wireless-Music-Adaptor-for/32716816422.html
$30.48 — https://ru.aliexpress.com/item/Levn-aptX-HD-Bluetooth-3-5/32849513961.html
Из всего того, что удалось найти на Али пожалуй эти два самых интересных — как поддержкой технологий aptX-HD LL, так и автономностью… Конечно, есть еще дешевле и визуально похожи, но там в описании или в отзывах покупателей нет упоминаний о том, что может девайс.
Остаётся вопрос, будет ли работать при параллельном подключении питания по usb?
не было мыслей увеличить чувствительность приёмника использую направленную антенну?
ну чтобы по всей квартире или из двора гарантированно брало.
я и говорил увеличить чувствительность приёмника, а не мощность передатчика.
от себе довалю что с помощью FTDI и bitbang можно шить шить почти все что угодно, если достать правльный софт. например avr камни:
на ибее можно нати FT232R уже с разведееной SPI клодкой и преключателем 3в->5в
За прямые руки и голову на месте поставил бы с десяток плюсов.
Супер!
Каким железом Вы снифали бт траф? Можно ссылку?
Софт я отлично знаю :)
единственное что огорчает это зеленая не кошерная изолента :(
А так… ну его нафиг :-/
Есть у меня активные колонки с двумя тюльпанами и встроенным усилком. Если я поставлю данную микруху в корпус колонок, и выход 38-41 параллельно к выходам от тюльпанов- заиграет? И подскажите хороший преобразователь для данной сборки. Пока блок не смотрел, но сдается что на выходе там 24В
https://aliexpress.com/item/item/4-2-Bluetooth-Receiver-Board-CSR64215-Amplifers-Bluetooth-Module-Lossless-APT-X-Wireless-Bluetooth-Audio-DIY/32822120990.html
https://aliexpress.com/item/item/CSR-3-5mm-wireless-bluetooth-audio-receiver-DIY-board-MP3-music-computer-subwoofer-stereo-mini-USB/32825252493.html
Для реализации подобному автору проекта, но в Panasonic RX-ES23?
прошивку в этой микрухе кто-нибудь пробовал менять?
перестал реагировать на spi_pcm и после подачи напряжения мгновенно начинает мигать диодами в таком режиме.
а что за задержка, вы про сигнал enable?
куда копать хоть…
Сколхозил наушники на схожем модуле BTM625. Провозился я тоже знатно.
Запросил прошивку у производителя этих плат с выводом аналогового звука.
Сделал программатор на LPT, не прошивался. Сделал программатор на FTDI, тоже не прошивался. Там защита или еще что то.
Уже решил забить на это дело, пока эту статью не нашел.
CSRA64xxx and CSRA63xxx v2 Configuration Tool ну не попадалась она мне при поиске.
Заработало все сразу после настройки.
Впендюрил акб и этот модуль в Panasonic RP-HT010GU-H, звук прекрасный, но есть проблема с шумом при тишине и режимом энергосбережения. Буду демонтировать и встрою в колонку.
у меня ftdi не хочет коннектится, ошибки выдает. (
можете прошивкой поделиться?
Обязательно надо использовать резисторы 150 — 220 Ом, без них не контачит.
Прошивка для BTM625 с поддержкой аналогового вывода yadi.sk/d/Ra-kmzbe3SrFR8.
Сам не прошивал, не получилось. Прошивку дал производитель модулей. Делайте бэкап перед прошивкой. Ответственность вся на вас.
каждый блютус модуль будет установлен в колонку с усилителем звука, что бы слушать музыку на двух колонках без проводов!
друзья, кто может сталкивался или подскажет?
как можно сделать или купить готовое решение?: )
...
Дождался программатор. Пока ждал, появились сообщения о проблемах в настройке модуля.
Вчера соединил готовое устройство с программатором. При запуске CSRA64xxx and CSRA63xxx Configuration Tool второй версии появилось знакомое сообщение «The Configuration Set version from the XML Definition [Rom,10] does not match the Configuration Set in the Device or PSR file [Rom,8] you are attepting to load».
Я заглянул в файл ConfigSetDefinitions.xml. Действительно, вторая строка файла сообщает:
<ConfigSet Product=«Rom»
Version=«10»>
А моё устройство выдаёт версию 8, т.е. надо использовать первую версию CSRA64xxx and CSRA63xxx Configuration Tool.
При запуске первой версии всё успешно считалось (записывать пока не пробовал).
Если же, как у kazinag, с модуля считывается [Rom,15], то либо пользоваться PSTool (неудобно), либо рискнуть и в файле ConfigSetDefinitions.xml прописать
<ConfigSet Product=«Rom»
Version=«15»>
Может быть прокатит, а может быть получится кирпич.
Кстати, модуль, который мне пришёл отдельно, на обратной стороне печатной платы имеет маркировку BTM625 V1.2. Полагаю, что в готовом устройстве установлен модуль V1.0.
Update: переименовал устройство, включил HFP (HandsFree Profile), позвонил на телефон, принял вызов и… Результат достигнут. Теперь разговор идёт по Bluetooth (с выключенным HFP разговор шёл через микрофон и динамик телефона). Потыкал иголочкой по контактам, к которым подключается микрофон — фонит, всё как положено.
Я наступил вчера на грабли, которые только сегодня устранил.
Я искал возможность переназначить выход, который устанавливается в 1 при воспроизведении (мне это нужно для удобной разводки печатной платы, обычно это PIO6).
Для начала я решил проверить, можно ли это настроить из Configuration Tool. В разделе Input/Output я взял, да и назначил PIO17 на LED Enable. Хотел проверить, будет ли оно работать. После перезагрузки модуля я получил кирпич.
Вернул к жизни при помощи PSTool. Кстати, она сначала у меня не запускалась. Только после установки древнего BlueSuite 2.5.0 стала запускаться.
www.52bluetooth.com/csr/adk3.0/adkdocs/CS-306726-UGP3SinkConfigurationUserGuide.pdf
Я делаю так:
1. Открываю файл ConfigSetDefinitions.xml в браузере
2. Нахожу интересуемую опцию в CSRA64xxx and CSRA63xxx Configuration Tool
3. Нахожу, какой PSKEY отвечает за нее, адрес
4. В PDF документе открываю описание этого PSKEY
5. Вношу изменения через BlueCore Persistent Store (PSTool.exe). Через тот же PSTool удобно перезагрузить чип для применения изменений.
По рекомендации из каментов приобрел правильный FT232R для bitbang:
но у него не разведен RTS и я пока не знаю что делать.
Ночью заказал на Али USB-TTL как у ТС, но пока он дойдет…
Если найду в городе адаптер и подключу, то отпишусь.
RTS — это 3-я нога чипа. В моём дешёвом адаптере совпадает.
P.S.: а я снова окирпичил модуль. Снова через тот же PSKEY_USR16, будь он не ладен. Пока не могу восстановить. Через адаптер подключаюсь, по USB определяется (и даже PSTool по USB может настройки считывать), но не могу оживить. При подаче питания плавно раз в секунду загорается один светодиод 15 раз, потом так же другой.
В DUT режим входит. Пока я в тупике. Видимо, нужно ещё более свежий мануал искать от CSR.
Запустил программу, которая ругнулась на ROM моего модуля, у меня ROM 15. Поправил поле VERSION в ConfigSetDefinitions.xml с 10 на 15, перезапустил программу, считал данные, как ТС поправил выход с I2C на DAC, поменял название модуля, в профиле A2DP галочка на AAC уже стояла, записал данные, перещелкнул питание на модуле.
Все.
Меню File --> Dump
И, если не сложно, полученный PSR файл отправить мне на почту agrundic @ ya.ru.
Кстати, судя по значку устройства, HandsFree Profile у вас не активирован. Если позвонить на телефон, разговор пойдёт по bluetooth или через динамик телефона?
P.S. Прочитал Ваш предыдущий пост о BlueSuite 2.5.0, поставлю дома вечером
Я его восстановил путём полной замены содержимого SPI flash.
Нашёл прошивку на
том же сайте, где лежит datasheet на чип (tinyosshop.com)каком-то китайском сайте то ли изготовителя, то ли продавца этих плат (http://www.cisdo.cn/post/35.html, если по сайту полазить, можно найти ещё немного документации по всем подобным модулям, продающимся на Aliexpress). Эта прошивка имеет немного другую конфигурацию (в т.ч. другой номер PIO, который устанавливается при использовании внутреннего кодека), но я внёс минимально необходимые правки и добился вывода звука. Тем не менее, попрошу вас, baksovnet, по возможности выложить прошивку.Теперь о том, как залить прошивку. В пакете BlueSuite 2.6.2 имеется консольная утилита nvscmd.exe. При помощи неё можно снять дамп прошивки в формате XUV либо со всей флешки, либо с выбранных разделов (там два раздела, RO и PS), ею же и заливается новая прошивка.
Чтобы не потерять много времени перед конфигурированием модуля рекомендую:
1. Снять дамп флешки с таблицей разделов (nvscmd.exe dump backup.ptn) — на выходе будет три файла (вот их бы мне и заполучить).
2. Сохранить все настройки в файле PSR (при помощи PSTool — для удобочитаемости).
P.S.: заметил, что nvscmd.exe имеется и в CSRA64xxx and CSRA63xxx Tools.
старый линк нерабочий.
Если внимательно читать даташит, то в нём написано, что чип поддерживает работу только с одним аналоговым микрофоном. А в моём проекте используется 2. Решение простое. Поскольку микрофонный вход дифференциальный, вешаем первый микрофон на неинвертирующий вход, а второй — на инвертирующий (оба — через конденсаторы). Через резисторы на каждый микрофон подаём питание от MIC_BIAS. Проверено — работает.
1. Обратите внимание на значок устройства в телефоне. В моём телефоне изначально устройство отображалось в виде наушников, при этом разговор шёл через микрофон и динамик телефона. После того, как задействовал микрофон, значок стал выглядеть в виде гарнитуры с микрофоном.
2. В Configuration Tool проверьте, какие профили включены. Configuration Set\Bluetooth\Profiles\HFP. У меня изначально был только HSP, включил HFP 1.6, сохранил настройки, перезагрузил (не помню, может быть повторно выполнил сопряжение), появился микрофон.
3. Для проверки достаточно позвонить на телефон, убедиться, что разговор пошёл на устройство и потыкать иголочкой контакты LineA+\MicA+ или LineA-\MicA-. В другом телефоне кратковременно появится гул/треск (потом сработает алгоритм фильтрации помех и гул пропадёт).
Я сейчас не помню, какое напряжение на этом выходе. В голове крутится цифра 2В. Можно замерить вольтметром во время звонка. От того, что он был замкнут на землю, наверное, генератору этого напряжения ничего не будет, а вот насчёт +3,7 В есть сомнения.
Для проверки исправности микрофона, можно подать питание с той же литиевой батарейки через резистор того же номинала.
Я брал микрофоны из проводных гарнитур. Из трёх один был совсем тихий, даже усиление через Universal Front End не особо помогало.
Ensure that the device is connected and enabled.»
И еще, возможно ли включить эхоподавление и предусиление вместе?
Более детально смогу проверить только завтра.
Та же проблема
Отредактировал ConfigSetDefinitions.xml
на
Все получилось.
Перейти на ГитХаб
В архиве и будет нужный файл!
2. .NET Framework ругается всегда, если не обнаружено какое-либо USB SPI устройство.
3. Да, это нормально. Пин SPI используется для выбора режима — цифровой вывод PCM или обращение к шине SPI. Шина SPI читается без прерывания работы устройства.
Короче все отлично )))
В данный момент подключился без балансного усилителя, на прямую наушники относильно земли положительный левый канал и положительный правый, работает, звук есть, но есть пиканья, в общем помехи, вангую что это из-за того что я без диф усилителя юзаю его
Благодарен все, автору, очень помог его победить, спасибо огромное за статью :)
Если будет использоваться выход на маломощную низкоомную нагрузку (обычные наушники), существуют компактные усилители (headphone amplifier) без выходных конденсаторов. Например, TPA6132A2.
Пример готового решения: https://aliexpress.com/item/item/TPA6132/32839818437.html (я такое заказал и даже уже получил, но руки никак не дойдут соединить).
Випаял резистор R14 так как к нему идет дорожка от spi. Подпаял переменный резистор на 10Ком. К SPI контактам подпаял резисторы на 150ом. Есть идеи как побороть проблему? Может кто какой косяк заметит?
Чтобы заработало нужно на SPI_PCM и MFP подать логическую еденицу. Для этого есть контакт 1V8.
SPI_PCM собственно переводит чип в дебаг режим(собственно сам SPI), а MFP банально включает устройство.
на diyaudio_com пишут, что для CSR8645 семейства существует CSR86XX ConfigurationTool
www.dropbox.com/s/vtvg8g7qnk08pju/CSR86XX%20ConfigurationTool-3.0.70.zip?dl=0
P.S. не скачивал, не запускал
P.P.S. всегда перед изменениями снимай дамп
Недолго музыка играла (ц).
Сейчас сижу вливаю дамп, но что-то это длится подозрительно долго.
Предыстория
С год назад купил SW-HF59 из соседнего обзора. Через какое-то время модуль перестал подключаться. Перечитал всё, что было на эту тему, выпаял BT64X, попробовал подпаять jump-wire, оторвал пару пятаков, бросил затею. Поскольку модуль так и не заработал, заказал пару BTM625 и pogo pins. С доставкой всё обошлось в $13.56, что, в общем-то, сопоставимо с новым SW-HF59, но покупка нового гарантирует никакого праздника.
Поскольку в наших пе́рдях 0.75 магазинов на деревню, которые к тому же не работают в нерабочее время, резисторы решил использовать те, что были в запасах. В запасах было только ведро на 470Ом, но и они в финальном сетапе не были задействованы.
У bt-модуля присутствует вывод 1V8, который, по даташитам, надо использовать для замыкания кнопок. На основании этого я предположил, что SPI_EN и сама шина SPI тоже работает на 1V8. Сначала решил использовать преобразователь логических уровней, но после консультации со старшими товарищами, на FT232RL был найден вывод VCCIO, который задаёт опорный уровень интерфейсов. На модуле вывод обозначен как VCC и соединён с переключателем 3V3 <-> 5V.
Обладателям джамперного переключателя — снять джампер, обладателям скользящего переключателя… эм… заменить скользящий переключатель на джамперный, задача сведена к ранее решенной.
Итак, подключаем:
— BTM625.SPI_PCM и FT232RL.VCC к BTM625.1V8
— BTM625.SPI к FT232RL напрямую согласно инструкции
— BTM625.VCHG к 3V3 или что имеется в диапазоне от 2.7В до 4.2В
— землю к земле
— BTM625.MFB можно никуда не подключать, у меня работало и так, и так
Фото сетапа:
На фото подключение BT64X, который так и не заработал.
Pogo-pins припаяны к согнутым штырям от PLS-линейки.
Ардуйня присутствует, чтобы бортовым преобразователем давать 3.3В. Наверное, можно было бы и с FT232RL взять, но на eevblog_com рекомендуют использовать внешний источник. Там же настоятельно советуют для подключения использовать что-то более надёжное, чем jump-wire.
Про ПО.
Модуль оказался [ROM,15] и, естественно, с v2 Configuration Tool не заработал, только PSTool.
На сайте 52bluetooth_com лежит некий файл csra64215_ZKV_A11_467_20170330130244, в котором должен быть некий патч неизвестно к чему. Сайт огорожен великой китайской стеной и системой рейтингов, пользовательских групп и скачивания за монетки. За пределами Китая файл нигде не упоминается.
На сайте tinyosshop_com лежит v1 Configuration Tool ([ROM,8]) и совместимый с ним psr дамп. Если очень хочется, то можно загрузить в v1 совместимый дамп, менять интересующие настройки и смотреть как и какие байты меняются в psr файле.
К слову, при рабочем PSTool, консольные утилиты из того же самого пакета не заработали. Возможно наколеночная сборка влияет на частоту ошибок чтения, скорость обмена и т.д., к чему консольные приложения не приучены.
Всем добра,
и берегите глаза
Патч для v2 Configuration Tool, содержит в том числе новый ConfigSetDefinitions.xml с поддержкой [ROM,15]
Пишите, куда выложить
К сожалению, проверить не могу, один модуль уже запаял, второй, походу сжег по дороге
Я много полезного вычитал из документа BlueCore ADK Sink Configuration User Guide (находится по имени документа CS-306726-UGP3SinkConfigurationUserGuide.pdf)
P.S.: не дочитал, что в обзоре появилась ссылка. Спасибо!
ConfigSetDefinitions.xml подменил. Проверил опцию сохранения состояния PIO — работает. Больше особенностей или полезностей пока не обнаружил.
У меня с модулем случилась беда, что-то коротнуло в усилителе для наушников (построен на микросхеме и трёх конденсаторах). Теперь выключается, когда напряжение на аккумуляторе падает до 3,5 В. При этом в GAIA сообщается, что на аккумуляторе 2,2 В.
Подозрение на импульсный стабилизатор (SMPS). поскольку вместо 1,8 В выдает 2,7 В. Вероятно, дроссель на 4,7 мкГн. Остальные напряжения (3,3 В и 1,8 В) в норме.
В целом всё остальное работает нормально, в том числе при питании от шины USB.
Edifier'ы буду до лоу латенси апгрейживать. (+_+)
Где взять PSTools? Подозреваю что он находиться в составе какого-то пакета. Что можно почитать для работы с этим софтом?
Тоже хотел установить пин-код для подключения.
подаём (это только в моём случае, т.к. у меня в схеме используется инвертор; на голый модуль надо подавать высокий уровень на контакт MFB) низкий уровень сигнала на вход «EN» (замыкаем на землю)
что это за высокий и низкий уровень? если MFB еще имеется на модуле маем (BTM625/CSRA64215) то вот контакта EN там точно нет.
Подскажите нужно ли подать питание на модуль, чтобы он заработал и став виден на мобильном телефоне или нет. Всю схему собрал только вот в программе CSRA64 не отображается он. Не видит. Да и драйвера заменил все как в описании. Прошу помощи Спасибо
Подскажите пожалуйста Нужно ли включать модуль, то есть чтобы он стал видим через мобилу. VBAT я имею ввиду
Прочитав приобрел 2 версии модуля.
Один настраивается версией 1.0 второй 2.0.
Уже оснастил 2 муз.центра модулями.
В первом применил усилитель как у ТС, во втором TPA6132.
Всё отлично работает!
Единственное не хватает — возможности установки пин кода для подключения. (ИМХО)
P.S. После прочтения статьи остались некоторые вопросы, но в обсуждении нашлись все ответы.
С модулем ничего не делал лишнего, толлко подключил питание и аудио выход.
При поиске bluetooth устройств его нет. Led индикатор синий мигает медленно, а красный в четыре раза чаще.
Как его заставить работать? Что это за режим?
два часа разбирался что да как, но в итоге прошил и все работает