# TCP2UART 项目需求说明 ## 一、项目概述 基于 `STM32F103R8T6` 和 `CH390D` 实现双链路 TCP 串口透传设备。设备提供一条 TCP Server 链路和一条 TCP Client 链路,分别与两路 UART 做双向透明传输,并通过 UART1 进行参数配置。 当前项目实现路线已经固定为: 1. `STM32CubeMX + HAL` 2. `bare-metal` 3. `lwIP RAW API + NO_SYS=1` 4. `SEGGER RTT` 调试输出 不再采用 `FreeRTOS` 作为正式交付架构。 ## 二、硬件平台 | 项目 | 说明 | |------|------| | 主控芯片 | `STM32F103R8T6` | | 以太网芯片 | `CH390D` | | PCB 设计工具 | 立创 EDA | | 串口通道 | `UART1 + UART2 + UART3` | 说明: 1. `UART1` 用于配置口 2. `UART2` 对应 TCP Server 透传链路 3. `UART3` 对应 TCP Client 透传链路 ## 三、软件平台 | 项目 | 说明 | |------|------| | 开发环境 | `STM32CubeMX + HAL + MDK-ARM` | | 执行模型 | 裸机主循环 + 中断驱动 | | 协议栈 | `lwIP RAW API` | | 调试输出 | `SEGGER RTT` | ## 四、核心功能需求 ### 4.1 双链路 TCP 通信 - `Server` 链路:设备作为 TCP Server,监听指定端口 - `Client` 链路:设备作为 TCP Client,主动连接远程服务器 - 两条链路共享同一个设备 IP 地址 ### 4.2 串口透传 - `Server` 链路数据 <=> `UART2` 双向透传 - `Client` 链路数据 <=> `UART3` 双向透传 - 仅透传 TCP Payload,不解析业务层协议 ### 4.3 参数配置 - 通过 `UART1` 配置网络与串口参数 - 配置参数掉电保存 - 支持设备复位后按保存配置生效 ### 4.4 调试与维护 - 调试输出统一走 `SEGGER RTT` - 工程需可在 `MDK-ARM` 下直接构建 ## 五、当前实现边界 基于 `STM32F103R8T6` 的 `64KB Flash / 20KB SRAM` 约束,当前交付版本约束如下: 1. 使用静态 IP 2. 当前构建不支持 DHCP 3. 不使用 `lwIP socket/netconn` 4. 不使用 `FreeRTOS` 这不是降级,而是基于资源约束后的正式实现路线。 ## 六、数据可靠性要求 - 目标是保证 TCP 数据与串口数据双向透传稳定工作 - 需要后续补充上板联调后的丢包率测试方案与结果 - 需要验证双链路同时工作时的稳定性 ## 七、交付物 1. 原理图及 PCB 设计文件 2. STM32 固件源码 3. `CubeMX` 工程与 `MDK-ARM` 工程 4. 使用说明文档 5. 后续补充的透传与丢包测试结果 ## 八、约束条件 1. 通信协议为标准 TCP/IP 2. 串口透传为纯数据透传,不解析上层协议 3. 当前正式目标器件为 `STM32F103R8T6` 4. 所有正式实现应服从 `64KB Flash / 20KB SRAM` 约束