第一次把一整套读写卡流程跑通
从一块普通的 MCU 开发板开始,第一次完整实现“寻卡 → 认证 → 读文件 → 写文件”的全过程。 真正让我卡住的不是读卡驱动,而是卡片自己的文件结构和密钥体系—— 它逼着我第一次认真读一份规范文档,而不是照着例程改参数。 也是从这时候起,我开始习惯把每一步的报文都抄下来存档。
第一版自研 Bootloader
因为要给已经装在现场的设备升级,第一次自己设计固件包格式与升级协议: 帧头、长度、地址、数据、CRC 校验,固件分包传输。 当时还不知道“中断向量表偏移”这个概念,踩了很多坑才明白 跳转不只是跳到那个地址那么简单。
手持监测设备:第一次做传感器算法
做一个手持式的生理参数监测设备,接触了光电容积脉搏波传感器与差压传感器, 在 OLED 上做实时波形显示。第一次意识到传感器给的是“原始码值”而不是“物理量”, 中间那一层换算与滤波才是真正的工作量。 也是在这个项目里第一次犯了参数存储设计上的错误,后来专门写了一篇笔记复盘。
四板卡读写卡系统(第一代)
第一次做多板卡协作的系统:中控、主板、读卡器、键盘各自一块板, 通过 RS485 总线连成一套。这一步让我理解了“协议就是接口契约”—— 四块板的开发可以并行,前提是寄存器地址表先说清楚。 也是在这里第一次把“卡即内存”这种映射式设计用在读卡器上。
双枪主程序:从单路到多路
同一套系统扩展到“双枪”(两路同时工作)。听起来只是数量翻倍, 实际上带来的是并发与资源划分问题:参数区怎么分、 记录索引怎么区分、两个通道同时要动作时谁先谁后。 第一次体会到“多一路”不等于“多写一遍”。
系统定型:故障码分级与状态机稳定下来
这一年做的最有价值的一件事是把故障码体系重新设计: 按数值区间划分“可手动清除 / 需密码清除 / 不可手动清除”三级, 并把状态机的框架固定下来,之后几代产品一直沿用。 代价是当时打了很多竞态补丁——同一个“状态切换时按键没松手”的问题, 在三个不同的文件里各修过一次。
液位采集小板:一个“够用”的 Modbus 从站
写了一块挂在总线上的扩展小板,两路模拟量加两路单总线温度, 按阈值驱动四路继电器。这是我把 Modbus 从站从头写一遍的项目: 寄存器表、CRC 查表、异常码、半双工方向控制。 也是在这个项目里被“补偿值的符号表示法”坑了一次。
自助加注设备主控:一次架构重写
在已有项目基础上重写主控固件,把应用层改成“一个状态一个任务”的结构, 配合三段式任务体和故障状态下的任务重建机制。 这次重写之后,同一套框架被直接复用到第二个同类项目上,省掉了大半工作量—— 这是“先把框架做出来”这个决定第一次明显回本。
电池检测单元与广播式 Bootloader
第一次在只有 8 KB RAM 的芯片上做自带升级功能的设备。 因为内存装不下整个固件,只能分包传输;又因为设备挂在半双工总线上, 必须自己设计一套带站号、支持一对多广播的协议—— 现成的点对点升级协议在这里完全不适用。 这个项目留下了我写得最完整的一套设计文档与测试报告。
电池管理主控与采集单元
开始做规模更大的系统:主控单元负责几百节单体的电压、温度与内阻采集, 做状态估算、主动均衡决策与报警分级;下行用两路 RS485 轮询采集单元, 上行用以太网与无线模块上报数据。 第一次面对“一张几千个寄存器的变量表”, 也是第一次认真做通信时序的参数化——把超时和间隔全部外提成可配置寄存器。
产线检测工装:把“检测”这件事做成流程
为量产环节做了一套检测工装:主机通过总线对被测板执行十一步检测工序, 结果实时显示在一块小尺寸 SPI 屏上。做完之后的复盘让我印象很深—— 其中四项只有流程和显示,没有真正的判定代码。 从那以后我给自己定了一条规矩:测不出失败的测试,等于没测。
工业压力变送器:把标定链路走完整
做一个需要把测量精度做上去的变送器:24 位 ADC 采集压力芯体, 先做芯体量程归一化,再做零点与两点校准,最后叠一层温度补偿, 输出环节把压力转成 4–20 mA。第一次系统地理解了 “精度是标定出来的,不是选出来的”。
多板卡控制系统:以太网做板间通信
开始做一个以太网通信的控制系统:控制面板与集控箱通过 UDP 交换控制与状态数据, 集控箱再以 RS485 下行驱动云台、光源与断路器。 这是我第一次把 LwIP 用在真实项目里,也是第一次被 “网线没插的时候程序不能卡死”这种问题教育。 这个项目时间跨度最长,现在还在持续修改。
现场联调与可靠性补课
项目进入联调阶段,改动几乎全部围绕可靠性: 通信超时后要重试几次、离线之后要不要继续重发、 设备状态变化要不要主动上报、故障怎么汇总给上位机、 意外停机与急停要不要进故障状态。 这些改动单条都很小,但累积起来让系统从“能演示”变成了“能连续运行”。
建立个人网站,把记录公开出来
把散落在各个项目里的笔记、踩坑记录和复盘整理成体系化的文章,建立了这个个人网站。 目的有三个:督促自己把问题写清楚、把零散的记录结构化、 也给同样在做嵌入式的学习者一点参考。 所有内容仅代表个人学习状态,不代表任何单位或权威结论。