№3 / 2016 / статья 3

Превращение контроллера в сетевой процессор: Как управлять CC1310 с помощью АТ-команд

Олег Пушкарев (КОМПЭЛ)

Микросхема CC1310 производства Texas Instruments включает в себя микроконтроллер Cortex-M3 и приемопередатчик диапазонов ниже 1 ГГц, что позволяет создавать на ее базе законченные устройства с беспроводной передачей данных. Для упрощения процесса разработки конечного изделия можно воспользоваться готовым программным кодом, который превращает CC1310 в сетевой процессор. Этот подход особенно оправдан в том случае, когда требуется добавить радиоканал в уже существующую систему со своим собственным микроконтроллером. Новая прошивка rfEasyLinkNp позволяет решить эту задачу в короткий срок и с минимумом инженерных усилий.

Компания Texas Instruments выпустила новое программное обеспечение rfEasyLinkNp для системы на кристалле CC1310, которое превращает чип в законченный радиомодем, управляемый с помощью AT-команд. Новое ПО избавляет разработчика от изучения внутренней архитектуры CC1310 и написания драйвера, который непосредственно взаимодействует с внутренними ресурсами приемопередатчика – регистрами, FIFO и тому подобным. Программное обеспечение rfEasyLinkNp превращает CC1310 в сетевой процессор, то есть в микросхему, которая полностью берет на себя все задачи, связанные с беспроводной передачей данных. При этом разработчик системы может не разбираться во внутренних узлах CC1310, особенностях формирования пакетов, параметрах модуляции и так далее – все это скрыто за интерфейсом управления. Подобный подход часто используется производителями радиомодулей. Для добавления беспроводного протокола достаточно ознакомиться с описанием десятка AT-команд. Например, для приема данных основной контроллер системы отправляет команду AT+RX <Enter> сетевому процессору, который, в свою очередь, выводит в UART принятые данные. Сетевой процессор может делать адресную рассылку и имеет фильтрацию сообщения при приеме, что позволяет организовать сеть типа «звезда» из сотен и даже тысяч устройств, работающих в диапазоне 868 МГц.

Уникальной особенностью ПО rfEasyLinkNp является полностью открытый исходный код. Это позволяет продвинутому разработчику добавлять новые AT-команды либо модифицировать существующие. Дополнительно сетевой процессор содержит команды генерации непрерывной несущей и отправки пакетов для проведения теста ошибок передач, что будет крайне полезно при тестировании устройств в процессе производства.

Пример кода «сетевой процессор» включен в состав новой версии программного обеспечения TI-RTOS 2.16.00.08 (от 25 февраля 2016) и доступен в виде проектов для сред разработки Code Composer Studio и IAR.

Набор базовых функций EasyLink API

Для лучшего понимания логики работы ПО rfEasyLinkNp и используемых высокоуровневых AT-команд рассмотрим сначала низлежащий программный слой EasyLink API.

Для упрощения работы с радио CC13xx компания Texas Instruments предлагает готовый набор базовых функций EasyLink API. Это – программный слой (abstraction layer) над драйвером радио (CC13xx RF Driver). EasyLink позволяет работать с радио без необходимости изучения регистров и различных тонкостей управления радиоядром. При использовании EasyLink можно создать программу для беспроводного обмена за считанные часы. С помощью EasyLink API (всего 15 функций, таблица 1) можно выполнить настройку радио на нужную частоту и тип модуляции, отправить/принять пакеты, осуществить привязку активности радио к абсолютному или относительному времени, произвести адресную и широковещательную рассылку. Используется простой формат пакета (рисунок 1), который, тем не менее, позволяет организовать простую сеть типа «звезда» с фильтрацией адресов при приеме. Программный слой EasyLink предлагает только базовые функции. Он, например, не содержит поддержки для протоколов LBT («слушать прежде чем отправить»), режима Sniff Mode и тому подобного. EasyLink API и примеры по работе с ним включены в дистрибутив TI-RTOS. Описание EasyLink можно найти в папке C:\TI_Radio_Training\Documentation или по ссылке: http://processors.wiki.ti.com/index.php/SimpleLink-EasyLink.

Рис. 1. Структура пакета EasyLink

Рис. 1. Структура пакета EasyLink

Инструкции по работе с TI-RTOS можно найти здесь (после установки TI-RTOS): C:\ti\tirtos_simplelink_<version>\docs\tirtos_cc13xx_cc26xx_Getting_Started_Guide.pdf.

Таблица 1. Список функций EasyLink API

API Описание функции
EasyLink_init() Инициализация и запуск RF-драйвера и настройка параметров физического уровня радиоканала (PHY setting)
EasyLink_transmit() Передача данных. Блокирующая функция (возврат происходит только после окончания отправки данных по эфиру)
EasyLink_transmitAsync() Передача данных. Неблокирующая функция (возврат происходит сразу после передачи необходимых параметров в радиоядро). Отправка данных по эфиру выполняется параллельно с исполнением основной пользовательской программы.
EasyLink_receive() Прием данных. Блокирующая функция (возврат происходит только после приема пакета)
EasyLink_receiveAsync() Прием данных. Неблокирующая функция (возврат происходит сразу после передачи необходимых параметров в радиоядро). Прием данных по эфиру выполняется параллельно с исполнением основной пользовательской программы
EasyLink_abort() Прерывание выполнения неблокирующей функции
EasyLink_GetIeeeAddr() Получение IEEE-адреса чипа
EasyLink_EnableRxAddrFilter() Разрешение/запрет фильтрации адресов при приеме
EasyLink_SetFreq() Установление рабочей частоты
EasyLink_GetFreq Получение рабочей частоты
EasyLink_SetRfPwr() Установление уровня выходной мощности
EasyLink_GetRfPwr() Получение текущего уровня выходной мощности
EasyLink_getAbsTime() Получение абсолютного времени радио
EasyLink_setCtrl() Изменение параметров конфигурации
EasyLink_getCtrl() Получение конфигурационных параметров

На момент написания статьи EasyLink API поддерживает два предустановленных варианта параметров радиоканала и один пользовательский режим. Эти же настройки можно выбирать при инициализации радио с помощью AT-команд при работе с прошивкой rfEasyLinkNp:

  • режим 50kbps 2-GFSK инициализируется с помощью функции EasyLink_init(EasyLink_Phy_50kbps2gfsk);
  • режим 625bps Long Range Mode: инициализируется с помощью функции EasyLink_init(EasyLink_Phy_625bpsLrm);
  • пользовательский режим Custom инициализируется с помощью функции EasyLink_init(EasyLink_Phy_Custom).

Если используется режим работы с пользовательскими настройками радио – в проекте необходимо задействовать переменную EasyLink_Phy_Custom. При этом соответствующие файлы smartrf_settings.c/h должны быть модифицированы разработчиком в соответствии с его требованиями к параметрам радио. Эти пользовательские параметры (содержимое файлов) могут быть сгенерированы с помощью программы SmarfRF Studio: http://www.ti.com/tool/smartrftm-studio.

В документации на SmarfRF Studio показано, как сгенерировать требуемые значения и экспортировать их в виде файлов smartrf_settings.c/h. Эти файлы затем должны быть просто скопированы в папку “smartrf_settings\” вашего проекта, например:

…\rfEasyLinkNp_CC1310DK_TI_CC1310F128\smartrf_settings\

При работе с EasyLink API необходимо включить в проект инициализацию пользовательских настроек EasyLink_init(EasyLink_Phy_Custom) и перекомпилировать проект.

Это приводит к тому, что EasyLink API будет использовать RF_prop-, RF_cmdPropRadioDivSetup- и RF_cmdFs-команды, параметры которых были определены и экспортированы из SmartRF Studio. Синхрослово (Synchword) для пользовательских настроек радио в режимах TX/RX определено в командах RF_cmdPropTx и RF_cmdPropRx соответственно. С помощью пользовательских настроек радио можно обеспечить совместимость с прочими трансиверами TI (CC1101, CC1120, CC1200, CC430) или с приемопередатчиками других производителей.

С используемыми по умолчанию настройками проекта ccfg settings выходная мощность ограничена значением 12 дБм. Если в приложении пользователя вызывается функция EasyLink_SetRfPwr() с параметром мощности >12 дБм, то будет возвращено сообщение об ошибке EasyLink_Status = EasyLink_Status_Param_Error. Для того чтобы установить выходную мощность 14 дБм, необходимо установить в исходном коде проекта CCFG_FORCE_VDDR_HH = 1 и перекомпилировать приложение.

Программное обеспечение rfEasyLinkNp AT Network Processor Example

Прошивка (Firmware) rfEasyLinkNp представляет собой пример приложения TI-RTOS для CC1310. Это программная надстройка над набором базовых функций EasyLink по управлению радио CC1310. rfEasyLinkNp добавляет возможность управления CC1310 с помощью текстовых AT-команд (интерфейс EasyLink AT), которые подаются через UART со стороны хост-процессора (внешнего микроконтроллера). В качестве хост-процессора может выступать 8-, 16-, 32-битный микроконтроллер либо ПК. В случае с ПК, управление CC1310 производится через любую терминальную программу. Программа rfEasyLinkNp доступна в виде исходного кода, поэтому у разработчика имеется возможность модифицировать ее, например, добавлять свои собственные AT-команды.

Исходный код примера rfEasyLinkNp находится в папке установки TI-RTOS. При установке по умолчанию пример rfEasyLinkNp для среды разработки Code Composer Studio будет лежать по этому пути: C:\ti\tirtos_cc13xx_cc26xx_2_16_00_08\tirtos_cc13xx_cc26xx_2_16_00_08_examples\TI\CC1310DK_7XD\rfEasyLinkNp.

Пример rfEasyLinkNp может быть скомпилирован и загружен с помощью среды разработки Code Composer Studio. На рисунке 2 показано содержание папки проекта rfEasyLinkNp.

Рис. 2. Содержание папки проекта rfEasyLinkNp

Рис. 2. Содержание папки проекта rfEasyLinkNp

открыть в большом размере

Быстрый старт

Подключите плату с загруженной прошивкой rfEasyLinkNp к компьютеру. Это может быть плата CC1350 SensorTag, SmartRF06, TE-CC1350EV-868; CC1310 Launchpad или плата вашей собственной разработки. Упрощенная схема подключения приведена на рисунке 3.

Рис. 3. Подключение CC13xx к ПК через UART/USB-мост

Рис. 3. Подключение CC13xx к ПК через UART/USB-мост

При необходимости установите драйверы для программатора и/или виртуального COM-порта. В диспетчере устройств Windows идентифицируйте COM-порт вашей платы. Откройте наиболее знакомую вам программу-терминал, например, HyperTerminal, puTTY или другую. Если ваша программа-терминал не видит нужный COM-порт – попробуйте перегрузить систему. Установите следующие параметры COM-порта: Baud-rate: 115200; Data bits: 8; Stop bits: 1; Parity: None; Flow Control: None.

При подаче питания или при аппаратном сбросе платы с помощью кнопки сброса в терминале вы увидите строку вида:

Reset:EasyLink-v1.00.04

Это признак того, что ваше оборудование работает нормально. В терминальной программе диалог с вашим сетевым процессором CC1310 может выглядеть, как показано на рисунке 4 слева.

Рис. 4. Окно программы-терминала

Рис. 4. Окно программы-терминала

По умолчанию каждый набираемый символ возвращается в виде «эха». Это может быть отключено с помощью параметра AE, который мы рассмотрим позже.

Описание AT-команд интерфейса EasyLink AT (AT API)

AT-команды используют символы ASCII и определенный набор полей, как показано в таблице 2.

Таблица 2. Символы ASCII и определенный набор полей, используемый AT-командами

Start of Frame Command Type Command ID Parameters End Of Frame
«AT» ‘P’/’+’ «i» «0001» \<CR>

Каждая команда завершается символом “Enter” (возврат каретки – Carriage Return ‘\r’), например:

AT+I 01<CR>

Пример работы с использованием AT-команд:

Reset:EasyLink-v1.00.04

AT+I 00<CR>

OK

ATPIE?<CR>

00124b0007c73082OK

OK

ATPPW?<CR>

0014OK

ATPPW=1<CR>

OK

ATPPW?<CR>

0001OK

ATPFR?<CR>

868000000OK

AT+TX Hello World!<CR>

OK

Команды могут быть двух типов:

  • Изменение или чтение параметра: ATPxx. Параметры, например, определяют выходную мощность или рабочую частоту. Пример команды для чтения рабочей частоты:

ATPFR?<CR>

  • Управляющие команды для совершения каких-либо действий: AT+xx. Например, отправить строку текстовых данных:

AT+TX Hello World!<CR>

Между командой и отправляемым текстом должен быть пробел.

Для чтения установленного значения после параметра ставится знак вопроса. Например, для чтения установленной выходной мощности команда будет выглядеть так:

ATPPW?<CR>

Запрошенный параметр выводится в десятичном или HEX-виде в зависимости от его типа, например:

-10<CR>

Здесь мы видим, что выходная мощность установлена на уровне -10 дБм (минимально возможная для CC1310).

Пример AT-команды по установке рабочей частоты ровно на 868 МГц (не ошибитесь в числе нулей!):

ATPFR=868000000<CR>

Ответ на установку параметра (если все введено правильно):

OK<CR>

Набор параметров (регистров), которыми можно манипулировать, приведен в таблице 3 (registers for the EasyLink API).

Таблица 3. Список команд изменения параметров

Команда (Параметр) R/W Описание Параметры
ATPST? R Чтение последнего статуса EasyLink. (EasyLink – это набор функций для отправки-приема пакетов rfEasyLinkNp, который разбирает («парсит») поступающие AT-команды и обращается к тем или иным функциям EasyLink) EasyLink status in 4B hex:

Success = 0000

Config_Error = 0001

Param_Error = 0002

Mem_Error = 0003

Cmd_Error = 0004

Tx_Error = 0005

Rx_Error = 0006

Rx_Timeout = 0007

Rx_Buffer_Error = 0008

Busy_Error = 0009

Aborted = 000a

ATPAE?

ATPAE =

R/W Разрешить/запретить эхо. (UART Echo Enable) 0 or 1 to enable/disable echo
ATPFR?

ATPFR =

R/W Чтение/установка частоты в Гц, например, 868125000 (Read/Write frequency in Hz) Frequency in 9B hex
ATPPW?

ATPPW =

R/W Чтение/установка выходной мощности в дБм (Read/Write tx power in дБм) Power in decimal between -10 to 14дБм. Note ccfg changes are required for 14дБм outpur power
ATPBM?

ATPBM =

R/W Чтение/установка режима ввода/отображения данных для Tx/Rx (Read/Write data mode for Tx/Rx data) Mode in 1B hex

0:ASCII

1:Binary

ATPIE? R Чтение адреса IEEE (неизменный, индивидуальный для каждой CC1310, Read IEEE address) None
ATPAS? R Чтение размера (длины) адреса в байтах (Read address size in Bytes) None
ATPTA?

ATPTA =

R/W Чтение/установка адреса для передачи. Это изменяемый адрес для избирательной отправки сообщения конкретному CC1310 с прошивкой rfEasyLinkNp (Read/Write Tx address) 1-8B Tx address in hex
ATPRT? R Чтение текущего времени радио. Абсолютное время начинается с момента инициализации радио, командой AT+I (Read current radio time) None
ATPTY?

ATPTY =

R/W Чтение/установка типа времени (Read/Write Time Type) Time in 1B hex

0:Absolute Time

1:Relative Time

ATPTT?

ATPTT =

R/W Абсолютное или относительное (в зависимости от установки типа времени TY) время для отправки пакета, то есть, время, когда включить TX (Absolute or relative (based on Time Type) radio time to Tx a packet) Absolute/relative time in units of 4MHz ticks in decimal OR 0 for immediate
ATPTR?

ATPTR =

R/W Абсолютное или относительное (в зависимости от установки типа времени TY) время для включения режима RX («на прием») (Absolute or relative (based on Time Type) radio time to Rx a packet)
ATPRO?

ATPRO =

R/W Относительное время для прекращения режима приема (Relative time for Rx timeout) Relative time in units of 4MHz ticks in decimal OR 0 for never
ATPLA? R Адрес доставки для последнего принятого пакета (Destination address of last Rx’ed message) None
ATPLT? R Чтение абсолютного времени последнего принятого пакета (Read absolute radio time of last Rx’ed message) None
ATPLR? R Чтение уровня сигнала RSSI для последнего принятого пакета (Read RSSI of last Rx’ed message) None
ATPF0?

ATPF0 =

R/W Чтение/установка адресного фильтра 0 (Read/Write address filter 0) 1-8B address in hex
ATPF1?

ATPF1 =

R/W Чтение/установка адресного фильтра 1 (Read/Write address filter 1) 1-8B address in hex
ATPF2?

ATPF2 =

R/W Чтение/установка адресного фильтра 2 (Read/Write address filter 2) 1-8B address in hex
ATPTM?

ATPTM =

R/W Чтение/установка режима «Тестирование» (Read/Write test mode) Test mode in 1B hex

0:None/Cancel

1:Tone/Carrier Wave

2:Modulated Signal

3:PER Tx

4:PER Rx

ATPPI?

ATPPI =

R/W Чтение/установка интервала отсылки пакетов при проведении теста контроля ошибок пакетов (Read/Write PER Tx Bursts Interval) 1B time between PER bursts in units of ms in Decimal
ATPPB?

ATPPB =

R/W Чтение/установка размеров пачки (Tx Burst Size) при проведении теста контроля ошибок пакетов (Read/Write PER Tx Burst Size) 1B Tx Burst Size in Hex
ATPPP?

ATPPP =

R/W Чтение/установка числа пакетов при проведении теста контроля ошибок пакетов (Read/Write Number of PER Tx/Rx Packets) 1B Tx/Rx Packets in Hex
ATPPL?

ATPPL =

R/W Чтение/установка размера пакета при проведении теста контроля ошибок передачи (Read/Write PER Tx/Rx Packet Length) 1B Tx/Rx Packet Length in Hex
ATPGM00?

ATPGM01?

ATPGM02?

ATPGM03?

ATPGM0x =

R/W Чтение/установка режима работы портов ввода-вывода. Управление линиями IOID_6, IOID_7, IOID_25, IOID_27 в соответствии с разводкой светодиодов на плате SmartRF06 (Read/Write GPIO Mode) 0:1 GPIO Value input/outpu
ATPGV00?

ATPGV01?

ATPGV02?

ATPGV03?

ATPGV0x =

R/W Чтение/установка логического уровня для 4 портов ввода-вывода. Управление линиями DIO_6, DIO_7, DIO_25, DIO_27 в соответствии с разводкой светодиодов на плате SmartRF06 (Read/Write GPIO Value) 0:1 GPIO Value

ВАЖНО! Для выполнения большинства команд с регистрами (параметрами) необходимо запустить программный слой EasyLink, то есть сначала требуется подать команду инициализации AT+I 00<cr> (как вариант, AT+I 01 или AT+I 02).

Управляющие команды (AT Control Command)

Эти команды имеют следующий вид:

AT+I 00<CR>

Ответ может быть такого вида:

OK<CR>

Управляющие команды приведены в таблице 4.

Таблица 4. Управляющие команды rfEasyLinkNp

Команда Описание Параметры
AT+I =

AT+I =

Инициализация радио Настройки радио (Phy setting)

00: For 50kbps 2-GFSK

01: For 625bps Long Range Mode

02: Сustom

AT+TX =

AT+tx =

Послать сообщение по адресу (Tx Address = PARAM PTA) в определенное время (at Tx Time = Param PTT) или немедленно, если значение параметра 0 или ранее заданное время уже прошло. После знака «=» первым должен идти пробел x Data Bytes
AT+RX

AT+rx

Включить радио на прием данных в определенное время (время установлено параметром PRT) или немедленно, если значение параметра 0 или ранее заданное время уже прошло. Прием включается на время, определенное параметром PRO Нет
AT+RS

AT+rs

Сброс микросхемы CC13xx Нет

Ответы на AT-команды (Сommand Responses)

Ответы на команды управления и команды записи параметров приведены в таблице 5.

Таблица 5. Ответы на управляющие команды

Ответ Описание
OK<CR> Команда или запись параметра выполнена успешно
Error 0001<CR> Запись/чтение параметра или команда не выполнена из-за ошибок в формате строки
Error 0002<CR> Запись/чтение параметра или команда не выполнена из-за неверной длины
Error 0003<CR> Запись/чтение параметра или команда не выполнена из-за ошибки в параметре
Error 0004<CR> Запись/чтение параметра или команда не выполнена из-за ошибки памяти
Error 0005<CR> Запись/чтение параметра или команда не выполнена из-за ошибки, возвращенной слоем EasyLink API. Причина ошибки сохранена в парамтре ST (Error From EasyLink API — EasyLink error is stored in Parameter «ST»)

Ответ на включение приемника, если активирован прием данных в символьном виде (ASCII Data Mode) и принят пакет, выглядит так:

RX: Hello World<CR>

OK<CR>

Для режима приема данных в шестнадцатеричном виде:

RX: 2fbb1aa8ec84045fb0c3e5236cb8cc5b3c<CR>

OK<CR>

Ответ на команду сброса:

RESET:vxx.xx.xx<CR>

Где vxx.xx.xx – это версия EasyLink API.

Режимы тестирования

Интерфейс EasyLink AT позволяет запускать следующие режимы работы для тестирования устройства:

  • генерация непрерывной несущей (Carrier Wave);
  • генерация модулированной несущей (Modulated Signal);
  • передатчик для теста контроля ошибок передачи (PER Tx);
  • приемник для теста контроля ошибок передачи (PER Rx).

Перед запуском тестов необходимо инициализировать устройство с помощью команды:

AT+I 00<CR>

В зависимости от значения (00, 01 или 02) применяются конкретные настройки радио (Phy settings) – модуляция, девиация, скорость и так далее.

00: Модуляция EasyLink_Phy_50kbps2gfsk:

// 50kbps 2-GFSK settings:

// Frequency: 868.00000 MHz

// Data Format: Serial mode disable

// Deviation: 25.000 kHz

// Packet Length Config: Variable

// RX Filter BW: 98 kHz

// Symbol Rate: 50.00000 kBaud

// Sync Word Length: 32 Bits

// Whitening: No whitening

01: EasyLink_Phy_625bpsLrm:

// 625bps LRM settings:

// Frequency: 868.00000 MHz

// Data Format: Serial mode disable

// Deviation: 5.000 kHz

// RX Filter BW: 39 kHz

// Symbol Rate: 10.00061 kBaud

// Sync Word Length: 32 Bits

// Whitening: No whitening

02: EasyLink_Phy_Custom:

Указаны значения по умолчанию. Предполагается, что разработчик пропишет здесь требуемые ему параметры радиоканала.

// Address: aa-bb

// Frequency: 868.00000 MHz

// Data Format: Serial mode disable

// Deviation: 25.000 kHz

// Packet Length Config: Variable

// Max Packet Length: 128

// Packet Length: 30

// RX Filter BW: 98 kHz

// Symbol Rate: 50.00000 kBaud

// Sync Word Length: 32 Bits

// TX Power: 14 дБм (requires define CCFG_FORCE_VDDR_HH = 1 in ccfg.c, see CC13xx/CC26xx Technical Reference Manual)

// Whitening: No whitening

Генерация непрерывной несущей (Carrier Wave)

Генерация несущей включается при установке режима тестирования 1 (Test Mode = 1) следующей командой:

ATPTM=1<CR>

Выйти из режима генерации несущей можно с помощью команды:

ATPTM=0<CR>

Генерация модулированной несущей (Modulated Signal)

Генерация модулированной несущей запускается при установке режима тестирования 2 (Test Mode = 2) с помощью следующей команды:

ATPTM=2<CR>

Выйти из режима генерации модулированной несущей можно с помощью команды:

ATPTM=0<CR>

Передатчик для теста контроля ошибок пакетов (PER Tx)

При установке режима тестирования 3 (Test Mode = 3) устройство включается на передачу для проведения теста контроля ошибок. Будет отправлено число пакетов, заданное параметром `PP`, или передача будет продолжаться бесконечно, если ATPPP = 0. Например, для отправки 100 пакетов в рамках теста PER Tx введите следующие команды:

ATPPP=100<CR>

ATPTM=3<CR>

Во время передачи PER Tx test CC13xx выдает сообщения об уже отправленном количестве пакетов:

TPER: 00

TPER: 01

TPER: 02

После отправки заданного количества пакетов выводится сообщение:

TPER: Done OK<CR>

Следующие параметры влияют на общее время отправки пакетов в рамках данного теста:

  • PPL: PER Tx Packet Length – длина пакета;
  • PPB: PER Tx Burst size – размер пачек;
  • PPI: Interval in ms between bursts – интервал между пачками в мс.

Приемник для теста контроля ошибок пакетов (PER Rx)

Устройство включается на прием для проведения теста контроля ошибок при установке режима тестирования 4 (Test Mode = 4). Будет принято число пакетов, заданное параметром “PP”, или прием будет продолжаться бесконечно, если параметр ATPPP = 0. Например, для подсчета количества ошибок при приеме 100 пакетов необходимо ввести следующие команды:

ATPPP=100<CR>

ATPTM=4<CR>

Во время прохождения теста выводятся строки о принятых пакетах и уровнях сигнала:

RPER: 00, 0001, 0000, -31

RPER: 01, 0002, 0000, -31

RPER: 02, 0003, 0000, -31

Расшифровка полей представлена в таблице 6.

Таблица 6. Расшифровка полей

Заголовок Порядковый номер Счетчик успешно принятых пакетов Счетчик пропущенных или неверно
принятых пакетов
RSSI
RPER: 2 3 0 -31

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

После завершения теста выводится сообщение:

<RPER>: Done OK

Практическая работа с АT-командами

Для получения практических навыков по работе с AT-командами и понимания логики работы рекомендуется проделать следующие операции.

Базовые действия:

  • выполните аппаратный сброс CC1310 (кнопкой RESET);
  • прочитайте IEEE-адрес чипа;
  • прочитайте текущую рабочую частоту. Она имеет неверное значение, так как радио еще не инициализировано;
  • прочитайте текущее время;
  • инициализируйте радио AT+I 00<cr>;
  • прочитайте текущую рабочую частоту;
  • прочитайте текущее время;
  • прочитайте выходную мощность, установленную по умолчанию;
  • выполните сброс устройства AT-командой.

Генерация несущей:

установите рабочую частоту, например, 869 МГц;

  • установите выходную мощность 10 дБм.
  • запустите тест немодулированной несущей;
  • наблюдайте уровень вашего сигнала с помощью SmartRFStudio или на индикаторе спектра;
  • измените уровень сигнала на значение -10 дБм;
  • проверьте результат с помощью SmartRFStudio (рисунок 5) или на анализаторе спектра.
Рис. 5. Отображение сигнала с разным уровнем RSSI в программе SmartRF Studio

Рис. 5. Отображение сигнала с разным уровнем RSSI в программе SmartRF Studio

Проведение теста ошибок пакетов:

Данный тест выполняется на двух платах с прошивками rfEasyLinkNp.

  • выполните аппаратный сброс платы;
  • инициализируйте радио в режиме 00;
  • установите выходную мощность передатчика -10 дБм;
  • установите число пакетов на передатчике = 100;
  • установите рабочую частоту приемника равной частоте передатчика;
  • установите на приемнике число пакетов = 50;
  • запустите тест – сначала режим приема, затем передачи;
  • ухудшите условия приема, выкрутив антенну на приемнике (возможно и на передатчике). Для имитации плохой связи, при необходимости, разнесите платы на расстояние нескольких метров.

Обмен произвольными сообщениями:

  • установите выходную мощность передатчика -10 дБм;
  • установите рабочую частоту приемника равной частоте передатчика;
  • посылайте текстовые сообщения с одной платы на другую;
  • проверяйте статус и время приема;
  • проверьте на практике влияние параметров на отправку-прием сообщений.

Управление светодиодами:

  • зажгите-погасите светодиоды, подключенные к линиям GPIO (рисунок 6).
Рис. 6. Управление светодиодами на плате TE-CC1350EV-868 с помощью AT-команд

Рис. 6. Управление светодиодами на плате TE-CC1350EV-868 с помощью AT-команд

Заключение

Использование прошивки rfEasyLink­Np превращает CC13xx в сетевой процессор, который полностью закрывает все вопросы, связанные с передачей данных по радиоканалу. Привычный UART и простые в понимании AT-команды позволяют добавить радиоканал 433/868 МГц в любое изделие. Разработчику не требуется никаких знаний по внутреннему программному устройству ядер CC13xx, работа с ним идет на уровне «черного ящика». В силу того, что исходный код rfEasyLinkNp полностью доступен, опытный программист может модифицировать существующие AT-команды или добавлять новые, исходя из задач собственного приложения. Компактный протокол управления rfEasyLinkNp не предъявляет никаких требований к хост-контроллеру, в качестве которого можно использовать 8-, 16-, 32-битный микроконтроллер любого производителя. Несмотря на простоту применения, сетевой процессор включает базовые возможности по построению радиосети из сотен узлов. CC13xx c прошивкой rfEasyLinkNp может с успехом работать в широком спектре приложений – от устройств «умного дома» до систем промышленной телеметрии.

Получение технической информации, заказ образцов, заказ и доставка.

Миниатюрный Bluetooth-датчик ускорения и температуры на базе CC2650

Новый опорный дизайн Texas Instruments демонстрирует, насколько миниатюрными могут быть беспроводные датчики, если их строить на основе системы-на-кристалле CC2650. Самый малогабаритный корпус CC13xx/CC26xx имеет размеры всего 4х4 мм. При этом чип содержит процессор Cortex-M3, радио, встроенный DC/DC-преобразователь и отдельный контроллер сенсоров. Законченный беспроводной батарейный датчик ускорения и температуры uTag умещается на плате 16х9 мм и при этом может работать до 3 месяцев от миниатюрного элемента питания CR1612. Данные передаются на любой гаджет, поддерживающий технологию Bluetooh Low Energy. Для уменьшения размера CC2650 работает без часового кварцевого резонатора 32 кГц, вместо которого используется встроенный RC-генератор (RCOSCLF). Для того, чтобы отвечать требованиям спецификации Bluetooth (±500 ppm) необходимо как минимум один раз в секунду производить программную калибровку RCOSCLF.
Устройство измеряет ускорение с помощью MEMS-акселерометра, а также температуру окружающей среды с помощью I²C-датчика TMP102, который отличается высокой линейностью и имеет точность ±0,5°С. TMP102 не требует калибровки, сложных расчетов или справочных таблиц, чтобы получить точное значение температуры. Встроенный 12-битный АЦП позволяет производить измерения с разрешающей способностью до 0,0625°С.
Разработчику предлагается использовать готовую схему, перечень элементов и разводку печатной платы. В качестве программного обеспечения можно применять различные демонстрационные проекты из набора ПО BLE Stack v.2.1.0 и Code Composer Studio CCS6.1.
Описание датчика доступно по ссылке:

/wordpress/wp-content/uploads/2016/01/tidub25.pdf.

TI_2560_04_16

Наши информационные каналы

О компании Texas Instruments

В середине 2001 г. компании Texas Instruments и КОМПЭЛ заключили официальное дистрибьюторское соглашение, которое явилось результатом длительной и успешной работы КОМПЭЛ в качестве официального дистрибьютора фирмы Burr-Brown. (Как известно, Burr-Brown вошла в состав TI так же, как и компании Unitrode, Power Trend и Klixon). С этого времени компания КОМПЭЛ получила доступ к поставке всей номенклатуры производимых компанией TI компонентов, технологий и отладочных средств, а также ...читать далее