Files
TCP2UART/AT固件使用手册.md
T

10 KiB
Raw Blame History

TCP2UART AT 固件使用手册

1. 文档说明

本文档用于说明 TCP2UART 固件的 AT 配置功能使用方法。

本手册适用于当前工程中的 STM32 固件版本,配置口通过 USART1 提供,主要用于:

  • 查询当前设备参数
  • 修改网络参数
  • 修改串口透传参数
  • 保存参数到 Flash
  • 恢复默认参数
  • 软件复位设备

本文档内容基于以下信息整理:

  • 当前代码实现 App/config.cApp/config.h
  • 当前默认配置定义
  • 实板测试结果
  • uart-ch390-debug-handoff.md 中已记录的 bench 经验

1.1 版本更新说明(2026-04-02

为避免引入额外时序噪声与误判,当前固件已移除 CH390 的 bit-bang 诊断读路径。

当前版本仅保留 CH390 硬件 SPI 访问路径,启动探测与运行期寄存器访问均通过统一 SPI 接口执行。

2. 适用硬件

  • 主控:STM32F103R8T6
  • 以太网芯片:CH390D
  • 配置串口:USART1
  • 透传串口:USART2USART3

当前引脚用途如下:

  • PA9USART1_TX,配置口发送
  • PA10USART1_RX,配置口接收
  • PA2/PA3USART2,对应 TCP Server 透传串口
  • PB10/PB11USART3,对应 TCP Client 透传串口

3. 配置口通信参数

连接配置口时,使用以下串口参数:

  • 波特率:115200
  • 数据位:8
  • 校验位:None
  • 停止位:1

4. 最重要的使用规则

4.1 推荐使用 \n 作为命令结尾

这是当前固件 bench 联调中最重要的一条经验。

在当前实板联调中,使用 \n 结尾是最稳妥的做法。例如:

AT\n
AT+?\n
AT+IP=192.168.1.123\n

代码中的帧接收逻辑会在收到 \r\n 时结束当前命令,但当前 bench 记录表明,实际使用时优先采用 \n 结尾更可靠。如果上位机默认发送 \r\n 后看起来“设备没有响应”,优先改成只发送 \n 再测试。

4.2 修改参数后不会立刻写入 Flash

大多数设置命令只会先修改 RAM 中的当前配置,不会自动写入 Flash。

如果要让参数在复位或重新上电后继续保持,必须执行:

  1. AT+SAVE
  2. AT+RESET

4.3 AT+DEFAULT 只恢复当前默认值,不自动保存

执行 AT+DEFAULT 后,当前参数会恢复为默认值,但如果要让默认值持久生效,仍然需要:

  1. AT+SAVE
  2. AT+RESET

5. 默认参数

当前固件默认值如下:

参数 默认值
MAC 02:00:00:00:00:01
DHCP 0
IP 192.168.1.100
MASK 255.255.255.0
GW 192.168.1.1
PORT 8080
RIP 192.168.1.200
RPORT 9000
BAUD1 115200
BAUD2 115200

说明:

  • BAUD1 对应 USART2,即 TCP Server 对应的透传串口
  • BAUD2 对应 USART3,即 TCP Client 对应的透传串口

6. AT 命令总览

当前固件支持以下命令:

  • AT
  • AT+?
  • AT+QUERY
  • AT+IP=...
  • AT+MASK=...
  • AT+GW=...
  • AT+RIP=...
  • AT+MAC=...
  • AT+PORT=...
  • AT+RPORT=...
  • AT+BAUD1=...
  • AT+BAUD2=...
  • AT+DHCP=0
  • AT+SAVE
  • AT+RESET
  • AT+DEFAULT

7. 命令详细说明

7.1 测试设备在线

命令:

AT\n

返回:

OK

用途:

  • 用于确认配置口通信正常

7.2 查询当前参数

命令 1

AT+?\n

命令 2

AT+QUERY\n

返回示例:

MAC: 02:00:00:00:00:01
DHCP: 0
IP: 192.168.1.100
MASK: 255.255.255.0
GW: 192.168.1.1
PORT: 8080
RIP: 192.168.1.200
RPORT: 9000
BAUD1: 115200
BAUD2: 115200

用途:

  • 查询当前运行配置
  • 可用于保存前后、复位前后对比参数是否一致

7.3 设置设备 IP 地址

命令:

AT+IP=192.168.1.123\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid IP format

说明:

  • 推荐使用标准 IPv4 点分十进制格式
  • 当前参数会立即更新到 RAM
  • 需要 AT+SAVEAT+RESET 后才会以持久配置重新启动

7.4 设置子网掩码

命令:

AT+MASK=255.255.255.0\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid mask format

7.5 设置网关

命令:

AT+GW=192.168.1.1\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid gateway format

7.6 设置远端服务器 IP

命令:

AT+RIP=192.168.1.201\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid remote IP format

说明:

  • 该参数用于 TCP Client 主动连接的目标地址

7.7 设置 MAC 地址

命令:

AT+MAC=02:12:34:56:78:9A\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid MAC format

说明:

  • 推荐使用 : 分隔的标准 MAC 字符串
  • 当前实现也兼容 - 分隔格式

7.8 设置 TCP Server 监听端口

命令:

AT+PORT=10001\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid port

说明:

  • 推荐使用 1 ~ 65535 范围内的十进制端口号

7.9 设置 TCP Client 远端端口

命令:

AT+RPORT=10002\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid port

说明:

  • 推荐使用 1 ~ 65535 范围内的十进制端口号

7.10 设置 USART2 波特率

命令:

AT+BAUD1=57600\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid baudrate

说明:

  • BAUD1 对应 USART2
  • 推荐使用 1200 ~ 921600 范围内的标准波特率值

7.11 设置 USART3 波特率

命令:

AT+BAUD2=38400\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回:

ERROR: Invalid baudrate

说明:

  • BAUD2 对应 USART3
  • 推荐使用 1200 ~ 921600 范围内的标准波特率值

7.12 设置 DHCP

命令:

AT+DHCP=0\n

成功返回:

OK
Note: Use AT+SAVE then AT+RESET to apply changes

失败返回 1

ERROR: Invalid value

失败返回 2

ERROR: DHCP disabled in this build

说明:

  • 当前固件构建不支持 DHCP
  • 因此 AT+DHCP=1 会明确返回失败
  • 当前版本建议固定使用静态 IP

7.13 保存参数到 Flash

命令:

AT+SAVE\n

成功返回:

OK: Configuration saved

失败返回:

ERROR: Save failed

用途:

  • 将当前 RAM 中的配置写入 Flash
  • 只有执行成功后,参数才会在复位后保留

7.14 软件复位设备

命令:

AT+RESET\n

返回:

OK: Resetting...

用途:

  • 请求设备执行软件复位
  • 通常用于 AT+SAVE 之后让新配置重新生效

7.15 恢复默认参数

命令:

AT+DEFAULT\n

返回:

OK: Defaults restored

用途:

  • 将当前配置恢复为固件默认值
  • 如果要让默认值长期生效,仍然需要再执行 AT+SAVEAT+RESET

8. 常见错误返回

当前固件已验证的错误返回如下:

场景 返回
未知命令 ERROR: Unknown command
非法端口 ERROR: Invalid port
非法波特率 ERROR: Invalid baudrate
非法 IP 地址 ERROR: Invalid IP format
非法掩码 ERROR: Invalid mask format
非法网关 ERROR: Invalid gateway format
非法远端 IP ERROR: Invalid remote IP format
非法 MAC ERROR: Invalid MAC format
非法 DHCP 参数 ERROR: Invalid value
DHCP 在当前构建中不可用 ERROR: DHCP disabled in this build
Flash 保存失败 ERROR: Save failed

9. 推荐操作流程

9.1 查询当前参数

AT\n
AT+?\n

9.2 修改参数并永久保存

例如修改设备 IP、监听端口和远端地址:

AT+IP=192.168.1.123\n
AT+PORT=10001\n
AT+RIP=192.168.1.201\n
AT+RPORT=10002\n
AT+SAVE\n
AT+RESET\n

设备复位后,再执行:

AT+?\n

确认参数是否与修改值一致。

9.3 恢复出厂默认参数

AT+DEFAULT\n
AT+SAVE\n
AT+RESET\n
AT+?\n

10. Flash 持久化说明

当前固件已在实板上验证以下保存/复位路径:

  • 设置参数后执行 AT+SAVE
  • 再执行 AT+RESET
  • 设备重启后再次查询参数
  • 查询结果与保存前一致
  • 原始 Flash 参数页 0x0800FC00 在 reset 前后读回一致

这说明在上述测试路径下:

  • 配置确实被写入 Flash
  • reset 后加载流程正常
  • 参数在 设置 -> 保存 -> 复位 -> 查询 这条路径下可以保持一致

11. 故障排查建议

11.1 发送 AT 没有返回

优先检查以下几项:

  1. 是否连接到了 USART1
  2. 串口参数是否为 115200 8N1
  3. 是否优先使用 \n 作为命令结尾
  4. USB 转串口模块接线是否正确
  5. 设备是否已经正常上电运行

11.2 设置成功但重启后参数丢失

检查是否漏掉了以下步骤:

  1. AT+SAVE
  2. AT+RESET

如果只执行设置命令但没有保存,参数只会停留在当前 RAM 中。

11.3 AT+DHCP=1 失败

这是当前固件设计行为,不是故障。

当前构建不支持 DHCP,因此:

AT+DHCP=1\n

返回:

ERROR: DHCP disabled in this build

12. 已实测通过的命令行为

本手册中的以下命令行为已经在实板上验证通过:

  • AT
  • AT+?
  • AT+QUERY
  • AT+IP=...
  • AT+MASK=...
  • AT+GW=...
  • AT+RIP=...
  • AT+MAC=...
  • AT+PORT=...
  • AT+RPORT=...
  • AT+BAUD1=...
  • AT+BAUD2=...
  • AT+DHCP=0
  • AT+SAVE
  • AT+RESET
  • AT+DEFAULT

已实测通过的错误路径包括:

  • AT+UNKNOWN
  • AT+PORT=0
  • AT+PORT=65536
  • AT+BAUD1=1199
  • AT+BAUD1=921601
  • AT+DHCP=1
  • AT+IP=999.1.1.1
  • AT+MAC=GG:11:22:33:44:55

13. 相关文件