Модуль Bluetooth HC-04 на чипе BC417143B компании CSR
Компания CSR (Cambridge Silicon Radio) выпускает специальные чипы для устройств BlueTooth. Чипы судя по всему довольно недорогие, потому что господа китайцы предлагают миниатюрные (размером несколько больше симкарты) платки Bluetooth HC-04 на основе чипа BC417143B (семейство BlueCore4, см. [1]), которые в России можно купить всего лишь за 6.6 доллара (через dealextreme.com, см. [2] и [3]).

По умолчанию в память FLASH платки HC-04 записано ПО, которое позволяет связать по радио Bluetooth любой наладонник (или телефон, ноутбук и т. п.) со встраиваемой системой на основе микроконтроллера (робот, плата Arduino, любое устройство на микроконтроллере, имеющее TTL-порт UART RS-232). С помощью пакета CSR CASIRA BLUELAB SDK (в котором есть рабочие примеры программ Bluetooth) можно самому перепрограммировать модуль HC-04 и создавать свои собственные устройства Bluetooth. Программатор и полноценный аппаратный отладчик для модуля можно легко сделать самому, подключается к компьютеру он через порт LPT (см. [4]). В предлагаемой статье краткое описание инструментария разработки для чипов семейства BlueCore компании CSR, которое можно использовать для быстрого начала написания своих программ для модуля HC-04.
Подробно описывать технические характеристики модуля HC-04 не буду, так как все можно узнать по ссылкам с сайта dealextreme [2]. Напишу только о самом интересном. На борту у модуля стоит чип памяти на 1 мегабайт. Там записано управляющее firmware и все настройки (подробнее далее). На внешние 34 контакта модуля выведены:
— аппаратный UART, сигналы TXD, RXD, CTS и RTS.
— последовательный порт PCM (для цифрового ввода/вывода звука).
— два аналоговых входа/выхода AIO.
— ножка сброса RESET (её можно никуда не подключать).
— вход напряжения питания +3.3 вольта, ток потребления максимум 35 мА.
— интерфейс USB.
— интерфейс SPI, через который прошивается firmware и происходит отладка.
— 12 цифровых порта ввода/вывода PIO.
После подачи питания на модуль (3.3 вольта, максимум 35 мА) его можно обнаружить как беспроводное Bluetooth-устройство с профилем последовательного COM-порта. Т. е. на вашем наладоннике (телефоне, ноутбуке и проч.) появится последовательный порт, через который можно напрямую обмениваться данными через TTL-сигналы TX и RX стандартного порта RS-232. Firmware HC-04 позволяет AT-командами менять скорость передачи данных в широких пределах (от 1200 до 1382400 бод), причем изменения настройки скорости энергонезависимы, и сохраняются между выключениями питания. Таким образом, благодаря своим малым размерам и низкой цене (в России можно купить за $6.6) модуль HC-04 уже интересен как удобное готовое устройство для беспроводной связи.
Однако, как выяснилось, для модуля HC-04 можно самому писать программы, и записывать их в память чипа. Обзору этих возможностей посвящена основная часть статьи.
Инструментарий для разработки
Программатор придется делать самому, так как в России его купить невозможно, никто не продает. Радостно, что схема совсем простая, нет проблем собрать самому. Программатор представляет собой простейший интерфейс LPT SPI.

Через этот нехитрый программатор можно слить всю память FLASH модуля HC-04 в двоичные файлы (с помощью утилиты BlueFlash), посмотреть и отредактировать настройки модуля и программы (с помощью утилиты PSTool). Писать программы firmware и отлаживать (с помощью того же LPT SPI) можно в среде разработки xIDE. Имеются многочисленные примеры исходного кода различных устройств Bluetooth, необходимая документация на английском языке. Все эти возможности открываются на операционной системе Windows, если установить CSR CASIRA BLUELAB SDK (инсталляционный пакет занимает примерно 55 мегабайт, после установки занимает 310 мегабайт).
Примеры позволяют создавать устройства Bluetooth роли A (что-то типа мастера Bluetooth, которые сами находят устройства Bluetooth и подключаются к ним. Устройство роли A найти поиском беспроводных устройств невозможно) и роли B (slave устройства Bluetooth, которые можно найти поиском беспроводных устройств). С помощью примеров из CSR CASIRA BLUELAB SDK можно организовать обмен данными между двумя модулями HC-04, в этом случае одно должно реализовать роль A, а другое роль B (штатное firmware, которое записано в HC-04 на заводе, этого делать не позволяет, в нем реализована только роль B).
Хранилище настроек, Persistent Store
В память модуля HC-04 вместе с firmware записано множество различных параметров (такие, как адрес Bluetooth, имя устройства, выходная мощность передатчика и проч.), так называемых ключей. Это не просто особенность именно модуля HC-04, так принято в архитектуре BlueCore при программировании приложений. Все ключи могут быть просмотрены утилитой PSTool, при необходимости изменены (если Вы, конечно, понимаете, что делаете) и сохранены в файл *.psr, имеющий удобный текстовый формат. Дамп ключей делается довольно долго (у меня процесс занимал около 2 минут), при этом работа firmware не останавливается. Все ключи, хранящиеся в чипе, разделены по уровням хранения. Уровни привязаны к месту хранения настроек (FLASH, RAM, ROM), а также по времени создания (Implementation, Factory). Ключи каких уровней отображать, выбирают в меню Store (All (TIFR), Implementation Only (I), ROM Only ®, RAM Only (T), Factory Only (F), Not RAM (IFR)). Если один и тот же ключ одновременно определен на разных уровнях и с разными значениями, и выбрано показывать все уровни (All (TIFR)), то будет показано значение ключа, сохраненного на самом верхнем уровне. Значения ключей по умолчанию сохранены в ROM, самый низкий уровень. Ключи времени выполнения сохраняются на самом высоком уровне, Transient (RAM). Несколько уровней сразу обозначаются аббревиатурами из первых букв уровней, например IFR, TIFR. Подробнее об уровнях Persistent Store написано в документе blab-ug-008Pb_PSTool_User_Guide.pdf.
Библиотеки BlueCore и SDK компании CSR
- Foundation Libraries
- Support Libraries
- Profile Libraries
Support Libraries — обеспечивают поддержку соединений (RFCOMM, L2CAP и SCO). Заголовочные файлы, и файлы исходного кода находятся в папке C:\BlueLab\src\lib.
Profile Libraries — относятся к профилям BlueTooth. Профили – это что-то типа предназначения устройства Bluetooth (например, последовательный порт, аудиоустройство, источник и приемник файлов, интерфейс USB и т. д.). Заголовочные файлы, и файлы исходного кода находятся в папке C:\BlueLab\src\lib.
В чипе BlueCore имеется много разных интерфейсов, источников и приемников данных (Kalimba, PCM, SCO, RFCOMM, L2CAP, UART, Host, USB, HID, Region, File, Audio Notes), которые с помощью библиотек могут достаточно просто соединяться друг стругом и обмениваться данными через потоки (streams). Некоторые источники и приемники данных (Kalimba) относятся к ядрам BlueCore, имеющим на борту DSP. Чип BC417143B, установленный на платке HC-04, относится к семейству BlueCore4 и DSP у него нет. Подробности см. в документе CS-110275-UGP1_Implementing_Streams_in_BlueLab.pdf.
Для того, чтобы начать использовать библиотеку, нужно подключить директивой #include нужный .h файл и добавить в настройки проекта имя нужной библиотеки Project Properties -> Configuration Properties -> Build System -> Libraries — в поле ввода через запятую указаны имена нужных библиотек (без расширения файла). Библитеки можно пересобрать (процесс довольно долгий!) путем запуска ярлычков BlueLab 41 -> Rebuild -> VM libraries и DSP libraries.
Краткое описание xIDE и простейшего приложения
Проекты устройств BlueTooth, которые может найти хост через поиск, имеют суффикс _b (например spp_dev_b). Проекты, которые сами работают как хост, т. е. могут подключить к себе другие устройства BlueTooth, имеют суффикс _a (например spp_dev_a). Устройства с суффиксом _a нельзя найти хостом через поиск BlueTooth устройств.
Чтобы запустить проект через xIDE, нужно зайти в папку проекта (все проекты демонстрационных примеров находятся в папке C:\BlueLab41\apps\examples) и двойным щелчком запустить файл *.xiw (здесь хранятся настройки Workspace, настройки проекта хранятся в файле *.xip). Автоматически запустится среда разработки xIDE, в которой можно просматривать исходный код проекта и запустить код на компиляцию и отладку. При запуске отладки через LPT SPI автоматически считывается тип чипа, и проект компилируется под него. После компиляции программа автоматически заливается во внешнюю FLASH-память, подключенную к процессору CSR (напомню, что для модулей BlueTooth HC-04 это процессор BC417143B-IQN-E4 (BlueCore4-External device)), и программа запускается на выполнение. После останова отладки, если выключить и снова включить питание, то чип окажется перезаписанным новой скомпилированной программой, которая запустится и начнет работу. Грузится обычный проект а память чипа около минуты (а что Вы хотели от порта LPT?).
Можно самому с нуля написать для HC-04 простейшее приложение, мигающее светодиодом. Для этого нужно запустить xIDE, выбрать Project -> New. указать тип проекта Bluelab –> Blank VM Project, ввести любое имя проекта (например MyFirstBluelab), выбрать папку для месторасположения проекта (все сделано по аналогии, как в Visual Studio) и нажать OK. Затем нужно создать файл модуля main.c, и ввести туда текст:
#include
#include#define LED_1 (1<<1) typedef struct
TaskData task;
uint16 change;
> ToggleTask;static void MyHandler (Task t, MessageId id, Message payload)
uint16 change = ((ToggleTask *) t)-> change;
PioSet(change, PioGet() ^ change);
MessageSendLater (t, 0, 0, 500);
>static ToggleTask toggle = < < MyHandler >, LED_1 >;
int main ( void )
PioSetDir (LED_1, ~0);
MessageSend(&toggle.task, 0, 0);
MessageLoop();
return 0;
>
Коротко описание листинга (подробности см. в файле CS-110344-UGP2_WritingBlueCoreApplication.pdf):
— в блоке include подключаются заголовки для поддержки сообщений и портов ввода/вывода.
— оператор define задает ножку светодиода, которой будем управлять.
— структура ToggleTask задает тип для хранилища данных задачи приложения toggle.
— подпрограмма MyHandler – обработчик сообщения, который выполняет управление светодиодом. Алгоритм очень простой. Из переданной структуры задачи t считывается значение параметра change. Там находится маска светодиода LED_1, и параметр change здесь применен просто как демонстрация хранения и передачи данных запущенной задачи. Вызовы процедур PioSet и PioGet обеспечивают установку светодиода в противоположное состояние (если он был выключен, то включается, и наоборот), значение переменной change используется как маска. Процедура MessageSendLater отправляет новое сообщение задаче t через 500 мс.
— декларация статической переменной toggle выделяет память под переменную структуры ToggleTask и присваивает значения её полям task и change.
— в коде процедуры main PioSetDir настраивает PIO1 (LED_1) как выход.
— MessageSend отправляет первоначальное сообщение, которое получит обработчик MyHandler.
— вызов процедуры MessageLoop запускает доставку сообщений между задачами. В MessageLoop выполнение зацикливается, и до оператора return 0 управление никогда не доходит.
Теперь если нажать F7, то проект скомпилируется. Если нажать F5, то программа автоматически зальется в память чипа и запустится на выполнение (при условии, что у Вас подключены модуль LPT SPI и к нему подключен модуль HC-04), и светодиод на ножке PIO1 начнет мигать с частотой 1 Гц. При этом доступна полноценная отладка – по шагам, с точками останова, с просмотром переменных, памяти и регистров процессора. Точки останова ставятся в коде как обычно, щелчком мыши слева от текста кода (появляется коричневый кружок напротив строки, где задана точка останова) – также, как в Visual Studio. Подробнее про отладку можно прочитать в документе CS-101500-UGP5_BlueLab xIDEuser guide.pdf.

Общая структура приложения BlueLab
Приложение firmware основывается на задачах (task). Каждая задача выполняет определенную, возложенную на неё функцию. Все задачи выполняются как отдельные логические потоки, которые не блокируют друг друга. Планировщик задач не вытесняющий (not preemptive), поэтому важно, чтобы все обработчики сообщений выполнялись до завершения, и не зацикливались навсегда, иначе работа остальных задач нарушится. Задачи обмениваются друг с другом информацией через сообщения (message). Во все задачи, которые создает приложение, входит также особая задача верхнего уровня, так называемая задача приложения (application task). Эта задача отвечает на сообщения и управляет общим поведением приложения. Сложные приложения могут содержать несколько application task.
Сообщения (messages) создаются и передаются в следующей форме:
Task t, MessageId id, Message payload
Task t указывает на получателя сообщения, это указатель на принимающую задачу, например &AppTask.
MessageId id идентифицирует сообщение. Принята следующая система нумерации сообщений:
— сообщение, которое задача отправляет сама себе, начинается с 0x00.
— системные сообщения начинаются с 0x8000.
— сообщения, отправленные задаче отдельной библиотекой профиля, начинается с базы 0x7000, и соощения библиотеки SPP начинаются с 0x6f00.
Message payload — полезная нагрузка (данные), передаваемая в сообщении. Иногда в сообщении нет полезной нагрузки, когда достаточно только идентификатора сообщения. В этом случае Message payload равна NULL.
Имеется набор функций для упрощения отправки сообщений, см. message.h и соответствующую документацию. Обработчик сообщений для каждой задачи должен обработать все адресованные ему сообщения. Обычной практикой разработчика является разработка кода обработки сообщений, которые принимает задача приложения (application task). Не нужно писать обработчики для задач профиля (profile tasks) и задач поддержки (support tasks), инициализированных из библиотек BlueLab или SDK. Обработчики этих задач уже встроены в библиотеки и выбираются после вызова соответствующей функции Init. Приложение application task должно обработать сообщения, поступившие из библиотек, которые оно инициализировало. Таблица системных сообщений приведена в файле CS-110344-UGP2_WritingBlueCoreApplication.pdf, Appendix A System Messages. Таблица баз (первый байт значения ID сообщения) сообщений библиотек приведена в том же файле, Appendix B Library Message Bases. Во время отладки через дебаггер (LPT SPI или USB SPI) сообщения появляются в окне Output, закладка Messages.
Задачи и сообщения позволяют разработчику приложения разбить весь нужный функционал на отдельные модули, работающие как разные задачи, при этом нужно обеспечить обмен сообщениями между задачами. Все сообщения ставятся в очередь и обрабатываются (передаются) в порядке поступления. Планировщик смотрит на первое сообщение в очереди и по если это нужно, то передает это сообщение как параметры соответствующему обработчику задачи. После того, как сообщение передано обработчику, функция MessageLoop освобождает payload переданного сообщения и переходит к обработке следующего сообщения в очереди, или ждет появления в очереди нового сообщения.
Можно выводить отладочные сообщения из кода программы оператором printf. В этом случае в окне Output открывается закладка Print Channel 0, и туда впечатывается вывод printf. Вывод printf работает в реальном времени во время работы firmware через дебаггер на LPT SPI. В реальном приложении все операторы printf должны быть убраны, иначе приложение без отладчика повиснет и не будет работать (из-за переполнения стека). Для удаления отладочного вывода применяют специальный токен времени компиляции DEBUG_PRINT_ENABLED и операторы условной компиляции #ifdef.
#define DEBUG_PRINT_ENABLED 1 //разрешение вывода printf
DEBUG_PRINT_ENABLED можно также определить в свойствах проекта, Build System -> Define symbols. Пример использования DEBUG_PRINT_ENABLED имеется в проектах примеров приложений C:\BlueLab41\apps\examples\.
Есть несколько проблем, с которыми пришлось столкнуться при экспериментировании с xIDE. Если программа в чип прошивается, но отладка запускаться не хочет с ошибкой «The app file read from disk appears to be invalid.», то это может произойти, когда до папки проекта сложный путь, имеющий в составе пробелы и/или русские буквы. Например, Ваш проект размещается в папке c:\Documents and Settings\User\Admin\Мои документы\LEDFlashing\. Поменяйте размещение проекта на более простое, например c:\temp\LEDFlashing, и отладчик запустится нормально. С русификацией у xIDE есть определенные проблемы — текст, сохраненный в коде на русском языке, при повторном открытии отображается с кракозябрами, поэтому писать комментарии на русском языке в коде не получится. Иногда сильно мешает компиляции антивирус Касперского (процесс проходит очень медленно). Целесообразно настроить исключение проверки объектов на путь C:\BlueLab41\tools\*.exe. Настройки вступят в силу почему-то только после перезагрузки Windows.

Словарик
HCI Host Controller Interface
LC Link Controller
xIDE среда программирования для процессоров BlueCore от компании CSR
VM Virtual Machine — насколько я понял, это выполнение функций процессора хоста на встроенном RISC-микропроцессоре. Есть Classic VM, и есть Native VM, различающиеся архитектурой и скоростью выполнения. См. CS-122636-AN-1classicvsNative.pdf.
VM API программный интерфейс приложений, не относящийся к DSP.
BlueCore название линейки чипов Bluetooth компании CSR. В платке HC-04 применяется чип BlueCore4.
payload полезная нагрузка. В контексте передачи сообщений — данные, переданные в сообщении.
application task задача приложения — обязательный элемент любой программы firmware BlueCore.
preemptive, pre-emptive в данном контексте вытесняющая многозадачность. Для каждой задачи выделяется лимитирванный промежуток времени выполнения, что гарантирует невозможность блокировки выполнения всех задач, если одна из задач заблокируется (например, войдет в бесконечный цикл).
not preemptive в данном контексте означает многозадачность, когда задачи выполняются друг за другом, и каждая задача выполняется по порядку от начала до конца. В этом случае блокировка в одной задаче может остановить выполнение всех задач. Именно такой сценарий выполнения задач используется в библиотеках BlueCore и SDK компании CSR.
L2CAP Logical Link Control and Adaptation Protocol
Persistent Store хранилище данных установок в виде записей (ключей)
TIFR Transient (RAM), Implementation, Factory, ROM — места размещения Persistent Store, означающие все возможные варианты размещения. Ключи, установленные во время производства изделия, находятся в областях Factory и Implementation, ключи, которые образуются при работе изделия, размещаются в Transient (RAM).
IFR Implementation, Factory, ROM — места размещения Persistent Store, не использующие RAM.
BCSP BlueCore Serial Protocol — протокол, через который общаются с чипом BlueCore все средства отладки (на физическом уровне это происходит через интерфейс SPI чипа BlueCore).
Kalimba DSP — в некоторых чипах BlueCore (BlueCore3 и BlueCore5) имеется DSP. К сожалению, в процессоре BC417143B модуля HC-04 отсутствует DSP. Для работы с Kalimba DSP имеются специальное API и соответствующая библиотека.
Csr bluetooth chip как подключить наушники
Навеяно темой Улучшение звука Bluetooth на наушниках без aptX и LDAC. Решил создать параллельный способ решения проблемы, но со стороны наушников. Сразу скажу способ чуть менее тривиальный, требует некоторых технических навыков, внимательности и оборудования. Ссылки на софт и сопутствующий материал я приложу в конце статьи.
Внимание: описанные ниже манипуляции Вы проводите на свой страх и риск, велик шанс окирпичить свои наушники. Одни из двух имеющихся у меня я по глупости окирпичил, как этого избежать я расскажу.
Так же общая рекомендация: старайтесь как можно меньше лапать чипы на плате наушников, особенно маленькую микросхему SPI FLASH памяти, которая очень боится статики как и любая память, по той же причине лучше предварительно облапать батарею дабы снять с себя заряд и не сидеть в синтетическом махровом халате, шерстяном свитере, а так же убрать подальше кошку.
Немного предистории.
Однажды я увидел недорогие блютуз наушники с неплохими характеристиками (20 часов прослушивания, блютуз 4.1 и неплохое звучание на мой не искушенный слух). Так я стал владельцем Sven B350MV, позже я их слегка разобрал ради интереса и посмотрел что там за чип, а так же бегло погуглил про него инфу, это был CSR8635, убедился что он поддерживает AAC, а не только стандартный SBC и успокоился. Еще позже я решил взять себе недорогие же блютуз затычки, и прослушал несколько вариантов за ту же цену взял наиболее понравившиеся по звуку Sven SEB-B265MV, к слову аккум у них очень дохлый, садится за 3-4 часа, заряжается за 5-10 минут(буквально). Далее чисто случайно на компьютере обнаружил что у меня обе пары наушников работают в SBC, хотя аппаратная поддержка ААС в чипе есть. Думал дело в компьютере, но распарсив дамп протокола блютуз во время handshake, когда устройства сообщает о себе инфу во время соединения и поддерживаемые протоколы, понял что наушники действительно умеют только SBC. Так и родилась идея поддержку AAC в них включить.
Итак, нам понадобится:
- недорогой программатор на микросхеме FTDI FT232R/RL, подойдет китайский клон за 100руб
- (опционально) преобразователь уровней, я использовал на микросхеме TXS0108E за 40руб
- (опционально) резисторы (я использовал на 10кОм), если не используете преобразователь.
- кастомный драйвер csr-spi-ftdi с гитхаба
- официальный софт CSR (ныне квалком) для чипов
- паяльник естественно
- (опционально) немного МГТФ провода
- (опционально) breadboard
- и самое главное — НЕ спешить
Если вы увлекаетесь Arduino, то скорее всего все выше перечисленное у вас уже есть. В противном случае все можно заказать на Алике по ключевым словам FT232RL для программатора и TXS0108E для преобразователя уровней, либо в местных радио/ардуино магазинах, если не хотите ждать.
Кастомный драйвер можно скачать тут: https://github.com/lorf/csr-spi-ftdi/releases, там же есть подробная инструкция по установке и командам.
Что касается по драйверу, установка его заключается в подмене файла (библиотеки драйвера) в папке уже установленной программы BlueSuite (и других) и выглядит следующим образом:
- Установить BlueSuit или другой нужный софт
- Войти в папку установленной программы (например C:\Program Files (x86)\CSR\BlueSuite 2.6.0\) и сделать бекап(переименовать) файл usbspi.dll
- Скопировать скачанный файл из архива lib-win32/usbspi.dll в папку программы
- Скопировать кастомный usbspi.dll в папку программы
- Подключить программатор FR232 к компьютеру
- Скачать и запустить программу Zadig с http://zadig.akeo.ie/. В меню Options выбрать List all devices, выбрать «FT232R USB UART» или похожий, выбрать libusbK драйвер в окошке стрелочками вверх/вниз и нажать кнопку «Replace driver» или «Install driver». Это подменит драйвер FTDI программатора на совместимый с библиотекой libusb на который использует наш скачанный драйвер.




Все, можно запускать программы.
Далее железная часть.
Итак после чтения даташитов по CSR8635 (подозреваю и других) приятным сюрпризом было требование производителя распаивать и выводить пятки интерфейса SPI под дебаг/программатор и SVEN удивительно точно этому требованию следуют и даже подписывают назначение пинов, иначе я бы навряд ли решился на это, у меня совсем не руки хирурга. Так что наша задача тривиальна — подпаяться к этим площадкам:




Кстати слева, в B265 c МГТФ проводами, один провод припаян не правильно.
Далее нам надо подключить это все к программатору и тут есть несколько нюансов.
Во-первых: дело в том что наш программатор работает с уровнями логики 5в и 3.3в (устанавливается перемычкой), а наш чип с 1.8в, для этого нам и нужен двусторонний преобразования уровней, однако в даташите заявлена толерантность к максимальному напряжению 3.6в, следовательно вы можете на свой страх и риск выставить 3.3в на FTDI и подключить все через 10кОм резисторы. Судя по ветке переписки на гитхабе у людей все получилось успешно здесь и здесь.
Во-вторых: если у вас контрафактный чип RS232RL (как у меня именно они стоят в дешевых модулях, оригинальный стоит -6), то там пин DSR подписан как RSD.
Немного матчасти по пинам.
Непосредственно к протоколу SPI относится пина: MOSI/MO и MISO/MI для данных, CLK задает тактирование, CS/CSB — выбор чипа, т.к. позволяет подключать несколько slave чипов.
SPI_PCM(SPI/PCM) — нужен для перевода чипа в режим прошивки, для этого надо подать на него высокий уровень (подключить к питанию (+) через резистор)
GND — это земля (минус), она должна быть общей для наушников, программатора и преобразователя уровней (если есть).
Земля может быть не разведена на площадке, тогда ее стоит взять из usb гнезда зарядки, вся металлическая часть разъемов — это земля. Я же взял землю через платку питания макетной платы с USB к которой подключил наушники:

Схема подключения выглядит следующим образом:
CSR8635 — FT232
GND — GND
SPI_PCM — через резистор 10кОм +1v8 или 3v3 на свой страх и риск
MOSI — RI#
MISO — DSR#
CLK — RTS#
CSB — DTR# (RSD#)
Здесь я добавлю схему подключения если вы используете преобразователь логических уровней как я и особенности подключения преобразователя на микросхеме TXS0108E (как у меня).
Общим для всех преобразователей является необходимым наличие нужных опорных напряжений с обоих сторон, чтобы преобразователь «понимал» с какого на какое напряжение производить преобразования сигналов. Так же есть требования по сторонам для высокого и низкого напряжений будь это простой транзисторный преобразователь или на базе микросхемы. Обычно эти пины подписаны как HV (high voltage или высокое напряжение) и LV (от low voltage или низкое напряжение) или LB и LA для моего преобразователя. Если у нас происходит преобразование с 5в на 1.8в соответственно +5В подключаем к HV и +1.8В к LV. Для TXS0108E это будет +5в на LB и 1.8в для LA. важно что VCCA ≤ VCCB, поесть напряжение на стороне А (L) должно быть меньше либо равно напряжения на стороне B (H). Так же для TXS0108E как следует из даташита нужно задать рабочий режим отдельным пином, подписанным OE (output-enable), для этого его необходимо подключить к выводу LA.
Итого: подключаем напряжение +3.3в или 5в (с преобразователем не принципиально) к LB. GND к соответственно GND на плате преобразователя и подключаете все остальные нужные выводы программатора со схемы выше к стороне B к пинам B1-B8 как удобно, я подключил по-порядку B1-B4 (cм. фото). Соответственно B1-Bx (H1-Hx) будут соответствовать выводам на другой стороне A1-Ax (L1-Lx). Пин OE подключаем к LA (у транзисторных его нет).

Далее нам необходимо задать опорное напряжения для стороны A(L). Если у вас не выведено 1v8 на площадку платы наушников можно сделать его самому через простой резисторный делитель. Самый простой вариант как сделал я — это взял 3.3в с платы программатора (пин подписан) и через делитель из двух 10кОм резисторов получил 3.3/2 = 1.65в, это меньше нужных 1.8в, но есть некоторых диапазон напряжений, которых достаточно и это не большая допустимая погрешность, подробнее можно посмотреть в даташите по CSR.
Делитель для /2 сделать просто, это два последовательно соединенных резистора одинакового номинала, один из которых соединен с + другой с – (GND), в точке соединения резисторов будет половинное напряжение источника:
Важно использовать резисторы на большое сопротивление порядка килоом, иначе нагрузка на источник будет слишком большой, я использовал стандартные 10кОм.
Если хотите более точно подобрать напряжение — можно воспользоваться калькуляторами:
раз, два или генератором номиналов от TI.
После того как разберетесь с опорным напряжением соедините соответствующие выводы стороны А(L) с пинами наушников, НО предварительно желательно проверить все неоднократно и замерить напряжения мультиметром. Ни в коем случае на контроллер наушников не должно приходить напряжение выше 3.6В иначе он сразу же сгорит.
После того как все подключили и 10 раз перепроверили можно подключать программатор к компьютеру. Если у вас 1.8 вольт взято с платы наушников, их стоит предварительно включить иначе контроллер не подаст напряжение. Далее можно запустить PSTool из комплекта BlueSuite.
Софтовая часть и прошивка
Внимание: прежде чем вносить любые модификации в прошивку НАСТОЯТЕЛЬНО рекомендую внимательно прочитать этот раздел до конца и выделенные области, особенно раздел по порядку прошивки иначе гарантировано окирпичите устройство.
Так же работайте с программами осторожно, внимательно читайте меню, не совершайте лишних кликов, это сервисные утилиты, у них нет абсолютно никаких предупреждений перед действиями, перед записью и удалением настроек, программа не будет вас 10 раз спрашивать уверенны ли вы что хотите окирпичить устройство, а сделает это молча. Так же программы любят по долгу задумываться и казаться зависшими, винда неоднократно предложит закрыть их принудительно, но обычно это не так и в этот момент она может работать с флешем, поэтому не стоит прерывать их работу. Так же НЕ стоит переписывать весь флешь целиком, а менять настройки атомарно
Здесь расскажу как модифицировать прошивку с помощью официальных утилит, а так же порядок, т.к. одна из утилит окирпичивает устройство гарантированно, но без нее не обойтись.
Начнем с PSTool.
Запустите PSTool и если манипуляция с драйверами проведена успешно получите такое окно выбора интерфейса:

Если при выборе SPI BCCMD справа в поле будет что-то типо «No FTDI device found» значит либо не подключен программатор либо что-то заменили не правильно. Так же автор драйвера говорит что с USB3 порой FTDI микросхема работает не стабильно, у меня в ноутбуке только USB 3.0, но все благополучно завелось. Вы же по возможности используйте USB2.
Если программатор определился верно — жмем ОК и должно появится окно с бегунком прогресс бара, программа скачивает конфиг нашего устройства:

Если же на этом этапе возникла ошибка — это уже говорит о том, что что-то подключили не правильно, советую перепроверить всю схему подключения и замерить напряжения. Предварительно так же советую зарядить наушники, иногда проблема возникает из-за банальной нехватки по питанию, т.к. по нашей схеме подключения мы просто обеспечиваем сигналы, но не питание чипа. Еще раз советую проверить что земля (GND) соединена со всеми устройствами между собой (наушники — преобразователь — FTDI программатор).
Так же у меня не получалось установить связь с чипом на этом этапе из-за не правильной распайки, у меня (как видно на фотке) было 6 контактов, и на против CLK их было два, вначале я напаял на ближний и это после неоднократный попыток установить связь я решил открыть распаковку микросхемы и прозвонить все контакты, оказалось CLK — это дальняя площадка у края, после перепайки все заработало.
Если все прошло успешно вы увидите следующее окно:


окно программы заполнится полями настроек, вручную там редактировать не удобно, все настройки представлены строками в 16-ричном формате, для этого воспользуемся другой утилитой, а пока мы сохраним дамп настроек. Для этого заходим в пункт File и выбираем Dump а так же имя место сохранениям дампа:
Лучше делать это в мои документы во избежание проблем с правами админа и тд.
После этого опять появится ползунок неопределенного прогресса и прога надолго задумается, если попытаться кликнуть по ней то винда скажет что она не отвечает, не закрывайте ее, жмите «ожидание завершения»(или как там). Что прогресс идет можно убедится открыв этот файл в неблокирующем текстовом редакторе, например Sublime text и убедится что строчки добавляются в файл. Полный размер файла дампа занимает примерно 20-30кб и содержит около 800-900 строк. Как только программа закончит создавать дамп настроек, она никак не уведомит об этом, просто пропадет окно прогрессбара. Сделайте копию оригинального файла настроек и сохраните. С текущим мы будем работать.
Так же желательно сделать дамп EEPROM через консольные утилиты. Для этого открываем командную строку от админа: ПКМ по Пуск и выбираем Windows PowerShell(администратор):

Далее переходим в папку с пакетом программ BlueSuite:
Настройка Bluetooth на компьютере (ПК). Подключение Bluetooth адаптера и установка драйвера
В этой статье я постараюсь подробно объяснить, что делать в ситуации, когда у вас стационарный компьютер и появилась необходимость подключить к нему какое-то устройство по Bluetooth. Например: беспроводные наушники, мышку, клавиатуру, акустическую систему, джойстик, телефон, планшета и т. д. Таких устройств очень много, и без Bluetooth на компьютере сейчас ну никак. К тому же, такое подключение позволяет нам избавится от большого количества проводов.
Как вы уже наверное знаете, в обычных стационарных компьютерах (в системных блоках) встроенного Bluetooth как правило нет. За исключением двух случаев: установлен внутренний PCI приемник (внешний USB) , или у вас крутая материнская плата со встроенным беспроводным модулем. Но их очень мало, так что вряд ли. Можете посмотреть характеристики своей материнской платы. Ну и если бы в вашем ПК был Bluetooth, то вы бы об этом скорее всего уже знали. Был бы соответствующий значок в трее, или адаптер в диспетчере устройств (возможно, в виде неизвестного устройства – когда драйвер не установлен) .
Если у вас ноутбук, то эта статья не для вас. Смотрите статью как включить Bluetooth на ноутбуке. А если у вас Windows 10, то лучше эту: как включить и настроить Bluetooth на ноутбуке с Windows 10.
Чтобы подключать к компьютеру устройства по Bluetooth, нужно купить и установить в компьютер Bluetooth-адаптер. Обычно, это адаптеры которые подключаются в USB-порт. У меня такой, модель Grand-X BT40G. Выглядит вот так:

Есть еще PCI адаптеры, они устанавливаются внутри корпуса системного блока. Но они не очень популярные. На выборе адаптера я останавливаться не буду, так как писал об этом в отдельной статье как выбрать Bluetooth адаптер для компьютера. Их очень много на рынке. Есть как дешевые, так и дорогие модели. С Китая вообще можно заказать за три копейки. Но если вы планируете часто использовать беспроводное соединение, подключать по Bluetooth какие-то серьезные устройства, типа наушников, джойстиков, то на адаптере лучше не экономить.
Если у вас уже есть адаптер – сейчас будем настраивать. Если нет – читайте статью по ссылке выше, выбирайте, покупайте и возвращайтесь на эту страницу.
Я разделю эту статью на две части: сначала покажу как подключить Bluetooth адаптер к компьютеру на Windows 10, настроить его, при необходимости найти и установить драйвер, и подключить какое-то устройство. А во второй части мы все это сделаем на ПК с установленной Windows 7.
У меня сейчас нет возможности продемонстрировать все это на Windows 8 и Windows 8.1, но от более старой и новой версии этой операционной системы (я имею введу семерку и десятку) там отличий не много.
В любом случае, сначала подключаем Bluetooth адаптер к компьютеру.

После этого переходим к установке драйверов и настройке.
Bluetooth на ПК с Windows 10: подключение, драйвера, настройка
Windows 10 в этом плане вообще крутая система. Почему? Да потому что практически во всех случаях, независимо от того какой у вас адаптер, после подключения все драйвера будут установлены автоматически, а в трее появится синяя иконка Bluetooth. И сразу можно подключать необходимые устройства.

В диспетчере устройств у меня сразу появился раздел «Bluetooth» и сам адаптер. Если адаптер не будет опознан и будет отображаться как неизвестное устройство (другое устройство) , то придется ставить драйвера вручную. Как это делать на примере Windows 7, можете посмотреть в конце этой статьи.

А чтобы подключить наушники, геймпад, мышку, клавиатуру, или другое Bluetooth-устройство к компьютеру, зайдите в «Параметры» в раздел «Устройства». Или нажав на иконку в трее и выберите «Добавление устройства Bluetooth».

Нажимаем на «Добавление Bluetooth или другого устройства».

Дальше выбираем «Bluetooth». Компьютер начнет искать доступные для подключения устройства. Наше устройство должно быть в режиме поиска. В моем случае, это наушники. Там есть отдельная кнопка. Когда они в режиме подключения, то на них мигает индикатор. Когда компьютер обнаружит наше устройство, просто выбираем его и подключаемся.

А если вы хотите подключить к компьютеру смартфон, или планшет, то на самом мобильном устройстве нужно будет подтвердить подключение (создание пары) .

О подключении беспроводных наушников я более подробно писал в статье как подключить Bluetooth наушники к компьютеру или ноутбуку на Windows 10.
Таким образом можно подключить абсолютно любое Блютуз-устройство.
Настройка Bluetooth адаптера в Windows 7 и подключение устройств к компьютеру
В Windows XP, Windows 7 и Windows 8 после подключения адаптера драйвер скорее всего придется устанавливать автоматически. Но не всегда. В моем случае Windows 7 сама поставила драйвер на мой USB Bluetooth адаптер Grand-X BT40G. Сразу появился значок Блютуз.

Вот скриншот с диспетчера устройств.

Если система не смогла опознать устройство и установить его, значок не появился, то нужно устанавливать драйвер. Как это сделать, я покажу ниже. А сейчас давайте подключим какое-то устройство по Bluetooth к компьютеру с установленной Windows 7.
Нажмите на иконку и выберите «Добавить устройство».

Откроется окно, котором будут отображаться все найденные компьютером устройства. Которые на данный момент находятся недалеко от компьютера и доступны для подключения. Выбираем наше устройство и начнется процесс подключения. Я снова подключал Bluetooth гарнитуру (наушники с микрофоном) . По которым можно и в Скайпе поговорить.

Когда появится сообщение «Это устройство добавлено на компьютер», его можно использовать. Точно так же подключаются беспроводные мышки (по Блютуз) , клавиатуры, телефоны и другие устройства.
В случае с наушниками, возможно еще понадобится установить их как устройство воспроизведения по умолчанию. Это можно сделать в настройках устройств воспроизведения (нажав правой кнопкой мыши на иконку звука в трее) .
Драйвер для Bluetooth адаптера: поиск и установка
Даже не важно, какая система установлена на вашем компьютере, это может быть как Windows XP, так и Windows 10. Но если она не смогла автоматически настроить подключенный Bluetooth адаптер, то придется нам вручную искать и устанавливать нужный драйвер. Есть как минимум три способа:
- Установить драйвер с диска, который скорее всего был в комплекте.
Там может быть как драйвер, так и утилита (программа) для управления некоторыми функциями самого адаптера. В моем случае, это CSR Harmony. Мой адаптер Grand-X BT40G построен на CSR чипе. - Если у вас Bluetooth адаптер какого-то популярного производителя, то можно зайти на официальный сайт это производителя, найти страничку с этим устройством и там уже скачать драйвер. Он должен там быть. Но не всегда. Я вот проверил, на сайте Grand-X в разделе «Файлы» ничего нет. А вот для адаптера ASUS USB-BT400 на официальном сайте есть драйвера и утилита.
Это для примера. - Поиск драйвера по ИД оборудования неопознанного устройства. Не самый простой вариант, поэтому покажу все максимально подробно.
Когда система не может установить драйвер на какое-то устройство, то оно находится в диспетчере устройств в разделе «Другие устройства» с желтым значком. Как там будет отображаться (называться) именно ваш Блютуз адаптер – сложно сказать. Если у вас там раньше не было неизвестных устройств, то определить его будет не сложно (он будет один) .
У меня это что-то типа CSR 8510 A10 (похоже это чип, на котором построен адаптер) . Нажимаем на это устройство правой кнопкой мыши и выбираем «Свойства». Дальше переходим на вкладку «Сведения», в выпадающем меню ставим «ИД Оборудования» и копируем первую строчку.

Открываем сайт DevID.info, вставляем скопированную строчку в строку поиска и удаляем все лишнее, чтоб осталось только значение VID и PID. Можете посмотреть какое у меня было значение изначально (скриншот выше) , и по какому я выполнил поиск (скриншот ниже) .
Для начала приобуем загрузить первый драйвер, который появился в результатах поиска. Нужно нажать на иконку дискеты. Обратите внимание на операционную систему, для которой подходит этот драйвер.

Нажимаем на ссылку «Оригинальный файл».

Проходим проверку «Я не робот», нажимаем на ссылку и сохраняем архив с драйвером.

Дальше желательно извлечь все файлы и папки из загруженного архива, найти там файл Setup.exe, запустить его и установить драйвер.
Если там нет установочного файла, а просто набор папок и каких-то файлов, то нажмите на неизвестное устройство в диспетчере устройств правой кнопкой мыши, выберите «Обновить драйвер» – «Выполнить поиск драйверов на компьютере» и укажите путь к папке с драйверами. Если драйвер не будет найден и установлен, то попробуйте скачать другой.
Очень надеюсь, что статья вам пригодилась, и вы все таки добавили Bluetooth на свой компьютер и смогли подключить необходимые устройства. А я не зря потратил пол дня
![]()
434

529381
![]()
Сергей
![]()
Bluetooth
Драйвер для Bluetooth адаптера из китая CSR 4.0

Заказал с aliexpress блютуз адаптер, за 3$ для того что бы подключить свою Xiaomi Speaker к настольному компьютеру. Но пришло все это дело без драйверов. И оказывается еще, что в интернете найти их не так просто. Поэтому под катом ссылка на драйвер, а так же небольшая инструкция по установке.
Что бы раскрыть весь потенциал bluetooth адаптера CSR 4.0, нужно установить фирменный драйвер, который не так то легко найти. Для этого нужно:
- Подключаем наш блютуз адаптер
- Далее заходим в Диспетчер устройств и удаляем там все драйвера связанные с bluetooth
- Качаем по ссылке установочный пакет драйверов: Ссылка на гугл документы
- Распаковываем и запускаем Setup.exe
- Соглашаемся со всеми пунктами и в конце выбираем персональный компьютер у вас или ноутбук
- Перезагружаемся.
После установки у вас в панели уведомления (возле часов, обычно в нижнем правом углу) появится значок Bluetooth и нажав на него вы сможете легко подключить любое устройство от гарнитуры до другого компьютера.
Замечу так же что для звуковых устройств есть 2 режима работы. Первый это Bluetooth Audio Renderer — этот режим служит для воспроизведения звука в высоком качестве и подключать колонки надо именно через него, а так же Headset в этом режиме качество звука отвратительное, однако работает микрофон. Режимы меняем в устройствах воспроизведения выбрав тот или иной адаптер.
(97 голосов, среднее: 4,68 из 5)
Categories: Hardware, Обзорчики Tags: bluetooth, driver
121 thoughts on “ Драйвер для Bluetooth адаптера из китая CSR 4.0 ”
А мы недавно горсточку таких выкинули
Stas T. :
А зачем? Нерабочие были?
Да стационарных компов давно нет, а на ноутах на всех есть ВТ по умолчанию, поэтому нафиг не нужны были.
Сергей :
Спасибо ОГРОМЕННОЕ . Пол года торчала без толку в ноуте. Теперь все работает как надо.
Stas T. :
Пожалуйста Сам очень долго мучился, в итоге кое как нашел решение. И решил что нужно обязательно поделится им.
Спасибо тебе огромное !
Спасибо! Выручил, в Инете реально хрен найдешь драйвера!
Stas T. :
Пожалуйста, по сути так и есть, пришлось перепробовать кучу вариантов что бы найти рабочие.
а у меня диск есть с драйвером, но нет дисковода))) так что спасибо за драйвер
Я попросил продавца и он ссылку дал:ttp://xz.uzzf.com/csrlyqd.zip
Алексей :
Добрый день! При попытке установить драйвера появляется окошко со справкой установщика windows и установка дальше не идет. Уже перекачал кучу драйверов с разных сайтов, одно и то же. Систему счас переставил даже, абсолютно чистая 8ка
Установщик Windows®. Версия 5.0.9600.16384 msiexec /Option [необязательный параметр] Параметры установки Установка или настройка продукта
/a
Административная установка — установка продукта в сеть
/j [/t ] [/g ]
Объявление о продукте: «m» — всем пользователям; «u» — текущему пользователю Удаление продукта
Параметры отображения
/quiet
Тихий режим, без взаимодействия с пользователем
/passive
Автоматический режим — только указатель хода выполнения
/q[n|b|r|f]
Выбор уровня интерфейса пользователя
n — Без интерфейса
b — Основной интерфейс
r — Сокращенный интерфейс
f — Полный интерфейс (по умолчанию)
/help
Вывод справки по использованию
Параметры перезапуска
/norestart
Не перезапускать после завершения установки
/promptrestart
Запрашивать перезапуск при необходимости
/forcerestart
Всегда перезапускать компьютер после завершения установки
Параметры ведения журнала
/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*]
i — сообщения о состоянии
w — сообщения об устранимых ошибках
e — все сообщения об ошибках
a — запуски действий
r — записи, специфические для действий
u — запросы пользователя
c — начальные параметры интерфейса пользователя
m — сведения о выходе из-за недостатка памяти или неустранимой ошибки
o — сообщения о недостатке места на диске
p — свойства терминала
v — подробный вывод
x — дополнительные отладочные сведения
+ — добавление в существующий файл журнала
! — сбрасывание каждой строки в журнал
* — заносить в журнал все сведения, кроме параметров «v» и «x»
/log
Равнозначен /l*
Параметры обновления
/update [;Update2.msp]
Применение обновлений
/uninstall [;Update2.msp] /package
Удаление обновлений продукта
Параметры восстановления
/f[p|e|c|m|s|o|d|a|u|v]
Восстановление продукта
p — только при отсутствии файла
o — если файл отсутствует или установлена старая версия (по умолчанию)
e — если файл отсутствует или установлена такая же либо старая версия
d — если файл отсутствует или установлена другая версия
c — если файл отсутствует или контрольная сумма не совпадает с подсчитанным значением
a — принудительная переустановка всех файлов
u — все необходимые элементы реестра, специфические для пользователя (по умолчанию)
m — все необходимые элементы реестра, специфические для компьютера (по умолчанию)
s — все существующие ярлыки (по умолчанию)
v — запуск из источника с повторным кэшированием локальных пакетов
Настройка общих свойств
[PROPERTY=PropertyValue] Обратитесь к руководству разработчиков установщика Windows® за дополнительными
сведениями по использованию командной строки. © Корпорация Майкрософт. Все права защищены.
В некоторых частях программы использованы разработки Independent JPEG Group.
Stas T. :
Такое бывает когда файл находится по корявому пути с кириллицей и пробелами. Закинь файл в корень диска C:\ и запусти оттуда.
Спасибо за драйвер долго искал пока не попал на этот сайт.
Установился легко, все сразу заработало.
Молодец, что делишься с людьми.
Alexey :
Счастью нет предела, я уж думал ускоглазые нае… меня и выслали какую-то хрень вместо заявленного модуля. Респект, уважуха и спасибо!
Спасибо большое!
Большое человеческое спасибо Стас!) Как то с такими адаптерами не сталкивался, на нотике или мобильнике блютус работает «из коробки», даже не задумываешься, а тут достался ровно этот адаптер, захотелось подрубить комп для своих мобильных ушей, бился весь вечер, без результатов, думал не для стационара это дело) А тут на те, с этими дровами все заработало, наушники отлично, и мобильник с кучей служб подключился, прекрасно ^_^
Stas T. :
Пожалуйста. Я не один вечер просидел что бы завести этот модуль. Вот и решил людям помочь.
Ильдар :
Здравствуйте! Не подскажите в чём проблема ? На ноут установилось нормально, а вот на комп устанавливается до » Публикаций сведений о продукте » . И выскакивает окошко с ошибкой:
An error occured during the installation of assembly component
HRESULT: 0x8007054F
Если нетрудно — подскажите.
Сергей :
Тоже было. Перенес в папку поближе к корню диска. Еще возможно причина в том, что у меня AnVir выдавал предупреждение на добавление в автозагрузку в время установки драйвера. Может надо просто быстрее нажимать кнопки в AnVir, но со второго раза драйвер установился нормально.
Леонид :
Стас, большое спасибо! Натолкнулся на эту статью. Подключил устройство к компу за полчаса. А то валялся мой адаптер CSR без дела уже не первый год… Думал китайцы «шляпу» какую-то прислали.)))
Тоже на али заказал этот передатчик. устанавливаю, подключаю наушники (тоже с али Bluedio). Звук хороший, но до первой перезагрузки. потом заикающийся звук. Устанавливал несколько раз, в том числе и на чистую винду. В настройках по умолчанию работает в режиме Bluetooth Audio Renderer. В чем может быть проблема
китайцы пишут что на эту штуку дрова не нужны и встанут автоматически .Так и есть ,сопряжение происходит с телефоном и все на этом,ниче не скидывается и не закидывается,скачиваю эти дрова буду пытаться настроить блютуз адаптер CSR 4.0”
Скачал ,установил драйвера по твоей ссылке Стас на комп который работает на винде 7.Перезагрузил комп и произошло чудо,мой телефон с андроид 6 подключился и я поскидывал фотки.Я не мог этого сделать ранее так как гнездо у телефона не совсем рабочее,только идет зарядка а комп не видит .Большой респект и большая тебе благодарность за рабочую ссылку!Автор молодец .