# USB2LoraBleBridge **Repository Path**: NOP404_admin/usb2-lora-ble-bridge ## Basic Information - **Project Name**: USB2LoraBleBridge - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-28 - **Last Updated**: 2026-08-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于STC8H8K64U的双模无线通信网关 # 需求说明与使用说明文档(最终完整版) **版本:V7.0** **日期:2026年6月28日** ## 目录 1. [项目概述](#1-项目概述) 2. [硬件设计说明](#2-硬件设计说明) 3. [引脚分配总表](#3-引脚分配总表) 4. [功能需求说明](#4-功能需求说明) 5. [指示灯状态定义](#5-指示灯状态定义) 6. [按键操作逻辑](#6-按键操作逻辑) 7. [软件架构设计](#7-软件架构设计) 8. [性能指标](#8-性能指标) 9. [使用说明](#9-使用说明) 10. [开发与测试计划](#10-开发与测试计划) 11. [附录](#11-附录) ## 1. 项目概述 ### 1.1 项目名称 基于STC8H8K64U的双模无线通信网关 ### 1.2 项目背景 设计一款基于STC8H8K64U微控制器的双模无线通信网关设备,集成E22-400T22S LoRa模块与HLK-B26蓝牙模块,实现LoRa与蓝牙间的数据桥接及USB转双串口功能。 ### 1.3 设计目标 | 序号 | 目标 | 说明 | |:---:|:---|:---| | 1 | 双模无线通信 | 同时集成LoRa(E22-400T22S)和蓝牙(HLK-B26) | | 2 | USB转双串口 | PC通过USB同时与两个无线模块独立通信 | | 3 | 桥接模式 | LoRa与蓝牙之间双向数据透明转发 | | 4 | 简洁交互 | 1个按键 + 2颗指示灯 | | 5 | 纯常亮指示 | 指示灯均为常亮(除短按切换目标时瞬时闪烁反馈) | | 6 | E22开关控制 | 通过串口发送开机/关机指令 | | 7 | 日志输出 | 通过USB虚拟串口输出状态日志,便于调试 | ## 2. 硬件设计说明 ### 2.1 主控MCU:STC8H8K64U #### 2.1.1 时钟系统 使用内部高速IRC时钟,必须配置为 **24MHz**。USB模块需要48MHz时钟,由PLL倍频产生(24MHz × 2)。 > ⚠️ 系统时钟必须为24MHz,否则USB无法工作。 #### 2.1.2 串口资源分配 | 串口 | 用途 | 引脚 | 配置 | |:---|:---|:---|:---| | UART1 | 与E22通信 | P3.6(RxD_2), P3.7(TxD_2) | `P_SW1 \|= UART1_S2;` | | UART2 | 与B26通信 | P1.0(RxD2), P1.1(TxD2) | `P_SW2 \|= UART2_S1;` | | USB | PC连接(双串口) | P3.1(DP), P3.0(DM) | 硬件专用 | ### 2.2 E22-400T22S LoRa模块 工作频率410~493MHz,发射功率22dBm。 | 模块引脚 | MCU引脚 | 说明 | |:---|:---:|:---| | VCC/GND | 3.3V/GND | 供电 | | TXD/RXD | P3.6/P3.7 | UART1 | | M0/M1 | P3.5/P3.4 | 模式选择 | | NRST | P3.3 | 复位(低有效) | | AUX | 悬空 | 不使用 | **E22工作模式:** | 模式 | M1(P3.4) | M0(P3.5) | 灯色 | 说明 | |:---|:---:|:---:|:---:|:---| | 透传模式 | 0 | 0 | 🟢绿 | 数据透传 | | 配置模式 | **1** | **0** | 🔵蓝 | AT指令配置(波特率9600) | | 开关模式 | 0 | 0 | 🟡黄 | 短按发开机/关机指令 | > **注意**: > - 配置模式与透传模式引脚不同(M1=1),通过引脚电平切换 > - 开关模式与透传模式M0/M1相同(0,0),通过**黄色灯色**区分 > - 模式切换后需等待 ≥10ms 再发送串口数据 > - **配置模式波特率固定为9600**,退出配置模式后恢复为CDC设置值 ### 2.3 HLK-B26蓝牙模块 BLE5.3主从一体透传模块,主频96MHz。 | 模块引脚 | MCU引脚 | 说明 | |:---|:---:|:---| | VBAT/GND | 3.0V/GND | 供电 | | UART0_TX/RX | P1.0/P1.1 | UART2 | | RST | P5.4 | AT控制(低有效) | **控制逻辑:** | 模式 | RST引脚 | 灯色 | 说明 | |:---|:---|:---:|:---| | 透传模式(空闲) | **低电平** | 🟢绿 | 默认状态 | | 进入AT模式 | **拉高100ms → 拉低** | 🔵蓝 | 脉冲触发进入 | | 退出AT模式 | 发送 `AT+TS=1\r\n` | 🟢绿 | 串口命令退出 | | 强制复位 | 拉高 >4s | 🟢绿 | 硬件复位 | > **时序说明**: > - 空闲时 RST 保持低电平 > - 进入AT:拉高100ms后拉低(脉冲触发),无需保持高电平 > - 退出AT:发送串口命令 `AT+TS=1\r\n` > - 复位:拉高 >4s 后拉低 ### 2.4 WS2812指示灯 | 编号 | 对应模块 | 引脚 | |:---|:---|:---| | WS2812_1 | E22 | P1.3 | | WS2812_2 | B26 | P1.3 | > 两颗LED级联,共用数据线。所有状态均为**常亮**。 ### 2.5 用户按键 | 功能 | 引脚 | 有效电平 | 消抖 | |:---|:---:|:---:|:---:| | KEY | P3.2 | 低电平 | ≥20ms | ## 3. 引脚分配总表 ### 3.1 MCU引脚分配 | MCU引脚 | 功能 | 方向 | 说明 | |:---|:---|:---:|:---| | **P3.0** | USB_D- | 专用 | **不可用作GPIO** | | **P3.1** | USB_D+ | 专用 | **不可用作GPIO** | | P3.6 | UART1_RXD_2 | 输入 | 接E22的TXD | | P3.7 | UART1_TXD_2 | 输出 | 接E22的RXD | | P1.0 | UART2_RXD | 输入 | 接B26的UART0_TX | | P1.1 | UART2_TXD | 输出 | 接B26的UART0_RX | | P3.3 | E22_NRST | 输出 | E22复位 | | P5.4 | B26_RST | 输出 | B26 AT控制 | | P3.4 | E22_M1 | 输出 | E22模式选择 | | P3.5 | E22_M0 | 输出 | E22模式选择 | | P1.3 | WS2812_DATA | 输出 | 指示灯数据线 | | P3.2 | KEY | 输入 | 用户按键 | ### 3.2 硬件连接速查表 | 模块 | 模块引脚 | MCU引脚 | 功能 | |:---|:---|:---:|:---| | **E22** | TXD | P3.6 | UART1_RXD_2 | | | RXD | P3.7 | UART1_TXD_2 | | | M0 | P3.5 | GPIO输出 | | | M1 | P3.4 | GPIO输出 | | | NRST | P3.3 | GPIO输出 | | | AUX | 悬空 | — | | **B26** | UART0_TX | P1.0 | UART2_RXD | | | UART0_RX | P1.1 | UART2_TXD | | | RST | P5.4 | GPIO输出 | | **WS2812** | DATA | P1.3 | GPIO输出 | | **KEY** | 输出 | P3.2 | GPIO输入 | ## 4. 功能需求说明 ### 4.1 系统工作模式 | 模式 | 说明 | 上电默认 | |:---|:---|:---:| | **USB转双串口** | PC通过USB分别控制两个模块 | ✅ | | **桥接模式** | E22与B26双向数据透明转发 | — | ### 4.2 USB转双串口模式 ``` PC (USB-CDC0) ←→ UART1 ←→ E22 PC (USB-CDC1) ←→ UART2 ←→ B26 ``` PC端通过串口工具分别对两个模块进行AT指令配置或数据收发。 ### 4.3 桥接模式 ``` E22 ←→ UART1 ←→ 缓冲区 ←→ UART2 ←→ B26 ``` **桥接模式下强制状态:** - E22:透传模式(M0=0, M1=0) - B26:透传模式(RST低电平) - 指示灯:双灯白色常亮 - KEY短按:屏蔽(无响应) - KEY长按:退出桥接,返回USB模式 ### 4.4 模块控制 #### 4.4.1 E22控制 | 操作 | M1 | M0 | NRST | 灯色 | 波特率 | |:---|:---:|:---:|:---|:---:|:---:| | 透传 | 0 | 0 | 高 | 🟢绿 | CDC设置值 | | 配置 | **1** | **0** | 高 | 🔵蓝 | **9600** | | 开关 | 0 | 0 | 高 | 🟡黄 | CDC设置值 | | 复位 | 不变 | 不变 | 拉低≥10ms | — | — | > **配置模式波特率说明**:E22-400T22S 在配置模式下串口波特率固定为 **9600bps**。进入配置模式时MCU自动将UART1波特率切换为9600,退出时恢复为CDC设置值。 #### 4.4.2 B26控制 | 操作 | RST | 灯色 | |:---|:---|:---:| | 透传(空闲) | 低电平 | 🟢绿 | | 进入AT模式 | 高100ms→低 | 🔵蓝 | | 退出AT模式 | 发送 `AT+TS=1\r\n` | 🟢绿 | | 强制复位 | 高>4s→低 | 🟢绿 | #### 4.4.3 异常检测 AUX引脚悬空,完全依赖串口通信超时: | 模式 | 方式 | 超时 | 判定 | |:---|:---|:---:|:---| | 配置/AT模式 | 发送AT测试指令 | 200ms | 连续3次无响应 | | 透传/开关模式 | 不主动检测 | — | — | **恢复流程:** 异常 → 灯变红 → 硬件复位 → 恢复则恢复正常灯色。 ## 5. 指示灯状态定义 ### 5.1 颜色规则 | 颜色 | 含义 | |:---:|:---| | 🟢 绿 | 透传模式 | | 🔵 蓝 | 配置/AT模式 | | 🟡 黄 | E22开关待机 | | 🟣 紫 | E22已发开机 | | 🟠 橙 | E22已发关机 | | 🔴 红 | 模块异常 | | ⚪ 白 | 桥接模式 | > 所有状态均为**常亮**,无呼吸/渐变。 ### 5.2 E22指示灯(WS2812_1) | 状态 | 灯色 | M0/M1 | |:---|:---:|:---:| | 透传 | 🟢绿 | 0,0 | | 配置 | 🔵蓝 | 0,1 | | 开关待机 | 🟡黄 | 0,0 | | 已发开机 | 🟣紫 | 0,0 | | 已发关机 | 🟠橙 | 0,0 | | 异常 | 🔴红 | — | | 桥接强制 | ⚪白 | 0,0 | ### 5.3 B26指示灯(WS2812_2) | 状态 | 灯色 | |:---|:---:| | 透传 | 🟢绿 | | AT | 🔵蓝 | | 异常 | 🔴红 | | 桥接强制 | ⚪白 | ### 5.4 双灯组合总览 | 系统模式 | WS2812_1 | WS2812_2 | |:---|:---:|:---:| | 双透传 | 🟢 | 🟢 | | 双配置/AT | 🔵 | 🔵 | | E22开关待机 | 🟡 | 🟢 | | E22已发开机 | 🟣 | 🟢 | | E22已发关机 | 🟠 | 🟢 | | E22配置 + B26透传 | 🔵 | 🟢 | | E22透传 + B26 AT | 🟢 | 🔵 | | E22异常 | 🔴 | 保持 | | B26异常 | 保持 | 🔴 | | **桥接** | ⚪ | ⚪ | ## 6. 按键操作逻辑 ### 6.1 操作总览 | 操作 | 功能 | 适用场景 | |:---|:---|:---| | 短按 | 切换操作目标(E22↔B26) | USB模式,E22非开关 | | 短按 | 交替发送开机/关机指令 | USB模式,E22开关 | | 长按 | E22循环切换模式(透传→配置→开关→透传) | USB模式,目标E22,非开关 | | 长按 | B26切换透传↔AT | USB模式,目标B26 | | 长按 | 退出开关模式 | USB模式,E22开关 | | 长按 | 退出桥接,返回USB | 桥接模式 | | 短按 | 无响应(屏蔽) | 桥接模式 | ### 6.2 E22模式切换顺序 ``` 🟢透传 (M0=0, M1=0) → 🔵配置 (M0=0, M1=1) → 🟡开关 (M0=0, M1=0) → 🟢透传 → … ``` ### 6.3 B26模式切换 ``` 🟢透传 ↔ 🔵AT ``` ### 6.4 开关模式操作 进入开关模式后,WS2812_1为**黄色常亮**(M0=0, M1=0),短按KEY交替发送指令: | 短按 | 动作 | 灯色变化 | |:---:|:---|:---:| | 第1次 | 发开机 | 🟡黄 → 🟣紫 | | 第2次 | 发关机 | 🟣紫 → 🟠橙 | | 第3次 | 发开机 | 🟠橙 → 🟣紫 | 长按KEY(≥2s)退出开关模式,恢复透传,灯变绿。 ### 6.5 操作流程图 ``` 上电默认:USB模式,目标=E22,E22=透传 (M0=0, M1=0) │ ├─ 短按(非开关)→ 切换目标 E22↔B26,对应灯闪1次 │ ├─ 长按(目标=E22,非开关)→ E22循环切换模式 │ 透传(M0=0,M1=0) → 配置(M0=0,M1=1) → 开关(M0=0,M1=0) → 透传 │ ├─ 长按(目标=B26)→ B26切换 透传↔AT │ ├─ 开关模式(黄灯,M0=0,M1=0) │ ├─ 短按 → 发开机/关机指令,灯变紫/橙 │ └─ 长按 → 退出开关,恢复透传(绿) │ └─ 桥接模式(双白) ├─ 短按 → 屏蔽 └─ 长按 → 退出桥接,返回USB ``` ## 7. 软件架构设计 ### 7.1 核心数据结构 ```c // 系统工作模式 typedef enum { MODE_USB_TO_2UART = 0, // USB转双串口模式(上电默认) MODE_BRIDGE // 桥接模式 } SystemMode_t; // E22工作模式(三种) typedef enum { E22_MODE_TRANSPARENT = 0, // 透传模式 (M0=0, M1=0) E22_MODE_CONFIG, // 配置模式 (M0=0, M1=1) E22_MODE_SWITCH // 开关模式 (M0=0, M1=0) } E22Mode_t; // B26工作模式 typedef enum { B26_MODE_TRANSPARENT = 0, // 透传模式 (RST低) B26_MODE_AT // AT命令模式 (RST高100ms脉冲) } B26Mode_t; // 操作目标(短按切换) typedef enum { TARGET_E22 = 0, // 当前操作E22 TARGET_B26 // 当前操作B26 } Target_t; ``` ### 7.2 模块功能划分 | 模块 | 功能 | 优先级 | |:---|:---|:---:| | 系统初始化 | 时钟、GPIO、串口、中断配置 | — | | UART驱动 | 串口收发(中断+FIFO) | 高 | | USB-CDC驱动 | USB枚举与双串口通信 | 高 | | E22控制 | M0/M1/NRST引脚控制 + 开关模式 + 波特率切换 | 中 | | B26控制 | RST引脚控制(脉冲进入AT,命令退出) | 中 | | 桥接引擎 | 双串口数据转发 | 高 | | 按键处理 | 扫描、去抖、长短按识别 | 低 | | WS2812驱动 | LED颜色控制(纯常亮) | 低 | | 模式管理 | 模式切换与状态维护 | 中 | | 日志输出 | 通过USB虚拟串口输出状态日志 | 低 | ## 8. 性能指标 | 项目 | 指标 | |:---|:---| | 供电 | 5V (USB Type-C) | | 工作电流 | <300mA | | 串口波特率 | 默认115200bps(E22配置模式自动切换9600) | | USB通信 | USB 2.0 Full Speed,CDC双串口 | | 桥接延迟 | <10ms | | 工作温度 | -20℃ ~ +70℃ | ## 9. 使用说明 ### 9.1 硬件连接 1. 通过 **USB Type-C** 线缆连接网关和电脑 2. 确认设备管理器中出现两个 **USB 串行设备 (COMx)** 端口 3. E22-400T22S 和 HLK-B26 模块已正确插入对应插座 ### 9.2 串口工具配置 | 参数 | 设置 | |:---|:---| | 波特率 | 115200(默认)/ 9600(E22配置模式) | | 数据位 | 8 | | 停止位 | 1 | | 校验位 | None | | 流控 | None | **CDC0**:对应 E22-400T22S(LoRa模块) **CDC1**:对应 HLK-B26(蓝牙模块) ### 9.3 基本操作 #### 9.3.1 开机/关机 1. 短按 KEY 将目标切换到 E22(WS2812_1 闪烁) 2. 长按 KEY 进入开关模式(WS2812_1 变为 **黄色**) 3. 短按 KEY 发送开机指令(灯变 **紫色**) 4. 再次短按 KEY 发送关机指令(灯变 **橙色**) 5. 长按 KEY 退出开关模式(灯恢复 **绿色**) #### 9.3.2 配置 E22 模块 1. 短按 KEY 将目标切换到 E22(WS2812_1 闪烁) 2. 长按 KEY 进入配置模式(WS2812_1 变为 **蓝色**) - UART1 波特率自动切换为 **9600** - PC 端串口工具需切换到 9600 波特率 3. 发送 AT 指令进行配置 4. 长按 KEY 退出配置模式(恢复透传,灯变 **绿色**) - UART1 波特率自动恢复为 CDC 设置值 - PC 端串口工具需切回原波特率 #### 9.3.3 配置 B26 模块 1. 短按 KEY 将目标切换到 B26(WS2812_2 闪烁) 2. 长按 KEY 进入 AT 模式(WS2812_2 变为 **蓝色**) - RST 引脚产生 100ms 高电平脉冲后恢复低电平 3. 发送 AT 指令进行配置 4. 长按 KEY 退出 AT 模式(WS2812_2 恢复 **绿色**) - 自动发送 `AT+TS=1\r\n` 退出 AT 命令模式 #### 9.3.4 桥接模式 1. 在 USB 模式下**长按 KEY** 进入桥接模式 - 双灯变为 **白色**,E22 和 B26 强制进入透传模式 - 短按 KEY 无响应(防误触) - E22 和 B26 之间数据自动双向转发 2. 在桥接模式下**长按 KEY** 退出桥接模式 - 双灯恢复各自状态色,返回 USB 模式 ### 9.4 指示灯说明 #### 9.4.1 WS2812_1(E22 状态灯) | 颜色 | 含义 | M0/M1 | |:---|:---|:---:| | 🟢 绿 | 透传模式 | 0,0 | | 🔵 蓝 | 配置模式 | 0,1 | | 🟡 黄 | 开关模式待机 | 0,0 | | 🟣 紫 | 已发送开机指令 | 0,0 | | 🟠 橙 | 已发送关机指令 | 0,0 | | 🔴 红 | 模块异常 | — | | ⚪ 白 | 桥接模式强制 | 0,0 | #### 9.4.2 WS2812_2(B26 状态灯) | 颜色 | 含义 | |:---|:---| | 🟢 绿 | 透传模式 | | 🔵 蓝 | AT 命令模式 | | 🔴 红 | 模块异常 | | ⚪ 白 | 桥接模式强制 | ### 9.5 日志功能 系统通过 **USB-CDC0** 虚拟串口输出状态日志,格式如下: | 日志示例 | 说明 | |:---|:---| | `[KEY] Target -> E22` | 按键切换目标到E22 | | `[KEY] Long Press -> E22 Toggle` | 长按切换E22模式 | | `[E22] Config Mode (M0=0, M1=1, Blue)` | E22进入配置模式 | | `[E22 SW] Power ON (Yellow -> Purple)` | 发送开机指令 | | `[B26] Transparent -> AT (Green -> Blue)` | B26进入AT模式 | | `[BRIDGE] Bridge Mode Active (White LED)` | 进入桥接模式 | > 使用串口工具打开 CDC0 即可查看实时日志,波特率设置为 115200。 ## 10. 开发与测试计划 ### 10.1 开发阶段 | 阶段 | 内容 | 周期 | |:---|:---|:---:| | 1 | 硬件设计 | 2周 | | 2 | 基础驱动开发 | 1周 | | 3 | USB-CDC双串口 | 1周 | | 4 | E22控制模块 | 1周 | | 5 | B26控制模块 | 1周 | | 6 | 指示灯+按键 | 1周 | | 7 | 桥接引擎+集成 | 1周 | | 8 | 整机测试优化 | 1周 | ### 10.2 测试要点 | 序号 | 测试项 | |:---:|:---| | 1 | UART收发可靠性、波特率准确性 | | 2 | PC正确识别CDC0/CDC1 | | 3 | E22透传↔配置↔开关循环,灯色同步,M0/M1电平正确 | | 4 | E22配置模式波特率自动切换为9600,退出恢复 | | 5 | E22开关:短按发开机/关机,灯色紫/橙切换 | | 6 | E22退出开关:长按恢复透传(绿) | | 7 | E22复位功能 | | 8 | B26透传↔AT切换(脉冲进入,命令退出),灯色同步 | | 9 | 桥接双向透传,无丢包 | | 10 | WS2812各状态颜色正确 | | 11 | 按键短按/长按功能正常 | | 12 | 模块故障时灯变红 | | 13 | 日志输出正常 | ## 11. 附录 ### 11.1 参考文档 | 文档 | |:---| | STC8H8K64U数据手册 | | E22-400T22S用户手册 | | HLK-B26使用手册 | | WS2812数据手册 | ### 11.2 关键控制逻辑总结 | 模块 | 操作 | 控制方式 | 波特率 | |:---|:---|:---|:---| | E22 | 透传→配置 | M0=0, M1=0 → M0=0, M1=1 | CDC → 9600 | | E22 | 配置→开关 | M0=0, M1=1 → M0=0, M1=0(灯变黄) | 9600 → CDC | | E22 | 开关→透传 | 长按退出,灯变绿 | CDC | | E22 | 开关模式短按 | 发开机/关机指令,灯变紫/橙 | CDC | | B26 | 透传→AT | RST拉高100ms→拉低(脉冲) | — | | B26 | AT→透传 | 发送 `AT+TS=1\r\n` | — | | B26 | 复位 | RST拉高>4s→拉低 | — | ### 11.3 注意事项 | 序号 | 说明 | |:---:|:---| | 1 | P3.0/P3.1为USB专用,不可用作GPIO | | 2 | 系统时钟必须为24MHz,否则USB无法工作 | | 3 | E22的AUX未连接,异常检测靠串口超时 | | 4 | 开关模式与透传模式M0/M1相同(0,0),通过灯色区分(黄 vs 绿) | | 5 | E22配置模式M0=0, M1=1,波特率固定9600 | | 6 | E22模式切换后等待≥10ms再发数据 | | 7 | B26空闲RST为低电平;进入AT为100ms高脉冲;退出AT用串口命令 | | 8 | WS2812时序基于24MHz,不可更改时钟 | | 9 | 按键消抖≥20ms | | 10 | 上电默认:USB模式,E22透传(绿),B26透传(绿) | | 11 | 所有指示灯均为纯常亮,仅短按选择目标时有100ms瞬时闪烁 | | 12 | 日志通过CDC0输出,波特率115200,如需禁用可注释 `SendLog()` 调用 | **文档结束**