第二章 硬件准备:搭建你的测试环境

做嵌入式开发,尤其是调试串口AT指令,硬件环境没搭好,后面全是白费功夫。我见过太多新手拿着杜邦线随便一插,结果数据死活不对,最后发现是TX和RX接反了。这种低级错误,咱们完全可以在第一步就避免掉。

这一章,我带你把硬件环境搭得明明白白。你跟着做就行,不用急。

2.1 你需要准备什么?

先列个清单,缺什么赶紧补。我个人习惯是买两份,万一烧了还有备用的。

硬件/工具 推荐型号/规格 用途说明
STM32最小系统板 STM32F103C8T6(最常用) 主控芯片,跑AT指令解析代码
USB转串口模块 CH340G 或 CP2102 连接电脑与STM32,收发数据
杜邦线 公对母、母对母各10根 板间连线,注意线序
示波器/逻辑分析仪 逻辑分析仪(24MHz以上) 抓波形,定位时序问题(可选)
面包板 830孔 方便临时搭电路,减少飞线
我的建议: 逻辑分析仪别省。几十块钱的USB逻辑分析仪,能让你看到串口线上到底发生了什么。我曾经花了一整天查一个AT指令没响应的问题,最后用逻辑分析仪一看,原来是地线虚焊,信号根本没过去。

2.2 核心接线:别把TX和RX搞反

这是最基础也最容易翻车的地方。串口通信是交叉连接的:

  • STM32的TX → USB转串口模块的RX
  • STM32的RX → USB转串口模块的TX
  • GND → GND(这个必须接,不接通信绝对失败)

为什么是交叉?因为发送端要对着接收端发。你想想看,如果TX对TX,那两边都在喊,没人听,数据就丢了。

注意: 千万不要把5V接到3.3V的引脚上!STM32的IO口是3.3V电平,USB转串口模块如果是5V输出,你得加电平转换,或者选3.3V版本的模块。我刚开始做的时候烧过一个CH340,就是因为接了5V。

2.3 供电方案:稳定是第一位的

STM32最小系统板一般有两种供电方式:

  1. USB直接供电:通过板载的Micro USB口,插上手机充电器或电脑USB口就行。简单,但电流有限。
  2. 外部稳压供电:用3.3V稳压芯片(比如AMS1117-3.3)从面包板供电。适合带外设多的场景。

我建议调试阶段用USB供电,省事。但要注意,如果接了Wi-Fi模块或者4G模块,启动瞬间电流可能超过500mA,这时候就得用外部电源了。

2.4 搭建步骤:手把手来一遍

别嫌啰嗦,按这个顺序做,能省掉一半的排查时间。

  1. 先把STM32最小系统板插到面包板上,注意引脚不要短路。
  2. 接USB转串口模块:用公对母杜邦线,把模块的TX、RX、GND分别连到STM32的对应引脚。
  3. 检查电源:用万用表量一下STM32的3.3V引脚和GND之间,电压应该在3.3V左右。如果不对,立刻断电检查。
  4. 连接电脑:把USB转串口模块插到电脑上,安装驱动(CH340需要手动装,CP2102一般免驱)。
  5. 打开串口助手:设置波特率115200、8位数据、1位停止位、无校验。发送一个“AT\r\n”,看看有没有返回“OK”。
关键检查点: 如果发送AT没反应,先检查接线,再检查波特率是否匹配。我遇到过最坑的一次,是USB转串口模块的TX引脚虚焊,信号根本没发出去。

2.5 用逻辑分析仪验证信号

这一步不是必须的,但如果你想让调试效率翻倍,我强烈建议你学会用逻辑分析仪。说白了,它就是让你“看到”串口线上的电平变化。

接线很简单:

  • 逻辑分析仪的通道0 → STM32的TX引脚
  • 逻辑分析仪的GND → 板子的GND

然后打开逻辑分析仪软件(比如Saleae Logic),设置采样率1MHz以上,触发方式选“下降沿”。发送一个AT指令,你就能看到一串高低电平的波形。数一下每个位的宽度,就能算出实际波特率——这是排查波特率不匹配的终极手段。

避坑指南: 我曾经遇到一个案例,代码里配的波特率是115200,但示波器一看实际只有9600。原因是时钟配置错了,导致串口时钟分频不对。这种问题,光靠串口助手永远查不出来。

2.6 硬件连接总览图

下面这张图,把整个硬件连接关系画清楚了。你照着接,不会错。

硬件连接结构图 STM32 最小系统板 TX (PA9) RX (PA10) GND USB转串口模块 RX TX GND TX → RX RX → TX GND → GND 电脑(串口助手) USB线 ⚠️ 关键提醒 TX ↔ RX 必须交叉 GND 必须共地 电压不能超过3.3V

2.7 常见硬件故障速查表

硬件搭好了,但万一不工作怎么办?别慌,对照这张表排查,大部分问题都能解决。

现象 可能原因 解决方法
串口助手收不到任何数据 TX/RX接反、GND没接、波特率不匹配 检查接线,确认波特率,用逻辑分析仪看波形
收到乱码 波特率不一致、电平不匹配、时钟不准 核对波特率,检查STM32时钟配置
发送AT无响应 模块没上电、AT指令格式不对(缺\r\n) 检查模块供电,确认指令以\r\n结尾
数据偶尔丢包 地线接触不良、电源纹波大、干扰 换粗地线,加100nF去耦电容
再强调一次: 如果你用的是面包板,杜邦线一定要插紧。面包板用久了,内部弹簧片会松,导致接触不良。我遇到过最诡异的问题,是面包板上一根线没插到底,结果数据时通时断,折腾了两天才发现。