☰
方案测试 90% 从串口开始:AT 的发、等、校验、超时、重试
2026/10/15 14:21:15 网站建设 项目流程

副标题:接线、新行模式、完整配网会话,以及为什么 Wireshark 抓不到 AT 文本
专栏:《嵌入式学生的方案测试课》第 4 篇
前置:第 1 篇环境表,第 3 篇阻塞点地图里的「等 AT OK」
标签:嵌入式、WiFi、软件测试、物联网、C语言
读者:买了 ESP8266 和 USB 转串口,或即将到手;会打开串口助手,但还没把会话当成测试证据
学完交什么:接线照片、一份带时间戳的 AT 会话、四层标注、一张「失败不可观察」缺陷单
主实验板:ESP8266 / ESP-12F。Hi3861 用自打日志对照。国内不做 HaLow 发射,泰芯 AT 只作公开命令对照。


0. 这篇结束你能干什么

勾这 3 条。勾不完不要宣称「会配网」。

  1. 能独立接线:TX 对 RX、RX 对 TX、GND 共地、3V3 供电;串口 115200 8N1,打开新行;先发AT得到OK。电脑不认 COM、有打印输不进命令,能按清单排除,而不是先怪芯片。
  2. 能跑完一条完整会话:扫网、正确密码连上并记录 GOT IP 耗时、错误密码记录失败码和耗时、弱网或拔天线记录超时;全过程存成带时间戳的 txt。
  3. 能当面说清:AT 文本走 UART,Wireshark 默认抓不到它;DHCP、TCP、MQTT 才可能出现在网口。把 AT 原文说成抓包,是第 8 篇之前最常见的装懂。

第 3 篇把「等 AT OK」画进了阻塞点地图。本篇把这次等待变成可测的状态机:发、等、校验、超时、重试、放弃。


1. 为什么现场第一件事是打开串口

客户板来了,不要先开 Wireshark,不要先改代码。先问:串口有没有、波特率多少、版本横幅是什么。

理由很具体:

  • 版本不对,后面所有性能数字作废(第 1 篇纪律)
  • 很多「连不上」是 TX/RX 没交叉、没 GND、没新行、驱动没装
  • AT 是模组的控制面。控制面都没通,数据面抓包没有意义
  • 公开的泰芯 AH FAQ 把串口工具写成了独立一节:电脑不认口先查 CH340;有打印输不进命令先查会话和新行模式。原厂把学生第一天会踩的坑写进了 FAQ,说明它不是个例

方案测试工程师的手感,有一半是串口手感。另外一半才是分层和抓包。


2. 最小原理

2.1 UART 只要记住这几条

UART 是异步串口:双方约定波特率,没有时钟脚。一方 115200、另一方 9600,两边都可能看到乱码或什么都没有。

最小接线:

MCU/模组 TX ---- USB转串口 RX MCU/模组 RX ---- USB转串口 TX MCU/模组 GND ---- USB转串口 GND 电源 3V3/5V 按板子丝印,不要用 USB 5V 直灌 3V3 芯片

TX 对 TX、RX 对 RX,是学生第一错。看起来「有电」,现象是:有时能看到模组打印(模组 TX 碰巧接到了电脑 RX),但电脑打字模组听不见。

GND 必须共地。只接 TX/RX 不接 GND,现象飘:有时通、有时乱码,极像「射频不稳」。先当供电和地,不当 Wi-Fi。

USB 转串口常见 CH340、CP2102、FT232。Windows 不认 COM:先装驱动,再换线、换口。AH FAQ 公开写的就是 CH340 驱动。不要把「设备管理器里没有 COM」写成模组 UART 坏了。

电平:USB 转串口有 3.3V 和 5V 逻辑。ESP8266 的 UART 是 3.3V。5V 推 RX 有风险。测试记录写清转接板型号。

AH 公开硬件项:UART TX/RX 串 1K,防止串口工具漏电把模组灌醒或灌异常。学生板没有 1K 也可以先练 AT,但要知道:现场「插上串口电流变了、休眠进不去」可能是漏电,不是协议栈。第 15 篇会回到这颗电阻。

2.2 新行模式:有打印输不进命令的第一嫌疑

AT 命令通常以回车、换行结束(CR、LF,或两者)。串口助手必须配置:

  • 波特率:以模组手册为准,ESP8266 常见 115200,也有 74880 启动日志
  • 数据位 8、无校验、1 停止位(8N1)
  • 发送时附加:新行 / CR LF。只附加 CR 或只 LF,有的模组认、有的不认
  • 不要用「十六进制发送」除非你在测二进制

AH FAQ 原话方向:电脑能识别串口、有打印,但输不进命令,先查会话设置和新行。学生用 SSCOM、MobaXterm、PuTTY、串口助手都一样。PuTTY 要在 Terminal 里自己处理 Enter。配不好就会出现「我明明敲了 AT」。

ESP8266 启动时可能先以 74880 打一段 boot,再切到 115200。你只开 115200,上电瞬间那几行是乱码,后面ready才正常。不要把启动乱码写成芯片损坏。记录里写:启动乱码是否只出现在前 200ms。

2.3 AT 是 UART 上的文本协议,不是网包

分层再钉一次:

你敲的 AT+CWJAP=... → USB 转串口 → 模组 UART 解析器 模组连 AP 的 802.11 → 空口(第 9 篇,默认抓不到) 拿到 IP 之后的 DHCP/TCP → 网口(第 8 篇,热点拓扑才能看到设备包)

所以:

  • Wireshark 选电脑网卡,过滤器mqtt,看不到AT+CWJAP
  • 串口 txt 里出现AT+CWJAP,不能当作「我抓过 MQTT」
  • 简历写 Wireshark 抓 AT,是概念错误

第 8 篇会教正确拓扑。本篇只要你停止混用两个通道。

2.4 AT 状态机:发、等、校验、超时、重试、放弃

把第 2 篇状态机具体化:

空闲 --发命令--> 等待响应 |-- 收到完整 OK / ERROR / 数据 --> 校验 --> 空闲(成功或失败) |-- 超时 --> 重试(有限次)--> 放弃 --> 空闲(带错误码) |-- 半路又来一条命令 --> 非法重入(第 2 篇非法转移)

每一项都要变成可测数字:

项你必须写进用例的数
发完整命令字节,含结束符;是否回显
等超时阈值,例如 8s 连 AP、2s 普通 AT
校验成功关键字OK、WIFI GOT IP;失败ERROR、FAIL、+CWJAP:1
重试最多几次、间隔多少、间隔是否退避
放弃放弃后能否再接受AT;会不会复位;UI 会不会转圈到死

第 3 篇:若把「等 OK」放进采集任务且超时 8s,采集周期直接烂。本篇实验在 PC 串口助手上手动等,先体会 8 秒有多长;第 14 篇再用 Python 把超时写成脚本。

2.5 日志规范:现在就开始,不要等自动化

串口助手打开「时间戳」。没有该功能,就在保存后用编辑器按段标注。一行合格日志至少有:

21:05:03.012 [UART] >> AT 21:05:03.020 [UART] << OK 21:05:10.100 [WIFI] GOT IP 192.168.43.12 rssi=-48

要抄的字段:时间、方向(主控发还是模组回)、版本横幅、RSSI(有则抄)、错误码原文。不要总结成「连上了」。第 1 篇合格现象的硬指标,在这里落地。

ESP8266 常见版本查询:AT+GMR。泰芯公开:AT+VERSION、AT+SYSCFG。学生板用谁记谁,报告禁止只写「最新固件」。


3. ESP8266 命令表(本篇够用的最小集)

不同厂家 AT 固件略有差异。先AT+GMR确认。下面按乐鑫经典 AT 写,你的板若不同,以回显为准,不要和范文死磕命令字母。

目的命令(示例)成功时你应看到超时建议
探活ATOK1s
版本AT+GMRAT version / SDK version1s
模式AT+CWMODE=1OK(1=STA)1s
扫网AT+CWLAP若干(ecn,ssid,rssi,...)然后OK5 到 10s
连接AT+CWJAP="ssid","pwd"WIFI CONNECTED、WIFI GOT IP、OK8 到 15s
查 IPAT+CIFSRSTAIP1s
断开AT+CWQAPOK2s

错误密码常见:FAIL、ERROR、或+CWJAP:1(按固件)。本篇不要求背错误码表,要求原文抄进缺陷单。

连 AP 是长命令。等待期间不要连敲。那是非法重入。


4. 手把手实验(ESP8266 必做)

材料:ESP-12F 或开发板、USB 转串口、杜邦线、能改密码的 2.4G AP 或手机热点、串口助手。环境表 ENV 按第 1 篇先填。SSID 用lab-ap-01,密码不要写进公开博客。

步骤 0:接线并拍照

  1. 断电。
  2. TX-RX 交叉,GND 共地。开发板若已带 USB 转串口,不要再外接另一套抢同一脚。
  3. 供电按丝印。ESP8266 发射瞬间电流大,用能供 300mA 以上的口,避开无源扩展坞。
  4. 拍照:照片里能看出交叉和 GND。作业要这张图。
  5. 设备管理器确认 COM 号,写入 ENV。

排障清单(按顺序,一次一个):

现象先查
没有 COM驱动、线、口、设备管理器是否被占用
COM 在,完全无打印TX/RX 接反或只接了一根;波特率;模组没上电;BOOT 脚被拉成下载模式
全是乱码波特率;地;启动 74880 vs 115200
有启动打印,敲 AT 无回新行;RX 没接到模组;CTS/RTS 流控误开
一发 AT 模组复位供电不够;IO 电压;复位脚被带偏

到「AT→OK」之前,不要开始配网。探活失败属于环境未就绪,不是 Wi-Fi 缺陷(第 1 篇)。

步骤 1:探活和版本

发送AT,期望 1s 内OK。
发送AT+GMR,把版本字符串整段粘进 ENV「固件如何确认」。

步骤 2:扫网(射频 + 扫描)

AT+CWMODE=1,再AT+CWLAP。

记录:

  • 列表里有没有lab-ap-01
  • 对应 RSSI
  • 从发令到OK的时间
  • 列表空:先看天线(第 1 篇拔天线对照),再看是不是 5G-only 热点

扫不到就不要连。连一个不存在的 SSID,失败原因会和错密码搅在一起。

步骤 3:正确密码,记 GOT IP 耗时

基线:1m、天线接好。发送连接命令。用时间戳算:

T0 发出 CWJAP T1 WIFI CONNECTED(有则记,关联层) T2 WIFI GOT IP(IP 层) T3 OK

T1 到 T2 的空隙,就是「已关联没 IP」的窗口。第 5 篇四层会用到。本篇先把数字抄下来。重复 3 次,写 3 个耗时,不要只留一次好运气。

步骤 4:错误密码(关联层)

只改密码少一位,其它冻结。期望:明确失败,模组仍响应下一条AT。记录失败原文和耗时。重复 3 次。

若 30s 无任何失败码、且AT不再OK:这是缺陷,不是「密码不对所以随便」。见第 5 节范文。

步骤 5:超时(射频或关联)

一次一个变量,下面选一种,不要同时拔天线又改密码:

  • 松开天线再扫、再连
  • 或 AP 关机后再连(SSID 不在列表)

记录:等到你设定的超时(例如 15s)是否放弃、是否仍能AT。把超时阈值写进用例,不要无限等。

步骤 6:保存会话并分层标注

把整段 txt 存为labs/week04/at-session.txt。在旁边做一份标注稿at-session-annotated.md:

L12 AT+CWLAP → 射频/扫描 L40 CWJAP 正确密码 → 关联 L45 WIFI CONNECTED → 关联成功 L47 WIFI GOT IP → IP L60 CWJAP 错误密码 → 关联失败(期望内) L88 拔天线后 CWLAP 空 → 射频

标注的是层,不是锅。IP 没拿到不要写「芯片 DHCP 实现垃圾」,除非你已经排除关联。

没有 ESP8266 时

用开发板自带 USB 串口打AT/AT+GMR也行。完全没模组:用电脑两个串口互环或 USB 转串口短接 TX-RX 做回显,只练接线和新行,配网会话标「待补」。第 18 篇全程案例会卡住,所以仍建议本周把板买回来。

Hi3861:若无 AT,就保存启动日志 + 你自己的wifi connected/got ip打印,同样做时间戳和分层标注。状态机一样,只是命令不是AT+CWJAP。


5. 缺陷单范文:失败必须可观察

编号:BUG-20261016-at-01 标题:【AT】错误密码时 30s 内无 ERROR/FAIL,且期间 AT 无 OK(3/3) 严重级别:严重(产品会转圈到死,测试无法自动化) 环境:ENV-xx;ESP-12F;AT+GMR=____;AP lab-ap-01 WPA2;天线锁紧;只改密码少一位 前置:正确密码 3/3 在 8s 内 GOT IP;探活 AT 正常 步骤: 1. 115200 8N1 新行。 2. AT 得 OK。 3. 发错误密码连接。 4. 等待 30s,再发 AT。 期望:30s 内返回明确失败;随后 AT 仍 OK;模组不复位。 实际:30s 无失败码;第 31s 发 AT 无回显,直到 40s 模组自行打印 ready(自行复位)。3/3。 附件:at-session-wrongpass.txt(含启动横幅) 初步分层:AT 状态机 / 关联失败路径。射频排除:扫网成功。

对照:若错误密码 8s 内FAIL且AT仍OK,这是符合期望,记测试记录,不要当芯片缺陷。第 1 篇已经说过。

另一张可选单:供电不足导致一连接就复位。环境写「电脑前口 USB,无外供」。换适配器后消失。初步分层硬件/供电,不是 AT 解析器。


6. 换成泰芯公开场景会怎么变

国内读者不发射 HaLow。下面只对照公开命令和行为,学生用 ESP8266 迁移同一测试动作。到原厂板以手册为准,不要把AT+CWJAP打到 AH 模组上。

公开文档测试动作
串口不识别 → CH340环境未就绪清单第一项
有打印输不进 → 新行 / 会话步骤 0 探活
TX/RX 串 1K 防漏电插串口前后电流、休眠是否仍能进;第 15 篇展开
AT+SYSCFG探活学生用AT/AT+GMR对应
AT+WIFIMODEAT+SSIDAT+KEY对应模式、SSID、密码;改参前先 down 再 up
AT+CHAN_LISTAT+BSS_BW两端必须完全一致(含顺序)学生迁移:两端加密和频段要匹配;不要在连接中途改 SSID
AT+PAIR成功后必须PAIR=0才握手迁移:配网状态机要有明确退出,否则假连接
AT+VERSION含 SVN,不要擅自改会话开头抄完整版本
AT+LOADDEF改容量类参数后恢复出厂改过 STA 数、分区类配置,前置必须写是否恢复
AT+IPERF2=c,ip,port,time第 12 篇再打流;本篇只记「命令存在、需要网络宏」
AT+PING期间不能输入其它 AT阻塞点:ping 会占住 AT 会话,和第 3 篇同一类
TXW82x:AT是 CPU0,AT1是 CPU1测无线核不要只打应用核 AT;学生无该板则记在地图里
Wi-Fi4 SRRC:AT+WIFIMODE=sta再 SSID/KEY,连上再 iperf本篇完成「连上」;打流留第 12 篇
网口 netat 发 AT(网桥)知道 AT 不一定走 UART;学生无网桥则只认知

固定句式:公开 FAQ 写新行模式,学生板上用串口助手勾上新行,到 AH 板同样先探活AT+SYSCFG。


6.1 一份合格会话长什么样(可对照)

下面是打码后的示意,不是让你抄结果交差。时间戳格式按你的助手来。

21:10:01.000 AT 21:10:01.012 OK 21:10:02.000 AT+GMR 21:10:02.020 AT version:1.x.x.x 21:10:02.030 SDK version:x.x.x 21:10:02.040 OK 21:10:05.000 AT+CWMODE=1 21:10:05.010 OK 21:10:06.000 AT+CWLAP 21:10:08.100 +CWLAP:(4,lab-ap-01,-47,xx:xx:xx:xx:xx:xx,6) 21:10:08.500 OK 21:10:20.000 AT+CWJAP="lab-ap-01","********" 21:10:22.400 WIFI CONNECTED 21:10:23.100 WIFI GOT IP 21:10:23.120 OK 21:10:30.000 AT+CIFSR 21:10:30.020 +CIFSR:STAIP,"192.168.x.x" 21:10:30.030 OK 21:10:40.000 AT+CWQAP 21:10:40.050 OK 21:10:50.000 AT+CWJAP="lab-ap-01","*******" ; 少一位 21:10:58.000 FAIL 21:10:59.000 AT 21:10:59.010 OK

标注稿对应:

  • CWLAP 有 ssid 且 rssi=-47,射频扫描过
  • CONNECTED,关联过
  • GOT IP 加 STAIP,IP 过
  • 错密码 FAIL 且随后 AT 得 OK,失败可观察,状态机回到空闲

如果你的固件没有 WIFI CONNECTED 这行,不要补造。以原文为准,在 times.md 里定义你用哪一行当 T1。

回显:若助手开了本地回显,同一句 AT 会出现两次。报告写明。统计耗时用模组返回的那一行。

7. 30 秒口径

现场先开串口:驱动、交叉、地、波特率、新行,先 AT 得 OK。
AT 是发、等、校验、超时、重试、放弃。失败必须有码,超时后还要能探活。
AT 在 UART 上,Wireshark 抓不到 AT 文本。网口抓的是 DHCP/TCP/MQTT。
版本字符串每次抄进环境表。改 SSID 不要在连接半路进行。


8. 作业

labs/week04/ env.md wiring.jpg # TX-RX 交叉和 GND 可见 at-session.txt # 原始会话,开时间戳 at-session-annotated.md # 每段标射频/关联/IP times.md # 正确密码 3 次 GOT IP 耗时;错密码 3 次耗时 BUG-at.md # 若失败不可观察就提单;若都符合期望,写「无缺陷,附测试记录」

验收:

  • 会话里能搜到AT和版本
  • 有一次成功 GOT IP 和一次故意失败
  • 标注稿没有把 AT 原文写成 Wireshark
  • 错密码实验没有同时拔天线
  • 密码和真实 SSID 已打码或未进公开目录

9. 自测题(先闭卷)

  1. 有启动打印、敲 AT 没回,最优先查什么?
  2. 为什么 Wireshark 看不到AT+CWJAP?
  3. TX 接 TX 时,为什么有时仍能看见模组输出?
  4. 正确密码的 T1(CONNECTED)和 T2(GOT IP)分别对应第 0 篇哪一层?
  5. 错误密码 30s 无码且 AT 死,为什么是缺陷而不是「密码不对」?
  6. 为什么连 AP 等待时不能连发下一条 AT?
  7. AH FAQ 的新行模式,和 ESP8266 实验哪一步对应?
  8. AT+PING期间不能输入其它 AT,和第 3 篇什么概念是同一个?
  9. 启动前 200ms 乱码、随后ready,要不要写成 UART 损坏?
  10. 把 AT 会话当抓包贴进简历,错在哪?

答案见附录。


10. 学生常见翻车

  1. 波特率不对,先换模组。
  2. 没新行,提单「AT 固件坏了」。
  3. 正确和错误密码、拔天线写在同一次操作里。
  4. 会话不存文件,口头说「刚才 OK 过」。
  5. 把AT+CWLAP列表当空口抓包。
  6. 用电脑 USB 口供电,一关联就复位,判射频差。
  7. 泰芯板上仍打AT+CWJAP,不读手册。

11. 下一篇预告

第 5 篇:《扫不到、连不上、没 IP、上不了云:方案测试只记这一张分层表》。

本篇会话里已经出现了扫网空、错密码、GOT IP。下一篇把它们收成四层故障注入:同一块 ESP8266,每层只造一个故障,填同一张表。那张表是专栏中轴。


附录 A. 自测题参考答案

  1. 新行 / 结束符;其次 RX 是否接到模组;再查流控。
  2. AT 在 UART 上,不经过电脑网卡的 IP 栈。
  3. 模组 TX 仍可能接到了电脑 RX,所以能看打印;电脑 TX 没进模组 RX,所以输不进。
  4. T1 关联层,T2 IP 层。
  5. 期望是可观察的失败并回到空闲。死等、死机、不再探活,破坏测试和产品。
  6. 非法重入;状态机还在等待,第二条会粘包或被丢,现象无法分层。
  7. 步骤 0 探活:串口助手打开新行后再发 AT。
  8. 阻塞。长命令占住 AT 任务,其它命令进不去。
  9. 不要。先确认是否 74880 启动日志。持续全程乱码才查波特率和地。
  10. 通道都错了。抓包指网口或空口帧;AT 是串口旁路。

附录 B. 公开资料

  • 泰芯 AH 方案 FAQ:CH340、新行、1K 电阻、版本、LOADDEF、改参 down/up
  • 泰芯 AH-SDK AT 指令:WIFIMODE / SSID / KEY / CHAN_LIST / BSS_BW / PAIR / VERSION / IPERF2 / PING / SYSCFG
  • Wi-Fi4 SRRC 测试方法:STA 连接命令序列,其后才是 iperf
  • TXW82x ReleaseNote:AT 与 AT1 分核

附录 C. 串口助手推荐配置(可截图对照)

端口:COMx(与设备管理器一致) 波特率:115200 数据位:8 停止位:1 校验:无 流控:无 发送附加:CR LF(新行) 显示:时间戳开,本地回显可开(报告里注明回显以免和模组回显重复计算) 编码:UTF-8 或 GBK 以实际中文日志为准,不要混用

(第 4 篇完)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询