2. 系统架构设计:主控选型、通信接口与上下位机架构

好,咱们直接切入正题。量产测试工具的系统架构,说白了就是三件事:选谁当大脑、怎么跟它说话、上下位机怎么分工。这三件事没想清楚,后面写代码、调板子全是坑。

2.1 主控选型:ARM 还是 MCU?

这个问题我几乎每次做新项目都会被问到。我的回答很简单:看你的测试项有多重

  • 纯 MCU 方案(比如 STM32、GD32):适合功能简单、IO 密集型的测试。比如按键检测、LED 灯测试、串口通信测试。我做过一个 POS 机键盘测试工装,就用了一颗 STM32F103,成本低、响应快,足够了。
  • ARM + Linux 方案(比如全志、瑞芯微):适合需要跑协议栈、处理图像、或者做复杂数据记录的场合。比如你要测试 4G 模块的 TCP 连接、要拍屏幕照片做 OCR 识别,那 MCU 就扛不住了。

我个人习惯的选型原则:

  • 测试项少于 10 个,且都是低速 IO → 用 MCU
  • 需要网络通信、文件系统、数据库 → 用 ARM Linux
  • 两者混搭?我试过,但维护成本翻倍,不推荐

嗯,这里要注意一点:别为了省成本选太弱的 MCU。我在项目中遇到过,有人选了 8 位单片机做量产测试,结果测试项一多,Flash 装不下,最后还得换芯片,反而耽误了交期。

2.2 通信接口:USB、串口、网口怎么选?

主控选好了,接下来就是上下位机怎么连。量产测试里,通信接口的稳定性比速度更重要。你想想看,产线上一分钟要测好几台机器,断一次连接就得重来,那损失可大了。

接口类型 速度 稳定性 适用场景
串口(UART) 慢(115200bps 常见) 极高 简单指令交互、固件烧录
USB(HID/CDC) 中等 数据量稍大、需要即插即用
网口(TCP/UDP) 依赖网络环境 多工位并行、远程监控

我的建议是:

  • 如果只是发几条 AT 指令、读几个电压值,串口就够了。便宜、简单、可靠。
  • 如果需要传输固件(比如几百 KB 的升级包),用 USB 会快很多。我曾经用串口传固件,等得都快睡着了。
  • 如果产线有几十个工位,需要统一管理,那就得上网口。但要做好断线重连机制,这个我后面会细讲。

避坑指南: 我曾经在 USB 通信上吃过亏。量产测试时,Windows 系统突然更新了驱动,导致 USB 设备无法识别。后来我改用串口 + USB 双通道设计,串口做控制,USB 做数据传输,稳多了。

2.3 上位机与下位机架构

说白了,上位机就是 PC 端的测试软件,下位机就是工装里的主控板。它们俩怎么配合,决定了整个系统的效率。

我常用的架构是这样的:

上位机(PC):
  - 测试流程管理(Python/C#)
  - 数据记录与报表生成
  - 用户界面(操作员点击“开始测试”)
  ↓ 通信协议(自定义指令集)
下位机(MCU/ARM):
  - 硬件控制(继电器、传感器)
  - 信号采集(ADC、GPIO)
  - 结果反馈(PASS/FAIL)

为什么这么分?因为上位机擅长处理逻辑和界面,下位机擅长实时控制。你让 MCU 去生成 Excel 报表,那不是为难它吗?反过来,让 PC 去控制微秒级的脉冲信号,延迟也受不了。

一个典型的测试流程:

  1. 操作员放上 POS 机,点击“开始”
  2. 上位机通过串口发送指令:“测试按键”
  3. 下位机收到指令,闭合继电器,模拟按键按下
  4. 下位机读取 POS 机的响应信号,返回“按键正常”
  5. 上位机记录结果,显示绿色 PASS
  6. 重复步骤 2-5,直到所有测试项完成

这里有个细节:指令集要设计得简单粗暴。我见过有人用 JSON 格式传指令,结果下位机解析 JSON 就占了一半的 Flash。量产测试不需要花哨,用固定长度的二进制指令就行,解析快、不容易出错。

注意: 上下位机的通信协议一定要做超时处理。我曾经遇到过,下位机死机了,上位机还在傻等,整个产线都停了。后来我加了个看门狗定时器,下位机 5 秒没响应就自动复位,上位机也做超时重试,这才解决了问题。

好了,系统架构这块就聊这么多。下一章咱们会深入讲讲具体的硬件设计,包括电源、信号调理和接口保护。这些东西看着不起眼,但产线上出问题往往就出在这些地方。