ARTICLE · 1125993
自制的串口调试器——软件功能调试篇
前两篇在这里:
- 第一篇:硬件方案(CH340X自动下载、BQ25601电源管理、ESP32-S3主控)串口调试还在抓瞎?我做了个能“偷听”TX/RX的小工具
- 第二篇:开发方法论(四层架构、命名规范、AI全自动闭环)嵌入式开发skill:从“屎山代码”到全自动开发闭环的实践
这篇是执行篇,看看这套方法真正用在一个串口调试器上,效果到底怎么样。

一、先锁IO:硬件资源冻结
第二篇里提过一个原则:硬件资源必须先冻结再编码。引脚复用冲突是嵌入式开发最常见的低级错误,与其让AI“猜引脚”,不如先把这张表定死。
3.1 屏域 SPI(SPI2_HOST)
| 信号 | GPIO | 宏名 |
|---|---|---|
| SCK / MOSI / MISO | 12 / 13 / 11 | PIN_PANEL_* |
| LCD CS / DC / RES / BLK | 48 / 14 / 39 / 40 | PIN_LCD_*(BLK 高开) |
| 触摸 CS / PEN | 47 / 41 | PIN_TOUCH_* |
| SD CS | 10 | PIN_SD_CS |
时钟:面板约 20 MHz;触摸约 2 MHz;SD 约 10 MHz。
3.2 UART
| 用途 | UART | TX | RX |
|---|---|---|---|
| 烧录/日志 | UART0 | 43 | 44 |
| 通道 A | UART1 | 17 | 18 |
| 通道 B | UART2 | 15 | 16 |
监视:只绑 RX,TX 用 UART_PIN_NO_CHANGE。
发送:uart_set_pin 再绑 TX;硬件上需拨通 SW2 对应位。
3.3 电池 / 其它
| 功能 | GPIO | 宏 |
|---|---|---|
| BQ25601 SDA/SCL/INT | 1 / 2 / 42 | PIN_BAT_* |
| 状态 LED | 21 | PIN_STATUS_LED |
| EXT-I2C | 8 / 9 | 占位 |
| EXT-1W | 38 | 占位 |
| EXT-SPI | 4/5/6/7,SPI3_HOST | 占位 |
| USB-DATA | 19/20 | 原生 USB |
二、功能分块:要做什么
IO定死之后,接下来就是把功能拆清楚。这个串口调试器主要分这些块:
| 名称 | 说明 | 备注 |
|---|---|---|
| 串口监视 | 双路 RX → 屏显 + 可选写 SD | 工具主要功能可以监视一路双向的串口通信 |
| 串口控制 | 内置预设经 A/B 口 TX,看回复 | 调试器可以临时作为主机发送串口数据,方便现场调试 |
| 查看文件 | SD 日志目录浏览 + 分块读 | 方便查看保存的监视记录 |
| 快捷发送 | 读 SD quick/*.csv 点选/循环发送 | 支持预设报文快捷发送 |
| USB 读卡器 | TinyUSB MSC 挂 SD | 用于电脑导出监视文件 |
| USB 上位机 | TinyUSB CDC 自定义帧 | 可以通过上位机配置自定义报文等功能 |
| 系统设置 | 串口/系统/电池 | 设置波特率、屏幕亮度等系统参数 |
| 自动熄屏 | 30s 无触摸关背光 | 延长电池供电使用时长 |
| 屏背景 | 预设 + 自定义 | 支持换好看的背景图 |
| 远程控制 | STA + WS 推 A/B | 通过小程序的局域网串口监视功能可以远程查看监视 |
| BLE 配置 | 小程序配参 | 通过小程序连接蓝牙可以配置参数 |
| 电池 | BQ25601 | 电源管理 |
三、开发流程:把ESP-IDF配置丢给Cursor,架构让它搭
第一篇聊硬件,第二篇聊方法,这篇该聊执行了。
具体做法很简单:打开Cursor,把ESP-IDF的环境配置路径告诉它——在Windows下就是激活idf.py的那条命令——然后把第二篇里定义的四层结构(BSP/device/function/library)和上面那张IO表一起丢给它。剩下的,让它按设计文档先把架构搭出来。

编译烧录也不用切窗口。ESP-IDF现在有MCP Server可以用,把mcpServers配置写进Cursor的mcp.json,AI就能直接调用idf.py build、flash、monitor,整个过程在对话里完成。或者用esp-idf-helper这类skill,它把configure → build → flash → monitor的完整命令行流程封装好了,Cursor直接就能用。
架构搭完之后,剩下就是往里填功能。串口监视、发送、SD写入、USB CDC、WS推送,每个功能落到对应的层里,AI知道该改哪个文件。这就是第二篇里说的“结构对抗屎山”在实际项目里的样子。
四、产品的定位与灵感
这个产品实际是之前做的无线串口监视器的升级。
8块钱手把手教你做无线串口监视器:蓝牙透传+局域网Websocket+MQTT(二)
之前那篇《8块钱手把手教你做无线串口监视器:蓝牙透传+局域网Websocket+MQTT(二)》,用的是ESP32-C3核心板,简单实现了远程监视串口的功能。当时主要是调试小程序用的,功能比较单一,只是通过一个串口去监视。这次不仅仅可以远程监视串口通信,设备本身也可以保存监视数据,使用场景上有了不小提升。
还有就是之前用过的一个小工具,简单说就是USB转TTL+IIC+SPI,使用上位机来和进行通信。但是这么一个东西竟然要50多!!!当时需要用电脑进行IIC通信,手头没有更好的办法,所以还买了2个。现在这个东西的主要功能也被我集成到串口控制器上了。虽然部分功能还没有实现……
五、设备部分
实际调试还是比较麻烦的,现在实现了基本功能,来展示一下吧。
首先是屏幕控制部分。由于屏幕尺寸还是有点太小了,所以主界面没有做成列表形式,列表太容易误触了。这里采用了上下翻页的方式。
主界面分成了:串口监视、串口发送、读文件、快捷发送、上位机控制、读卡器模式、小程序控制模式、设置。这几部分。具体的功能后续再一一讲解,这里先简单展示一下。
目前除了串口监视,还完成了串口发送功能。这是绿色字,就是调试器发送出来的数据。
六、上位机部分
仿照那个50多块的USB转TTL+IIC+SPI小工具,把它最主要的通过上位机进行通信的框架准备好。目前只支持了串口监视的查看功能,后续再增加IIC等通信功能。
七、下一步
目前串口监视和发送已经能用了,上位机的串口查看框架也搭好了。下一步是补上I2C和SPI的通信,把那个50块小工具的功能全部吃进来。另外,小程序的局域网监视和BLE配参也在计划里。等这些都跑通了,再回来汇报。