feat: init
This commit is contained in:
114
include/radar_protocol.h
Normal file
114
include/radar_protocol.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* @file radar_protocol.h
|
||||
* @brief R60ABD1 60G 毫米波雷达通信协议定义
|
||||
*
|
||||
* 协议: SIP-S v1.0 串口协议 (云帆瑞达 Micradar)
|
||||
* 帧格式: 帧头(2B) + 控制字(1B) + 命令字(1B) + 长度(2B) + 数据(NB) + 校验(1B) + 帧尾(2B)
|
||||
*/
|
||||
|
||||
#ifndef RADAR_PROTOCOL_H
|
||||
#define RADAR_PROTOCOL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// ============================================================
|
||||
// 帧定界符
|
||||
// ============================================================
|
||||
#define FRAME_HEADER_1 0x53 // 'S'
|
||||
#define FRAME_HEADER_2 0x59 // 'Y'
|
||||
#define FRAME_TAIL_1 0x54 // 'T'
|
||||
#define FRAME_TAIL_2 0x43 // 'C'
|
||||
|
||||
#define FRAME_HEADER_SIZE 2
|
||||
#define FRAME_TAIL_SIZE 2
|
||||
#define FRAME_MIN_SIZE 8 // 最小帧: 头2+控制1+命令1+长度2+校验1+尾2 = 9 字节
|
||||
|
||||
// ============================================================
|
||||
// 控制字 (Control Word)
|
||||
// ============================================================
|
||||
enum RadarControl : uint8_t {
|
||||
CTRL_HEARTBEAT = 0x01, // 心跳包
|
||||
CTRL_PRODUCT_INFO = 0x02, // 产品信息
|
||||
CTRL_OTA = 0x03, // OTA 升级
|
||||
CTRL_WORK_STATUS = 0x05, // 工作状态
|
||||
CTRL_DETECT_RANGE = 0x07, // 探测范围
|
||||
CTRL_PRESENCE = 0x80, // 人体存在
|
||||
CTRL_BREATHING = 0x81, // 呼吸检测
|
||||
CTRL_SLEEP = 0x84, // 睡眠监测
|
||||
CTRL_HEART_RATE = 0x85, // 心率监测
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 命令字 (Command Word)
|
||||
// ============================================================
|
||||
enum RadarCommand : uint8_t {
|
||||
CMD_QUERY = 0x01, // 查询命令
|
||||
CMD_REPORT = 0x02, // 主动上报
|
||||
CMD_SET = 0x03, // 设置命令
|
||||
CMD_ACK = 0x04, // 应答
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 工作状态命令 (CTRL_WORK_STATUS 下的子命令)
|
||||
// ============================================================
|
||||
enum WorkStatusCmd : uint8_t {
|
||||
WS_INIT_COMPLETE = 0x01, // 初始化完成
|
||||
WS_INIT_QUERY = 0x81, // 查询初始化状态
|
||||
WS_POS_OUT_BOUNDS = 0x07, // 位置超出范围
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 呼吸状态
|
||||
// ============================================================
|
||||
enum RespirationStatus : uint8_t {
|
||||
RESPI_NORMAL = 0, // 正常 (10~25 次/分)
|
||||
RESPI_HIGH = 1, // 过高 (>25)
|
||||
RESPI_LOW = 2, // 过低 (<10)
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 睡眠状态
|
||||
// ============================================================
|
||||
enum SleepStatus : uint8_t {
|
||||
SLEEP_AWAKE = 0, // 清醒
|
||||
SLEEP_LIGHT = 1, // 浅睡
|
||||
SLEEP_DEEP = 2, // 深睡
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 帧解析状态机
|
||||
// ============================================================
|
||||
enum FrameState {
|
||||
STATE_IDLE, // 等待帧头 0x53
|
||||
STATE_GOT_HEADER1, // 已收到 0x53, 等待 0x59
|
||||
STATE_GOT_HEADER2, // 已收到帧头, 等待控制字
|
||||
STATE_GOT_CONTROL, // 已收到控制字, 等待命令字
|
||||
STATE_GOT_COMMAND, // 已收到命令字, 等待长度高字节
|
||||
STATE_GOT_LEN_H, // 已收到长度高字节, 等待长度低字节
|
||||
STATE_GOT_LEN_L, // 已收到长度低字节, 读取数据
|
||||
STATE_GOT_DATA, // 数据接收完成, 等待校验
|
||||
STATE_GOT_CHECKSUM, // 已收到校验, 等待帧尾 0x54
|
||||
STATE_GOT_TAIL1, // 已收到 0x54, 等待 0x43
|
||||
STATE_FRAME_COMPLETE, // 帧接收完成
|
||||
};
|
||||
|
||||
// ============================================================
|
||||
// 帧缓冲区大小
|
||||
// ============================================================
|
||||
#define RADAR_FRAME_BUF_SIZE 128 // 单帧最大缓冲区
|
||||
#define RADAR_RING_BUF_SIZE 512 // 环形接收缓冲区
|
||||
|
||||
// ============================================================
|
||||
// 解析后的雷达帧数据 (原始)
|
||||
// ============================================================
|
||||
struct RadarFrame {
|
||||
uint8_t control;
|
||||
uint8_t command;
|
||||
uint16_t data_length;
|
||||
uint8_t data[RADAR_FRAME_BUF_SIZE];
|
||||
uint8_t checksum;
|
||||
bool valid; // 校验通过
|
||||
uint32_t timestamp;
|
||||
};
|
||||
|
||||
#endif // RADAR_PROTOCOL_H
|
||||
Reference in New Issue
Block a user