Протокол связи RC232
Встроенный протокол связи RC232 (не путать с RS-232) реализован в целом ряде модулей RADIOCRAFTS.
Особенности протокола RC232
- Пакетный протокол передачи данных с полностью реализованным уровнем доступа к среде MAC (Medium Access Control)
- "Прозрачный" и буферизированный режимы передачи данных
- Адресация
- Физический радиоканал (нижний уровень)
- Несколько схем пониженного энергопотребления
- Простой UART интерфейс
- Совместимость с RS232/422/485
- Возможность реализации аппаратного управления потоком данных
- Реализация различных топологий для передачи данных
- Точка-точка
- Точка - несколько модулей (звезда)
- Peer-to-peer (P2P)
Протокол RC232 позволяет организовать работу нескольких модулей в одной зоне при условии "радиовидимости". Необходимо помнить, что по этому протоколу работают все модули, кроме серии RC 22xx. Количество одновременно работающих в зоне модулей может достигать 65536 - 256 кластеров по 256 модулей в каждом кластере. При этом модули могут работать в следующих режимах:
- Пакетном режиме - "буферированном". При этом передаваемые через последовательный порт байты накапливаются в о внутреннем буфере, а затем передаются в эфир пакетом определенного формата;
- Прозрачном асинхронном режиме - "не буферированном". Заявленный режим возможен как частный случай пакетного режима с числом байтов данных в пакете равным единице;
- Параметр PACKET_LENGTH изменяет размера внутреннего буфера, по заполнении которого данные передаются в эфир. Передача данных может быть инициирована также при обнаружении символа окончания пакета - параметр PACKET_END_CHARACTER или по "тайм-ауту" - паузе в передаче байтов через последовательный порт - параметр PACKET_TIMEOUT;
- Адресация передаваемых данных определенному модулю в кластере или всем модулям в кластере. Каждый модуль имеет адрес кластера SYSTEM_ID и собственный адрес в кластере. Значения UNIQUE_ID должны быть различными у модулей в одном кластере. Для передачи данных необходимо задать адрес модуля, которому они предназначены - DESTINATION_ID. Таким образом DESTINATION_ID должен содержать UNIQUE_ID адресуемого модуля.
В случае широковещательной посылки, когда данные предназначены всем модулям в кластере в регистр DESTINATION_ID записывается значение широковещательной посылки BROADCAST_ID, по умолчанию равной 0хFF = 255
- Включать или отключать верификацию передаваемых данных с использованием циклического избыточного кода (CRC) - параметр CRC_MODE. Если верификация включена и принят пакет с ошибкой, он не передается на выход последовательного порта и теряется. Для того, чтобы не терять ошибочные данные, верификацию необходимо отключить. В этом случае, задача анализа ошибок должна решаться в программе пользователя.
Все модули серий RC10x0, RC12x0, RC2000 и RC2100 имеют асинхронный последовательный интерфейс UART и синхронный последовательный интерфейс, подобный I2C.
UART поддерживает работу как с управлением потоком (flow control), так и без него - параметр DATA_INTERFACE. Поскольку данные, поступающие через UART, накапливаются во внутреннем буфере, рекомендуется использовать режим с управлением потоком с помощью сигналов CTS, RTS (задaется параметром UART_FLOW_CTRL). Скорость передачи данных через UART составляет 19200 кБод и может быть изменена только у модулей серии RC12x0 UART_BAUD_RATE. UART также позволяет работать с интерфейсом RS485. При этом вывод CTS/RXTX/RXEN соединяется с выводом управления передачей (приемом) микросхемы-драйвера RS485.
Параметры конфигурации модуля можно считать из памяти по команде "Test mode 0" (символ "0", шестнадцатиричное значение 0х30) и просмотреть с помощью программы Look RS232 или принять поток байтов параметров с помощью контроллера в embedded устройстве. Программа Hyperterminal, к сожалению, не позволяет корректно отобразить параметры модуля. Параметры конфигурации модуля и их адреса представлены в таблице.
Таблица. Параметры конфигурации модуля и их адреса
Parameter |
Description |
Address hex |
Argument dec |
Factory setting hex (dec) |
Comment |
Radio configuration |
RF_CHANNEL |
Default RF channel |
0x00 |
RC1040: 1-5 RC1080: 1-8 RC1090: 1-9 RC1240: 1-69 RC1250: 1-80 RC1280: 1-80 RC1290: 1-51 |
0x03 (3) 0x02 (2) 0x05 (5) 0x36 (54) 0x31 (49) 0x29 (41) 0x1A (26) |
See data sheet for channel frequencies. For variants not listed here, refer to the specific data sheet. |
RF_POWER |
Default RF output power |
0x01 |
RC1040: 1-5 RC1080: 1-5 RC1090: 1-5 RC1240: 1-5 RC1250: 1-5 RC1280: 1-5 RC1290: 1-5 |
0x05 (5) 0x05 (5) 0x05 (5) 0x05 (5) 0x05 (5) 0x05 (5) 0x04 (4) |
See data sheet for output power levels. For variants not listed here, refer to the specific data sheet. |
RF_DATA_RATE |
Default RF data rate |
0x02 |
RC10x0: 1-5 RC1240: NA RC1250: NA RC1280: NA RC1290: 3-5 |
0x05 (5) 0x03 (3) 0x02 (2) 0x03 (3) 0x03 (3) |
RC1240 and RC1280 have fixed data rate. 1: 1.2 kbit/s 2: 2.4 kbit/s 3: 4.8 kbit/s 4: 9.6 kbit/s 5: 19.2 kbit/s For variants not listed here, refer to the specific data sheet. |
Reserved |
|
0x03 |
|
0x00 (0) |
|
Reserved |
|
0x04 |
|
0x02 (2) |
|
RSSI_MODE |
RSSI mode |
0x05 |
RC10x0 only: 0:Disabled 1: Analogue RSSI enabled |
0x01 (1) |
RC12x0 does not have analogue RSSI. Use the 'S' command instead. |
Reserved |
|
0x06 |
|
0x64(100) |
|
Reserved |
|
0x07 |
|
0x00 (0) |
|
Reserved |
|
0x08 |
|
0x00 (0) |
|
Reserved |
|
0x09 |
|
0x00 (0) |
|
Radio packet configuration |
PREAMBLE_LENGTH |
|
0x0A |
4-8 bytes |
0x08 (8) |
Do not set above 8 |
SOF_CHARACTER |
|
0x0B-0x0D |
|
0xD391D A |
Do not change |
ABSOLUTE_MAX_PACKET_LENGTH |
|
0x0E |
|
0x80 (128) |
Limited by hardware. Do not change. |
PACKET_LENGTH |
Max packet length. When buffer is full, modem will transmit data |
0x0F |
0x01-0x80 (1-128) |
0x80 (128) |
|
PACKET_TIMEOUT |
Time before modem timeout and transmit buffered data |
0x10 |
0x00-0xFE (0-254) 0x00 (0): None 0x01 (1): 32 ms 0x02 (2): 48 ms 0x03 (3): 64 ms 0x7C (124): 2 s 0xF9 (249): 4 s |
0x7C (124) |
None means packet timeout is disabled (not 0 s). Use packet length or end character instead. Timeout value is (PACKET_TIMOEOUT x16 ms) + 0/16 ms min/max 0xFE (254) is max, giving 4.080 sec. Default is 2 s = 0x7C (124) |
PACKET_END_CHARACTER |
|
0x11 |
0: None 0x0D (13): CR 0x0A (10): LF 0x5A (90): 'Z' |
0x00 (0) |
ASCII character |
Medium access, addressing and network management |
Reserved |
|
0x12 |
|
0x02 (2) |
|
MAC_MODE |
|
0x13 |
0:Transparent 1: Buffered |
0x01 (1) |
Transparent means using RXEN and TXEN. |
ADDRESS_MODE |
|
0x14 |
0: No addressing 1: Reserved 2: Use addressing |
0x02 (2) |
Using addressing adds SYSTEM_ID and DESTINATION_ID to the radio packet. Set to 0 in transparent mode. |
CRC_MODE |
|
0x15 |
0: None 2: CRC16 |
0x02 (2) |
Set to 0 in transparent mode. |
Reserved |
|
0x16 |
|
0x00 (0) |
|
Reserved |
|
0x17 |
|
0x00 (0) |
|
Reserved |
|
0x18 |
|
0x00 (0) |
|
UNIQUE_ID |
Unique ID (UID) |
0x19 |
0-255 |
0x01 (1) |
|
SYSTEM_ID |
System (net or family) ID (SID) |
0x1A |
0x00-0xFF (0-255) |
0x01 (1) |
|
Reserved |
|
0x1B |
|
0x0A (10) |
|
Reserved |
|
0x1C |
|
0x0A (10) |
|
Reserved |
|
0x1D |
|
0x0A (10) |
|
Reserved |
|
0x1E |
|
0x0A (10) |
|
Reserved |
|
0x1F |
|
0x01 (1) |
|
Reserved |
|
0x20 |
|
0x01 (1) |
|
DESTINATION_ID |
Default destination address |
0x21 |
|
0x01 (1) |
Set to same as BROADCAST_ADDRESS when broadcasting. |
Reserved |
|
0x22 |
|
0x01 (1) |
|
Reserved |
|
0x23 |
|
0x00 (0) |
|
Reserved |
|
0x24 |
|
0x00 (0) |
|
Reserved |
|
0x24 |
|
0x00 (0) |
|
Reserved |
|
0x26 |
|
0x00 (0) |
|
Reserved |
|
0x27 |
|
0x04 (4) |
|
BROADCAST_ADDRESS |
Broadcast address |
0x28 |
0x00-0xFF (0-255) |
0xFF (255) |
All nodes accept messages to this address. |
Reserved |
|
0x29 |
|
0x08 (8) |
|
Reserved |
|
0x2A |
|
0x00 (0) |
|
Reserved |
|
0x2B |
|
0x00 (0) |
|
Reserved |
|
0x2C |
|
0x00 (0) |
|
Reserved |
|
0x2D |
|
0x00 (0) |
|
Reserved |
|
0x2E |
|
0x00 (0) |
|
Reserved |
|
0x2F |
|
0x00 (0) |
|
Data and configuration interface, UART Serial Port |
UART_BAUD_RATE |
Baud rate |
0x30 |
RC12x0 only: 0x00: Not used 0x01: 600 0x02: 1200 0x03: 2400 0x04. 4800 0x05: 9600 0x06: 19200 |
0x06 (6) |
BE CAREFUL IFCHANGING AS HOST MAY LOOSE CONTACT WITH MODULE! Does not take effect until module is re-booted /reset. RC10x0 UART baud rate cannot be changed. |
Reserved |
|
0x31 |
|
0x08 (8) |
|
Reserved |
|
0x32 |
|
0x00 (0) |
|
Reserved |
|
0x33 |
|
0x01 (1) |
|
Reserved |
|
0x34 |
|
0x05 (5) |
|
UART_FLOW_CTRL |
UART flow control |
0x35 |
0: None 1:CTS only 3:CTS/RTS 4:RXTX(RS485) |
0x00 (0) |
Set to 0 in transparent mode. |
DATA_INTERFACE |
Data interface |
0x36 |
0x00: UART using RXD and TXD 0x01: Synchronous interface (SDA, SCL) using RXEN and TXEN for direction control |
0x00 (0) |
When buffered mode is selected for MAC_MODE use UART. For flow control, see above. When transparent mode is selected for MAC_MODE use Synchronous interface. |
Reserved |
|
0x37 |
|
0x01 (1) |
|
Re served |
|
0x38 |
|
0x2B (43) |
|
Reserved |
|
0x39 |
|
0x00 (0) |
|
Reserved |
|
0x3A |
|
0x01 (1) |
|
Exit from memory configuration |
|
0xFF |
No argument should be sent |
|
To exit from command mode the 'X' command must be sent after '>' is received. |
Модули управляются системой команд через последовательный порт. Можно выполнить настройку, используя программу для работы с последовательным портом ПК , например "Hyperterminal", подключив модуль с помощью микросхемы-адаптера RS-232. Такое сопряжение уже выполнено на плате из комплекта разработчика. Никакого специального программного обеспечения не требуется. Команды позволяют изменять параметры модуля - частотный канал, мощность передатчика, адрес модуля в кластере, номер кластера, скорость передачи данных, считывать уровень сигнала в приемном тракте (RSSI) и другие.
Перечень команд для управления модулем приведен в таблице.
Parameter |
Command |
Argument in hex (decimal) |
Note |
Channel |
'C' - 0x43 |
RC1040: 0x01-0x05 (1-5) RC1080: 0x01-0x08 (1-8) RC1090: 0x01-0x09 (1-9) RC1240: 0x01-0x45 (1-69) RC1250: 0x01-0x50 (1-80) RC1280: 0x01-0x50 (1-80) RC1290: 0x01-0x33 (1-51) |
Data is stored in volatile memory only. For variants not listed here, refer to the specific data sheet. |
Output power |
'P' - 0x50 |
0x01-0x05 (1-5) |
Data is stored in volatile memory only. |
Signal Strength (RSSI) |
'S' - 0x53 |
RC12x0: return one byte indicating the signal strength RC10x0: No function |
|
Destination address |
'T' - 0x54 |
0x00 - 0xFF (0-255) |
Data is stored in volatile memory only. |
Memory configuration |
'M' - 0x4D |
(Address, Data): see list of parameters below. 0xFF exits memory configuration. |
Used to enter memory configuration menu. Parameters changed are stored in non-volatile memory. |
Exit command |
'X' - 0x58 |
(none) |
Exit to normal operation mode. All changes of parameters take effect. |
Sleep mode |
'Z' - 0x5A |
(none) |
CONFIG pin must be asserted while in SLEEP mode. Exit sleep mode by releasing CONFIG pin. |
Test mode 0 |
'0' - 0x30 |
(none) |
List all configuration memory parameters |
Test mode 1 |
'1' - 0x31 |
(none) |
TX carrier (lower FSK frequency) |
Test mode 2 |
'2' - 0x32 |
(none) |
TX modulated signal RC10x0: FSK square wave RC12x0: PN9 sequence Test mode 1 must be used before 2 can be used. Return to Test mode 1 before exiting configuration mode |
Таким образом, можно реконфигурировать сеть в процессе работы. Модуль переводится в режим конфигурирования отрицательным перепадом напряжения на выводе CONFIG. Выход из режима конфигурирования производится подачей команды 0xFF (Exit from memory configuration), после чего происходит запись установок в энергонезависимую память. Команда "X" переводит модуль в рабочий режим, теперь все байты, принимаемые по последовательному порту, интерпретируются, как данные.
Ниже для примера приведена последовательность действий по настройке модуля на 3-й канал:
- Подать низкий логический уровень на вывод CONFIG
- После подтверждения ">" подать на CONFIG высокий логический уровень
- Команда "C" (0х43) ответ модуля - ">"
- Аргумент "3" (0х03) дожидаемся ответа модуля - ">"
- Выход из режима конфигурации - команда "Х" (0х58)