Модули CC2650MODA – Bluetooth без лишних забот
3 ноября 2017
Модуль CC2650MODA производства Texas Instruments – это сборка, объединяющая беспроводной микроконтроллер CC2650, антенну и кварцевые резонаторы. Такие модули максимально упрощают процесс создания BLE-устройств (Bluetooth low-energy). Они способны работать в качестве сетевого процессора под управлением внешнего микроконтроллера или в качестве основного процессора системы. Для облегчения разработки и отладки BLE-устройств TI выпускает платы BOOSTXL-CC2650MA и пакет ПО BLE-STACK-2-2-1.
Bluetooth — один из наиболее популярных беспроводных интерфейсов. Ни один современный смартфон или планшет не обходится без поддержки этого протокола. Но для создания Bluetooth-устройств требуется потратить много времени и сил. В последнее время ситуация начала меняться с появлением недорогих микроконтроллеров, модулей и отладочных наборов с Bluetooth. Одним из лидеров в данном сегменте является компания Texas Instruments (TI).
В настоящее время TI выпускает несколько типов микросхем и модулей для Bluetooth:
- CC256x – семейство контроллеров с одновременной поддержкой протоколов Bluetooth Classic [BR/EDR] и Bluetooth low-energy (BLE);
- CC2564MODx – семейство законченных приемопередатчиков Bluetooth. Представляют собой модули со встроенной антенной на базе контроллеров CC2564;
- CC26x – семейство малопотребляющих микроконтроллеров с 32-битным ядром ARM Cortex-M3, рабочей частотой до 48 МГц и поддержкой BLE;
- CC2650MODA – семейство законченных BLE-модулей на базе микроконтроллеров CC26x.
Для ускорения разработки и отладки устройств на базе процессоров CC26x компания TI предлагает использовать отладочный набор SimpleLink™ CC2650 Wireless MCU LaunchPad™ Kit (наименование при заказе – LAUNCHXL-CC2650, рисунок 1). При этом кроме самой отладочной платы пользователь получает доступ к библиотекам и примерам, входящим в состав пакета ПО BLE-STACK-2-2-1. Однако еще более простым способом создания BLE-устройств является использование готовых модулей CC2650MODA.
Модуль CC2650MODA представляет собой законченное решение со встроенным микроконтроллером и антенной, и является идеальным выбором для быстрого создания BLE-устройств (рисунок 2). В нем установлена микросхема CC2650 в корпусе 5×5 мм. При использовании таких модулей самая сложная часть разработки, связанная с проектированием ВЧ-части радиопередатчика, уже решена. Проектировщикам остается только создать программный код и выбрать подходящую систему питания.
Модули CC2650MODA способны работать в двух режимах:
- в качестве ведомого сетевого процессора, работающего под управлением внешнего микроконтроллера;
- в качестве основного процессора системы.
Для разработки и отладки BLE-устройств на базе CC2650MODA применяется плата расширения TI SimpleLink™ Bluetooth® low energy CC2650 Module BoosterPack™ Plug-in Module (наименование при заказе – BOOSTXL-CC2650MA, рисунок 3). По умолчанию плата BOOSTXL-CC2650MA подразумевает совместную работу с наборами LaunchPad, например, c платой SimpleLink™ MSP432P401R LaunchPad™ Development Kit MSP-EXP432P401R. При этом модуль CC2650MODA выступает в качестве ведомого беспроводного процессора. Однако BOOSTXL-CC2650MA может использоваться самостоятельно для отладки BLE-приложений, в которых CC2650MODA является основным процессором. При этом отправной точкой для пользовательского кода могут стать доработанные примеры из BLE-STACK-2-2-1, изначально рассчитанные на исполнении в чипе СС2650 размером 7×7 мм.
Краткий обзор беспроводных модулей CC2650MODA
Модули CC2650MODA построены на базе малопотребляющих микроконтроллеров CC2650 с 32-битным ядром ARM Cortex-M3 и рабочей частотой до 48 МГц (рисунок 4). Помимо основного процессорного ядра, микроконтроллеры CC2650 имеют вспомогательное ядро ARM Cortex-M0 для управления радиопередатчиком и поддержки беспроводных протоколов. Также в состав модуля входит антенна и кварцевые резонаторы.

Рис. 4. Блок-схема модулей CC2650MODA
Таким образом, у CC2650MODA есть практически все, что нужно для создания Bluetooth-устройств. При этом типовая схема включения оказывается максимально простой — разработчику требуется всего лишь реализовать систему питания с единственным уровнем напряжения 1,8…3,8 В, а также добавить разъем программирования (рисунок 5). Программирование встроенного микроконтроллера осуществляется с помощью JTAG. Необходимо только добавить дополнительный подтягивающий резистор 100 кОм на выводе nRESET.

Рис. 5. Схема включения блока CC2650MODA
Даже при такой простой конфигурации пользователь получает доступ к 15 входам-выходам, восемь из которых могут быть использованы как аналоговые входы. Кроме того, благодаря богатому функционалу встроенного контроллера CC2650 разработчикам доступны четыре таймера, коммуникационные интерфейсы (SPI, I²C, UART), компараторы и другая периферия.
Главным достоинством CC2650MODA, конечно же, является поддержка протокола BLE и IEEE 802.15.4 MAC. Также модуль может быть использован для создания устройств ZigBee®, 6LoWPAN и ZigBee RF4CE™.
Для огромного количества приложений контроллер CC2650, который входит в состав модуля CC2650MODA, может выполнять функцию основного процессора. Поэтому разработчикам будет интересно иметь в распоряжении подходящую отладочную плату. Однако существующая плата расширения BOOSTXL-CC2650MA в первую очередь нацелена на совместное использование с наборами LaunchPad. Впрочем, BOOSTXL-CC2650MA без проблем может работать и самостоятельно.
Особенности работы BOOSTXL-CC2650MA
Чтобы оценить работу CC2650MODA в качестве ведомого процессора, разработчикам предлагается использовать плату расширения BOOSTXL-CC2650MA совместно с отладочными наборами LaunchPad.
В качестве примера можно рассмотреть подключение CC2650 Module BoosterPack к отладочной плате MSP432P401R LaunchPad™ (наименование MSP-EXP432P401R, рисунок 6). При этом к услугам разработчиков предоставляется не только базовый набор бесплатного ПО SimpleLink MSP432 Software Development Kit (SDK) (SIMPLELINK-MSP432-SDK), содержащий библиотеки и примеры, но и дополнительный пакет SIMPLELINK-SDK-BLUETOOTH-PLUGIN, в который, в частности, входят библиотеки и примеры для работы с ведомым модулем CC2650MODA.

Рис. 6. Подключение платы расширения BOOSTXL-CC2650MA к MSP432P401R LaunchPad
По умолчанию BOOSTXL-CC2650MA поставляется с заранее зашитой программой для работы модуля CC2650MODA в режиме ведомого. Однако не стоит забывать, что CC2650MODA включает в себя полноценный микроконтроллер CC2650, который способен работать в качестве основного процессора системы.
Чтобы ускорить разработку и отладку BLE-устройств, в которых CC2650MODA выступает в качестве основного процессора, можно воспользоваться все той же платой BOOSTXL-CC2650MA. Для этого необходимо решить три задачи:
- организовать подключение программатора для прошивки контроллера;
- если это необходимо – выполнить незначительные доработки аппаратной части;
- отредактировать примеры из пакета ПО BLE-STACK-2-2-1, чтобы их можно было использовать с CC2650MODA.
Рассмотрим каждую из них отдельно.
Особенности программирования платы BOOSTXL-CC2650MA
По умолчанию BOOSTXL-CC2650MA поставляется с заранее зашитой программой. Для перепрограммирования CC2650MODA в самом простом случае можно воспользоваться платой CC2650 LaunchPad, в которую интегрирован JTAG-программатор XDS110.
Изначально в CC2650 LaunchPad программатор XDS110 подключен к резидентному контроллеру CC2650 с помощью набора из 11 перемычек (джамперов). Если их удалить, то XDS110 можно использовать для программирования внешних контроллеров по JTAG.
Для программирования BOOSTXL-CC2650MA с помощью CC2650 LaunchPad следует выполнить четыре шага (рисунок 7):

Рис. 7. Схема подключения BOOSTXL-CC2650MA при программировании с помощью CC2650 LaunchPad
- удалить джамперы на плате CC2650 LaunchPad. Это требуется, чтобы отключить от JTAG-интерфейса расположенный на этой же плате штатный микроконтроллер CC2650;
- подключить плату расширения к разъему JTAG-программирования XDS110 с помощью отладочного кабеля;
- если используется CC2650 LaunchPad ревизии 1.2 или выше – подключить дополнительный подтягивающий резистор между выводом nRESET и выводом 3,3 В;
- подключить плату CC2650 LaunchPad к компьютеру через USB. Это необходимо для программирования и питания.
После выполнения этих пунктов CC2650 Module BoosterPack готов к программированию (рисунок 8).

Рис. 8. Внешний вид используемой схемы включения
Корректировка файлов из BLE-STACK-2-2-1 для BOOSTXL-CC2650MA
Теперь, когда плата расширения готова к программированию, необходимо написать саму программу. На этом этапе можно значительно упростить себе жизнь, если воспользоваться примерами из пакета ПО BLE-STACK-2-2-1, которые были предназначены для CC2650 LaunchPad. Однако использовать эти примеры напрямую с BOOSTXL-CC2650MA без доработки нельзя.
Дело в том, что на плате CC2650 LaunchPad установлен процессор CC2650 с корпусным исполнением 7×7 QFN (31 I/O), в то время как в CC2650MODA используется процессор CC2650 с корпусным исполнением 5×5 QFN (15 I/O). Кроме того, характеристики ВЧ-трактов у этих отладочных плат различны. Поэтому, чтобы воспользоваться готовыми примерами от разработчика, требуется внести ряд изменений в конфигурационные файлы. Здесь стоит отметить, что аналогичную работу нужно проводить, если используется не BOOSTXL-CC2650MA, а плата собственной разработки (с чипом другого размера, иной схемой согласования с антенной и конкретным набором задействованных портов ввода-вывода).
Для начала в директории проектов BLE-STACK-2-2-1 находим файл CC2650_LAUNCHXL.h (по умолчанию — C:\ti\simplelink\ble_sdk_2_02_01_18\src\boards\CC2650_LAUNCHXL\CC2650_LAUNCHXL.h.). Далее – в нем необходимо изменить описание выводов и определить тип радиопередающего тракта (листинг 1).
Листинг 1. Исправленная версия файла CC2650_LAUNCHXL.h
/* RF Configuration definition */ #define CC2650EM_5XD /* RF Configuration for CC2650 Module */ // #define CC2650EM_7ID /* Default RF config for CC2650 LaunchPad */ /* Mapping of pins to board signals using general board aliases * <board signal alias> <pin mapping> */ /* Discrete outputs */ #define Board_RLED IOID_4 #define Board_GLED IOID_2 #define Board_LED_ON 1 #define Board_LED_OFF 0 /* Discrete inputs */ #define Board_BTN1 PIN_UNASSIGNED #define Board_BTN2 PIN_UNASSIGNED /* UART Board */ #define Board_UART_RX IOID_1 /* RXD */ #define Board_UART_TX IOID_0 /* TXD */ #define Board_UART_CTS PIN_UNASSIGNED /* CTS */ #define Board_UART_RTS PIN_UNASSIGNED /* RTS */ /* SPI Board */ #define Board_SPI0_MISO IOID_12 /* RF1.20 */ #define Board_SPI0_MOSI IOID_11 /* RF1.18 */ #define Board_SPI0_CLK IOID_10 /* RF1.16 */ #define Board_SPI0_CSN PIN_UNASSIGNED #define Board_SPI1_MISO PIN_UNASSIGNED #define Board_SPI1_MOSI PIN_UNASSIGNED #define Board_SPI1_CLK PIN_UNASSIGNED #define Board_SPI1_CSN PIN_UNASSIGNED /* I2C */ #define Board_I2C0_SCL0 PIN_UNASSIGNED #define Board_I2C0_SDA0 PIN_UNASSIGNED /* SPI */ #define Board_SPI_FLASH_CS PIN_UNASSIGNED #define Board_FLASH_CS_ON 0 #define Board_FLASH_CS_OFF 1
Как видим, в первых трех строках кода мы должны закомментировать исходное определение CC2650EM_7ID и определить CC2650EM_5XD. Данные директивы в дальнейшем используются препроцессором компилятора для правильной настройки ВЧ-тракта микроконтроллера. Здесь стоит отметить, что компания TI предлагает к услугам разработчиков несколько референсных плат с готовыми решениями ВЧ-каналов. В частности – директива CC2650EM_5XD сообщает о том, что в BOOSTXL-CC2650MA используется такая же конфигурация ВЧ-тракта, как и у референсной платы CC2650EM-5XD-RD. Если проектировщик разрабатывает собственную плату, то ему стоит выбрать подходящую референсную схему, а в коде определить соответствующую директиву.
Также необходимо внести изменения в код программы, если в конченом устройстве будет другое назначение выводов. Неиспользуемые выводы должны быть определены как PIN_UNASSIGNED. В листинге 1 внесены изменения для перехода от CC2650 LaunchPad к BOOSTXL-CC2650MA.
Далее необходимо подправить файл CC2650_LAUNCHXL.c (по умолчанию он находится в директории C:\ti\simplelink\ble_sdk_2_02_01_18\src\boards\CC2650_LAUNCHXL\CC2650_LAUNCHXL.c). Изменения вносятся в таблицу конфигурации выводов PIN_Config BoardGpioInitTable[ ] (листинг 2).
Листинг 2. Исправленная версия таблицы конфигурации выводов из CC2650_LAUNCHXL.с
const PIN_Config BoardGpioInitTable[ ] = { Board_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */ Board_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */ Board_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN, /* UART RX via debugger back channel */ Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX via debugger back channel */ Board_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out – slave in */ Board_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master in – slave out */ Board_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN, /*SPI clock */ PIN_TERMINATE };
Теперь примеры, предназначенные для CC2650 LaunchPad (чип 7×7 мм), будут работать на плате CC2650 Module BoosterPack (чип 5×5 мм). Если проектировщик создает плату с нуля, то вначале рекомендуется очистить таблицу из листинга 2, чтобы там остался всего один элемент PIN_TERMINATE, а затем, по мере необходимости, добавлять в нее выводы в соответствии с принципиальной схемой. Не стоит забывать, что у модулей CC2650MODA доступно только 15 линий ввода-вывода.
В заключение стоит отметить, что аналогичным образом можно импортировать примеры для плат собственной разработки. Подход при выполнении миграции будет таким же.
Заключение
Модули CC2650MODA значительно упрощают процесс создания Bluetooth-устройств. Для быстрого освоения этих модулей может потребоваться отладочная плата. В таких случаях самым простым и быстрым решением проблемы будет использование плат расширения BOOSTXL-CC2650MA.
Если BOOSTXL-CC2650MA используется как самостоятельная отладочная плата, то в качестве основы для написания кода следует взять доработанные примеры из пакета ПО BLE-STACK-2-2-1. Для программирования можно использовать плату из стартового набора CC2650 LaunchPad™ Kit (LAUNCHXL-CC2650). Аналогичный подход логично использовать для миграции программных примеров на платы собственной разработки.
Литература
- Using TI Certified Bluetooth® low energy Module (CC2650MODA) as Single-Chip Wireless MCU. Texas Instruments, 2017;
- Модули CC2650MODA;
- Отладочный набор CC2650 Wireless MCU LaunchPad™ Kit;
- Модули расширения CC2650 Module BoosterPack™;
- ti.com.
Наши информационные каналы