Files
E32_433_dev/Core/Inc/e32_demo.h
2026-04-10 20:26:51 +08:00

140 lines
3.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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