通信协议说明.md 4.3 KB

STM32 MCU Lora通信协议说明

1. 概述

本文档描述了STM32 MCU基于LoRa无线通信模块的数据传输协议。该协议用于按键事件检测和上报,电池状态监控,以及设备在线状态维护。

2. 通信硬件

  • MCU型号: STM32F030系列
  • 通信模块: LoRa模块
  • 通信方式: UART接口,波特率设置为9600bps
  • 通信频率: 483.2MHz (可配置)
  • 通信速率: 1868bps (可配置)

3. 消息格式

3.1 发送消息格式

发送消息采用如下格式:

$XXXX<LORA7>,<E><V>#\r\n

其中:

  • $: 消息起始符
  • XXXX: 设备MAC地址 (4字节)
  • LORA7: 固定设备标识
  • ,: 分隔符
  • E: 事件类型代码 (ASCII字符,实际为事件类型值+48)
  • V: 事件数值 (ASCII字符,实际为事件数值+48)
  • #: 消息结束符
  • \r\n: 回车换行

示例: $ABCDEFGLORA7,1F#\r\n

总长度: 16字节

3.2 接收消息格式

接收消息格式与发送格式相同,MCU会检查消息中的MAC地址是否与自身MAC地址匹配,如果匹配则处理该消息。

4. 事件类型定义

系统支持以下事件类型:

事件类型 十六进制值 描述 详细消息示例
VALUE_UNKOWN 0x00 未知事件 $ABCDFGLORA7,01#\r\n
VALUE_CALL 0x01 面板呼叫事件 $ABCDFGLORA7,11#\r\n
VALUE_CANCEL 0x02 取消呼叫事件 $ABCDFGLORA7,21#\r\n
VALUE_NURSING 0x03 护理呼叫事件 $ABCDFGLORA7,31#\r\n
VALUE_CB 0x04 增援呼叫事件 $ABCDFGLORA7,41#\r\n
VALUE_UNPIN 0x05 拔针事件 $ABCDFGLORA7,51#\r\n
VALUE_C_D 0x06 更换药物事件 $ABCDFGLORA7,61#\r\n
VALUE_SOS 0x07 紧急事件 $ABCDFGLORA7,71#\r\n
VALUE_HANDLE_CALL 0x08 手柄呼叫事件 $ABCDFGLORA7,81#\r\n
VALUE_CANCEL_TO 0x09 取消超时事件 $ABCDFGLORA7,91#\r\n
VALUE_ONLINE_FB 0x18 设备在线心跳 $ABCDFGLORA7,H1#\r\n (H=0x18+48=72)
VALUE_BAT_LOW 0x1C 电池电量低事件 $ABCDFGLORA7,L1#\r\n (L=0x1C+48=76)

5. 事件数值定义

事件数值用于表示事件的附加信息:

事件数值 描述
KEY_EVENT_0 0 - 默认值
KEY_EVENT_1 1 - 常用事件值
KEY_EVENT_3 2 - 备用事件值

6. 按键与事件映射

设备上的物理按键与事件类型的映射关系:

物理按键 引脚 事件标记 实际触发事件
CANCEL_KEY PA9 EVENT_MARK_CANCEL VALUE_CB (增援)
REINFORCE_KEY PA12 EVENT_MARK_CB VALUE_NURSING (护理)
NURSE_KEY PA11 EVENT_MARK_NURSE VALUE_CALL (呼叫)
CALL_KEY PA10 EVENT_MARK_CALL VALUE_CANCEL (取消)
UNPIN_KEY PA7 EVENT_MARK_UNPIN VALUE_UNPIN (拔针)
HADLE_KEY PB0 EVENT_MARK_HANDLE VALUE_HANDLE_CALL (手柄呼叫)
CHANGE_KEY PB1 EVENT_MARK_C_D VALUE_C_D (更换药物)

7. 通信流程

7.1 设备初始化

  1. MCU启动时初始化GPIO、ADC、RTC、定时器和UART
  2. 从Flash读取设备MAC地址
  3. 配置LoRa模块通信参数
    • 工作模式: 透传模式
    • 工作频率: 483.2MHz
    • 通信速率: 1868bps

7.2 事件检测与上报

  1. MCU通过GPIO中断或定时扫描检测按键状态
  2. 当检测到按键按下时,设置对应的事件标志位
  3. 在主循环中检查事件标志位,根据标志位调用事件响应函数
  4. 事件响应函数发送对应的事件消息,一般发送3次以提高可靠性
  5. 发送消息时会添加随机延时以避免冲突

7.3 心跳与电池检测

  1. MCU定期上报心跳消息以维持在线状态
  2. 通过ADC检测电池电压
  3. 当电池电压低于阈值时,发送低电量事件

7.4 低功耗管理

  1. 处理完事件后,MCU进入待机模式以节省电量
  2. 通过RTC闹钟或外部中断唤醒MCU

8. LoRa模块配置命令

LoRa模块通过UART接口接收以下AT命令进行配置:

命令 说明
AT+WORKMODE=82 设置为AT命令模式
AT+WORKMODE=81 设置为透传模式
AT+FREQ=483200000,483200000,483200000,483200000 设置工作频率为483.2MHz
AT+RATE=6,6 设置通信速率为1868bps
AT+ENTERSLEEP 使模块进入休眠模式

9. 异常处理

  1. UART通信错误: 重新初始化UART
  2. 低电量检测: 发送低电量事件
  3. 通信超时: 重新发送