Cc2540 usb dongle как пользоваться

Обновлено: 07.07.2024

После написания предыдущего материала про BLE розетку я познакомился со многими

людьми, которыми интересна тема использования BLE в собственных разработках, но есть определенные

сложности в использовании С-программирования с BLE стеком для СС2541. Использование

внутреннего контроллера дает много преимуществ, в частности: прошивка по воздуху, экономия

на внешнем контроллере, сокращение числа точек пайки…

Я решил разбить материал на две части. Первая – это подготовка к работе, программирование и

отладка. Вторая – создание собственного BLE профиля.

1. Подготовка к работе.

Для разработки приложений для СС2541 маст-хэв-набор это:

— CC-debugger – внутрисхемный отладчик для 8051 чипов TI;

— CC2450 USB dongle — для того чтобы быстро и просто проверять характеристики BLE профилей на

— ну и собственно какая-нибудь плата с чипом СС2541.

Из софта нам понадобится:

— IAR для 8051 контроллеров в версии от 8.2 (можно взять с бесплатной 30и-дневной

Без лишних описаний, пройдемся по папкам стека, которые так или иначе потребуются для

— accessorize – содержит отладочную утилиту BTool, драйверы USB донгла и откомпилированные

образы готовых устройств;

— components – библиотеки (ОС, периферия и BLE);

— documents – папка создает видимость документации на все компоненты и модули;

— projects – примеры проектов.

2. IAR IDE, отладка программ.

Откроем к примеру проект SimpleBLEPerepherial. Пробуем скомпилировать… И я даю 7 из 10, что

проект не соберется. Ошибка происходит из-за того, что линковщик не может уместить в памяти

заданное количество виртуальных регистров. Вариантов решения проблемы два:

— просто уменьшить количество виртуальных регистров с 16 до 8, и делать это для каждого

проекта, надеясь, что он соберется;

1) открыть этот файл (он лежит в папке Projectsblecommoncc2540) в текстовом редакторе;

4) наслаждаться проектами, которые начнут собираться.

Подключив отладочную плату к CC-debugger, запустим приложение на ней (Project- Download and

Debug, Debug — Go).

Теперь при нажатии на правую кнопку брелок переходит в режим Advertising, то есть к нему

можно подключиться. Воткнем в USB донгл на базе СС2540. У нас есть два монитора для работы

с этим донглом: удобный BLE device monitor и хардкорный BTool (установочник последнего – в

комплекте со стеком). Воспользуемся BLE Device monitor.

Наиболее важные поля в данном окне:

• поле Handle – порядковый номер записи в таблице сервисов BLE устройства,

• поле Type – указывает тип записи (определяет запись сервиса, характеристику сервиса,

конфигурацию характеристики или же саму характеристику (ее UUID)),

• ну и третье важное поле – поле Value. В случае записи определения

сервиса данное поле собственно говорит UUID сервиса.

Документированные сервисы приведены здесь. Нам же, при условии что мы не являемся членами Bluetooth SIG, 16-

Поле Value в записи декларации характеристики содержит:

-UUID характеристики (например,

0xFFF3 в примере),

-номер записи в таблице устройства (иначе говоря, handle – 0x002B в нашем

-порядок доступа к характеристике, определяемый битовой маской (в простейшем

Кроме того, из этого скрина важно почерпнуть, что пользовательская переменная для чтения

или записи определяется тремя записями в таблице устройства (определение характеристики,

значение характеристики, описание характеристики – первое и второе поля обязательны, объявление третьего- правило хорошего тона), а

переменная, которая, изменяясь, уведомляет приложение, помимо этого должна иметь

дополнительную характеристику-конфигуратор, включающую или отключающую уведомление.

Для отладки крайне полезна также утилита Packet Sniffer. Не буду рассказывать подробно,

только скажу, что для работы со снифером пакетов потребуется перепрошить USB донгл прошивкой

sniffer_fw_cc2540_usb.hex, лежащей где-то в недрах папки установки снифера (кстати, я искренне надеюсь, что вам не придется отлаживать приложения на столь низком уровне).

Так выглядят посылки iBeacon в снифере эфира:

3. Механизм функционирования периферийного BLE устройства

Для начала разберемся, как работает периферийное устройство в примере SimpleBlePerepherial.

Основная логика работы программы сосредоточена в файле SimpleBLEPerepherial.c, при этом

смысла нет, поскольку в нем инициализируется периферия и OSAL (некоторое подобие

операционной системы). Используя BLE стек, мы получаем доступ только к части процессорного

времени (с наименьшим приоритетом). Это определяет, в частности, стиль программирования:

большое количество функций обратного вызова, отсутствие бесконечных циклов в теле

программы, максимальное использование прерываний…

Первая пользовательская функция, вызываемая OSAL – функция SimpleBLEPeripheral_Init. В ней:

-определяются параметры будущего соединения;-определяются параметры и состав данных для адвертайзинга;

-регистрируются профили, поддерживаемые устройством, регистрируются кэлбэки этих

Дальше важно обратить внимание на кэлбэк, вызываемый стеком, определяющий параметры

соединения, – peripheralStateNotificationCB. Функция всегда позволяет понимать, установлено ли

соединение с центральным устройством или же нет.

Любые действия (управление выводами, чтение показателей датчиков, и т.д.) настоятельно

рекомендую выполнять в периодической задаче. Для этого понадобится функция из библиотеки

OSAL — osal_start_timerEx(), которой помимо идентификатора пользовательской задачи нужно

передать время, через которое произойдет системное прерывание, и битовую маску события,

которое при возникновении обрабатывается в кэлбэке SimpleBLEPeripheral_ProcessEvent().

4. Поддержка OAD

Теперь рассмотрим функцию OAD – обновление прошивки по воздуху. Сразу отмечу, что

такая функция доступна только в чипах с памятью 256 кБ. Максимально подробно механизм

создания приложений для OAD описан в документе, однако пару моментов прояснить стоит. Во-первых, память на чипе

выделяется для двух образов программы: текущей (исполняемой) и области для программы,

принимаемой по воздуху. Во-вторых, на чип должен быть установлен бутлоадер – загрузчик,

который при старте устройства будет выбирать, какой из образов нужно запустить.

Попробуем создать приложение с возможностью обновления прошивки по воздуху. Первым

делом прошьем чип прошивкой бутлоадера. Для этого скомпилируем проект BIM, находящийся

в папке ProjectsbleutilBIM, и загрузим в контроллер получившийся образ посредством

Smart RF Flash Programmer (действие Erase, Programm and Verify). Дальше соберем образ, с

которым наше устройство будет стартовать: соберем проект SimpleBLEPerepherial в конфигурации

СС2541-OAD-ImgA (кстати, файл разметки памяти, который мы поправили в самом начале,

в этой сборке изменен, так что придется внести аналогичные изменения еще и в файл

cc254x_f256_imgA.xcl). Дошьем этот образ через Smart RF Flash Programmer (действие Append and

Verify), на этом шаге самое важное – не стереть предпрошитый бутлоадер. Теперь, перезагрузив

чип и подключившись к нему через BLE device monitor, увидим поддержку OAD.

Теперь скомпилируем образ для загрузки по воздуху и загрузим его на чип. Для начала

скомпилируем конфигурацию СС2541-OAD-ImgB. Далее в BLE Device Monitor перейдем во

вкладку File-programm. Убедимся, что чип работает на образе «А», выберем .bin файл в папке

выходных файлов конфигурации «ImgB» и обновим прошивку.

Презагрузим чип, переподключимся и убедимся, что чип работает с образом «B».

Стало быть, прошивка была обновлена и запущена новая версия. Теперь можно выделить для одного из секторов больший объем памяти, но это уже совершенно другая история…

На этом про стек все. В следующей части создадим свой пользовательский BLE профиль. Надеюсь, что для старта работы с СС2541 статья будет полезна.

В этом разделе вы узнаете, как активировать новый чип CC2540. Предоставленное руководство поможет пользователям, обладающими продуктами DFRobot BLE с повреждённым/удалённым загрузчиком, более не распознаваемыми на компьютере при подключении через USB-кабель.

Если вы желаете самостоятельно создать полностью похожее на Bluno устройство, руководство станет крайне полезной теоретической частью всего процесса разработки.

В качестве примера мы воспользуемся платой DFRobot Bluno Mega2560. Другие продукты могут быть прошиты аналогичным способом.

Инструменты

  • Аппаратные средства
    • Программатор CC Debugger x 1
    • DFRobot BLE плата с удалённым загрузчиком x 1 (например, Bluno Mega2560)
    • MicroUSB кабель x 1
    • MiniUSB кабель x 1

    Весь процесс разделён на 3 части: 1. Запись загрузчика -> 2. Запись прошивки -> 3. Расшифровка прошивки.

    Примечание! Если вам нужно прошить новый чип CC2540, правильно подключайтесь к плате DFRobot BLE и не допускайте неверных соединений. С пропущенными шагами по установке программного обеспечения или драйвера CC Debugger можно ознакомиться в соответствующей инструкции по эксплуатации программатора.

    Запись загрузчика

    Шаг 1. Проводное соединение

    Пожалуйста, посмотрите на принципиальную схему вашей BLE-платы, и найдите в ней определение выводов интерфейса загрузки. На рисунке ниже (1) приведён пример от Bluno Mega2560. Интерфейс загрузки у BLE micro и Bluno Nano немного отличается, у Bluno - такой же.

    Соедините соответствующие выводы у Bluno Mega2560 и программатора в соответствии с рисунком (2):

    Шаг 2. Определение чипа CC2540

    Одновременно включите питание для программатора и Bluno Mega2560. Затем нажмите кнопку сброса "Reset" на программаторе. Если вы всё верно подключили, то светодиод у CC Debugger сменит цвет с красного (3) на жёлтый (4).

    Подключение прокграмматора CC Debugger к Bluno

    Запустите SmartRF Flash Programmer, он распознает целевой чип CC2540. Если этого не произошло, возможно, вы ранее что-то упустили.

    Шаг 3. Настройки и запись

    Настройте программу так, как показано на картинке ниже, и выберите файл SBL_BootloaderV2.0.hex. Далее, нажмите кнопку Perform Action. Процесс записи загрузчика закончится через несколько секунд и два встроенных в плату Bluno Mega2560 светодиода LINK / PAIR начнут регулярно мигать. Переходите к следующей части.

    Найстрока SmartRF Flash Programmer для CC2540

    Запись прошивки

    Запустите blunoFWDownloader и выберите прошивку для вашей платы. В нашем случае это SBL_Blemega2560V1.9.bin для Mega2560. И нажмите кнопку "стрелка вниз" для выполнения процесса записи, который закончиться спустя полминуты.

    Запись прошивки в BLE CC2540

    Расшифровка прошивки

    В устройство можно загружать скетчи, но ваш телефон не сможет обнаружить BLE.


    Свободно используйте функционал BLE

    Пройдя все описанные шаги, вы исправите вашу повреждённую плату. Проверьте её работоспособность:

    CC2540 + Arduino
    Всем добрый день. Нужно подружить iOS девайсы с ардуино с помощью CC2540, как будто это.

    Помощь с CC2540
    Ищу человека, который за определенную уже в л.с. сумму сможет объяснить( в скайпе или в переписке).

    Наручные часы на CC2540
    Понравился очень пост решил написать свой, как я делаю часы Для чего это мне надо: 1. Стимуляция.


    Qt Bluetooth, ошибка qt.bluetooth: Dummy backend running. Qt Bluetooth module is non-functional
    Начал разбираться с Qt и Bluetooth, для этого запустил пример.

    F128 подходит только для периферии, F256 уже для всего остального.

    "В чём и чем программировать?". Только IAR.

    " Техасцы для работы с CC2540 продают программатор CC Debugger." для нормальной работы подходит только их или клон. А вообще купи кит за 99$. Там модуль, сниффер и программатор.

    "И как подключать программатор? " апнот к CC Debugger.

    SmartRF Studyo - он генерит только конфиги.

    " Ну а примеров маловато в просторах интернета. " там дохрена примеров от Ti.

    Только IAR. А keil пробовали? Тот же вопрос про ULINK2.
    Скорее всего придется купить CC Debugger или даже CC2540DK-MINI, но не хотел делать лишних затрат. А где за 99$ купить?
    ""И как подключать программатор? " апнот к CC Debugger." - Получается, что P2.1, P2.2, Riset, VDD,GND на разъем достаточно?

    Если перепишешь весь код под keil то может быть и можно.
    Читай внимательно. Там написано, что то только дебаггер а программировать только через spi.

    Конечно-же все покупается у Ti, если договоришься. Или у Сканти Рус.

    Только IAR. А keil пробовали? Тот же вопрос про ULINK2. Keil (9.05) поддерживает, неясно, что там с отладкой. ULINK-и - они вроде как совсем не для 51. Закажу тогда комплект. А там уж и поэкспериментирую с keil и Ulink2.
    Кстати, у ULINK2 в списке поддерживаемых есть 8051. В нашем случае, я думаю надо цеплять DD процессора к SWDIO программатора, DC - SWCLK, RESIT - RESIT, GND - GND.
    Будет тело - буду пробовать, и отпишусь о результатах.

    Texas Instruments CC2540/41 Bluetooth® Low Energy Sample Applications Guide v1.2 (SWRU297) - страница 20, Serial Boottooder и на этой же странице USB Boottooder.

    Приветствую.
    У меня появилась возможность доступа к отладочной плате CC2540DK-MINI, и тут же появились идеи попытаться сделать:

    Вариант А:
    <ul>1. MASTER устройство:
    компьютер + CC2540
    2. SLAVE устройство:
    CC2540 </ul>
    Вариант B:
    <ul>1. MASTER устройство:
    Планшет, телефон с Bluetooth 2.0 (посылка команд что-то вкл./выкл. с обратной связью о выполнении задания)
    2. SLAVE устройство:
    CC2540 (прием команды по Bluetooth, выполнение поставленной задачи, отправка отчета)</ul>
    Думал, что дело быстро пойдет, но количество новых терминов, понятий и принципов, для меня среднячка в програмировании, вводит в ступор.

    Уже прочитал API guide (OSAL, HAL, CC2540 Bluetooth Low Energy) - первых 2 понятны, в третьем описание уровней GAP, GATT запутало хорошо, и как теперь реализовать простую Bluetooth связь и как работать с BLE стеком уже смутно представляю. Справочник в виде html документа CC2540 Bluetooth Low Energy API Guide (BLE_API_Guide_main.htm), должен был помочь разобраться с функциями по обращею к BLE Protosol Stack API и BLE Profile API, но куда их применить я еще не представляю.
    Надеюсь, 2 документа:
    TI BLE Vendor Specific HCI Reference Guide (v1.2.1 )
    Texas Instruments CC2540 Bluetooth Low Energy Sample Applications Guide (v1.2) (SWRU297)
    помогут прояснить как все заставить работать.

    На данный момент понял одно:
    <ul>- чтоб связать Bluetooth 4.0 с 4.0 - можно использовать устройства работающие в режиме Single-mode (подходит под вариант А)
    - чтоб связать Bluetooth 4.0 с 3.0, 2.0 - тут уже не обойтись устройством на СС2540 работающим в режиме Dual-mode (подходит под вариант B)</ul>

    CC2540 / CC2541 / CC2640 / CC2642 / CC2652 сравнение параметров чипа

    Чип Bluetooth TI начал с приобретения компании chipcon. Chipcon - полупроводниковая компания, специализирующаяся на продуктах для беспроводной связи. В 2011–2012 годах штаб-квартира компании находится в Норвегии, она разработала первое поколение маломощных микросхем Bluetooth BLE CC2540 / CC2541, которые на тот момент были первым в мире чипом BLE SOC.
    С появлением умных носимых устройств в 2012–2013 годах, которое привело к взрывному развитию BLE, высокоинтегрированный чип BLE убил универсальный микроконтроллер + RF-чип и стал основным.

    В следующей таблице сравниваются параметры основных моделей TI следующим образом:




    Внутренняя функция MCU BLE SOC становится все более мощной, а периферийная интеграция также становится все более обширной, что еще больше способствует ее рыночному применению.

    Обменная группа QQ 740428654
    Обмен WeChat lanfang-smart

    Интеллектуальная рекомендация


    Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом для чтения.

    Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом чтения Fabric Файл исходного кода одиночного режима находится в ord.


    Мяу Пасс Матрица SDUT

    Мяу Пасс Матрица SDUT Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description Лянцзян получил матрицу, но эта матрица была особенно уродливой, и Лянцзян испытал отвращение. Чт.


    Гессенская легкая двоичная структура удаленного вызова

    Hessian - это легкая двоичная структура удаленного вызова, официальный адрес документа, в основном он включает протокол удаленного вызова Hessian, протокол сериализации Hessian, прокси-сервер клиента .


    TCP Pasket и распаковка и Нетти Solutions

    Основные введение TCP является ориентированным на соединение, обеспечивая высокую надежность услуг. На обоих концах (клиенты и терминалы сервера) должны иметь один или более гнезда, так что передающий.

    Читайте также: