140 lines
3.7 KiB
C
140 lines
3.7 KiB
C
#ifndef _E32_DEMO_H_
|
||
#define _E32_DEMO_H_
|
||
|
||
#include "e32_hal.h"
|
||
|
||
typedef enum
|
||
{
|
||
OFF = 0x00,
|
||
ON = 0x01,
|
||
}on_off_t;
|
||
|
||
typedef enum
|
||
{
|
||
RADIO_RATE_2400 = 0x02,
|
||
RADIO_RATE_4800 = 0x03,
|
||
RADIO_RATE_9600 = 0x04,
|
||
RADIO_RATE_19200 = 0x05,
|
||
RADIO_RATE_38400 = 0x06,
|
||
RADIO_RATE_62500 = 0x07,
|
||
}radio_rate_t;
|
||
|
||
typedef enum
|
||
{
|
||
UART_8N1 = 0x00,
|
||
UART_8O1 = 0x01,
|
||
UART_8E1 = 0x02,
|
||
}uart_parity_t;
|
||
|
||
typedef enum
|
||
{
|
||
UART_RATE_1200 = 0x00,
|
||
UART_RATE_2400 = 0x01,
|
||
UART_RATE_4800 = 0x02,
|
||
UART_RATE_9600 = 0x03,
|
||
UART_RATE_19200 = 0x04 ,
|
||
UART_RATE_38400 = 0x05,
|
||
UART_RATE_57600 = 0x06,
|
||
UART_RATE_115200= 0x07,
|
||
}uart_rate_t;
|
||
|
||
typedef enum
|
||
{
|
||
WOR_PERIOD_250MS = 0x00,
|
||
WOR_PERIOD_500MS = 0x01,
|
||
WOR_PERIOD_750MS = 0x02,
|
||
WOR_PERIOD_1000MS = 0x03,
|
||
WOR_PERIOD_1250MS = 0x04,
|
||
WOR_PERIOD_1500MS = 0x05,
|
||
WOR_PERIOD_1750MS = 0x06,
|
||
WOR_PERIOD_2000MS = 0x07,
|
||
}wor_period_t;
|
||
|
||
typedef enum
|
||
{
|
||
TX_POWER_DBM_30 = 0x00,
|
||
TX_POWER_DBM_27 = 0x01,
|
||
TX_POWER_DBM_24 = 0x02,
|
||
TX_POWER_DBM_21 = 0x03,
|
||
}transmit_power_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
/* 00H是固定的HEAD,无法配置 */
|
||
|
||
/* ======== 用户配置寄存器 01H ======== */
|
||
struct
|
||
{
|
||
uint8_t address_h; /* 模组地址 (用户配置寄存器地址: 01H和02H) 不同地址的模组无法直接互通数据(广播地址除外); 65535为广播地址,可以群发信息 */
|
||
}register_1;
|
||
|
||
/* ======== 用户配置寄存器 02H ======== */
|
||
struct
|
||
{
|
||
uint8_t address_l;
|
||
}register_2;
|
||
|
||
/* ======== 用户配置寄存器 03H ======== */
|
||
union {
|
||
uint8_t value;
|
||
struct
|
||
{
|
||
radio_rate_t radio_rate : 3; /* 无线空中速率 (寄存器地址: 03H Bit2-0) 空中速率越高,发送数据越快,但接收灵敏度会下降,表现为通信距离缩短*/
|
||
uart_rate_t uart_baud_rate : 3; /* 串口波特率 (寄存器地址: 03H Bit7-5) 配置模式(模式2)强制固定波特率为9600,其余传输模式时为用户配置串口波特率 */
|
||
uart_parity_t uart_parity : 2; /* 串口校验类型 (寄存器地址: 03H Bit4-3) */
|
||
}field;
|
||
}register_3;
|
||
|
||
/* ======== 用户配置寄存器 04H ======== */
|
||
struct
|
||
{
|
||
uint8_t channel; /* 信道编号 (寄存器地址: 04H) 具体载波频率与频段类型有关,载波频率 = 信道0起始频率 + (1MHz x 信道编号) */
|
||
}register_4;
|
||
|
||
/* ======== 用户配置寄存器 05H ======== */
|
||
union {
|
||
uint8_t value;
|
||
struct
|
||
{
|
||
transmit_power_t tx_power : 2; /* 发射功率 (寄存器地址: 05H Bit1-0) 不同功率模组的功率分档不一致,具体数值需要参考模组手册 */
|
||
on_off_t packet_fec : 1; /* 前向纠错FEC (寄存器地址: 05H Bit2 ) 双发双端必须一致,否则无法通信。开启后,纠错能力增强(抗干扰),但传输时间也会加长 */
|
||
wor_period_t wake_on_radio_period : 3; /* 空中唤醒WOR周期 (寄存器地址: 05H Bit2-0) 收发双端设定周期最好一样,否则容易出现无法唤醒现象 */
|
||
on_off_t reserve : 1; /* 保留 IO驱动方式*/
|
||
on_off_t specify_target : 1; /* 指定目标传输,也叫定点模式 (寄存器地址: 05H Bit7 ) 将用户串口传入数据的前三字节用来改变地址与信道 */
|
||
}field;
|
||
}register_5;
|
||
|
||
}e32_register_t;
|
||
|
||
typedef enum
|
||
{
|
||
REQUEST_CMD_CONFIG = 0x00,
|
||
REQUEST_CMD_NAME ,
|
||
REQUEST_CMD_VERSION ,
|
||
}request_cmd_t;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t address_h;
|
||
uint8_t address_l;
|
||
uint8_t channel;
|
||
uint8_t data[237];//定点传输(指定目标)单包数据不得超过237字节,否则超出部分数据会丢失
|
||
}e32_specify_target_buffer_t;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t command;
|
||
uint8_t config[20];
|
||
}e32_hex_cmd_buffer_t;
|
||
|
||
typedef union
|
||
{
|
||
uint8_t opt_buffer[1024];
|
||
e32_hex_cmd_buffer_t hex_cmd;
|
||
e32_specify_target_buffer_t target;
|
||
}e32_opt_buffer_t;
|
||
|
||
#endif
|
||
|