3.6 KiB
3.6 KiB
TCP2UART 项目需求说明
一、项目目标
本项目基于 STM32F103R8T6 与 CH390D 实现一台多实例 TCP 与双串口数据透传设备。
最终对外协议模型固定为:
MUX:控制串口侧是否采用 MUX 承载NET:全局静态网络配置LINK[idx]:按实例索引组织的链路配置
系统必须支持:
2路 TCP Server 实例2路 TCP Client 实例UART1作为 AT 配置口UART2 / UART3作为业务数据口
二、硬件与软件边界
2.1 硬件边界
- 主控:
STM32F103R8T6 - 以太网芯片:
CH390D - 网卡数量:
1 - 配置口:
UART1 - 数据口:
UART2、UART3
2.2 软件边界
- 执行模型:
bare-metal - 网络协议栈:
lwIP RAW API + NO_SYS=1 - 调试输出:
SEGGER RTT - 不采用
FreeRTOS - 不采用
socket/netconn - 不包含 DHCP 协议支持
三、最终协议需求
3.1 MUX 帧格式
所有 MUX 数据承载必须使用如下格式:
SYNC | LEN_H | LEN_L | SRCID | DSTMASK | PAYLOAD | TAIL
要求:
DSTMASK != 0x00:业务数据帧DSTMASK = 0x00:系统控制帧- 系统控制帧承载 AT 文本命令
- AT 文本命令必须以
\r\n结尾
3.2 统一端点编码
系统必须使用统一端点编码,同时覆盖 UART 与 TCP 逻辑实例:
| 端点 | 编码 |
|---|---|
C1 |
0x01 |
C2 |
0x02 |
UART2 |
0x04 |
UART3 |
0x08 |
S1 |
0x10 |
S2 |
0x20 |
要求:
SRCID为单值DSTMASK为位图DSTMASK=0x00仅保留给系统控制帧
四、AT 接口需求
4.1 命令分类
AT 协议必须收敛为以下三类命令:
AT+MUXAT+NETAT+LINK
不再保留历史展开式实例字段命令。
4.2 MUX 命令需求
AT+MUX=0/1:设置全局 MUX 模式AT+MUX?:查询当前 MUX 模式
4.3 NET 命令需求
NET 必须统一表达以下静态网络参数:
IP,MASK,GW,MAC
说明:
- 设备只有一张网卡,因此本地 IP 不按实例拆分
- DHCP 不属于协议需求范围
4.4 LINK 命令需求
LINK[idx] 必须统一表达如下字段:
EN,LPORT,RIP,RPORT,UART
要求:
idx固定映射四个实例:0=S1、1=S2、2=C1、3=C2Server与Client共用同一条LINK配置模型LPORT必须可配置RIP / RPORT必须可配置UART必须可配置
五、功能需求
5.1 TCP 功能
- 支持
2路 Server - 支持
2路 Client - 每个实例通过
LINK[idx]配置其本地端口、对端地址、对端端口和串口路由
5.2 串口透传功能
UART2 / UART3支持普通透传模式与 MUX 透传模式- 当需要多实例共享数据口时,必须启用 MUX 模式
- 业务数据流向由
SRCID / DSTMASK决定
5.3 系统控制功能
- 系统控制帧由
DSTMASK=0x00表示 - 系统控制帧进入 AT 解析路径
- 控制文本必须以
\r\n结束
5.4 参数保存功能
- 参数修改后支持
SAVE - 支持
RESET后按保存配置启动 - 支持恢复默认配置
六、非功能需求
- 满足
STM32F103R8T6的64KB Flash / 20KB SRAM约束 - 工程可在
MDK-ARM下构建 - 调试输出统一使用
SEGGER RTT - 不引入 DHCP、DNS、UDP 等当前非目标协议
七、验收口径
验收时以下几点必须同时成立:
- 文档只使用
MUX / NET / LINK作为最终协议模型 - 文档不再出现历史
S1... / C1...外部字段 - 串口控制文本统一规定为
\r\n结束 - MUX 帧格式与端点编码在需求、手册、技术实现三份文档中表述一致