{"code":1,"msg":"成功","time":"1793358311","data":{"title":"〖2026嵌入式大赛〗便携式调试器","content":"**1.1 项目背景与目标**\r\n在嵌入式产品研发与维修过程中，工程师通常需要同时携带串口助手、示波器、信号发生器、逻辑分析仪等多种仪器，设备分散、接线繁琐、成本高昂。本项目旨在以单片高性能 MCU 为核心，配合大尺寸触控屏，实现“一机多能”的手持式调试平台，覆盖串口、CAN 等总线调试以及波形观测、信号激励、开关时序分析等常见需求。\r\n项目目标包括：一是完成 7 英寸 RGB565 液晶屏的 TLI 硬件接口驱动与电容触摸移植，实现流畅的全中文图形界面；二是完成串口调试工具的完整功能，包括八档波特率热切换与自动波特率检测；三是完成 CAN 总线调试、双通道示波器、双路开关检测、DDS 信号发生器等常用调试功能；专业总线预留扩展接口与界面入口。\r\n\r\n![2.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/6b034d2c67297f84779bff83f192626c.jpg.webp)\r\n\r\n![1.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/1b063f33dd2a37005cd30f4d392967e0.jpg.webp)\r\n**1.2 技术亮点**\r\n本项目的主要技术亮点如下：其一，采用 GD32H759IM 片上 TLI（TFT-LCD Interface）外设驱动 7 英寸 800×480 像素 RGB565 液晶屏，像素时钟 30 MHz，配合帧缓冲与垂直同步机制实现无撕裂的实时图形刷新；其二，针对 GD32H7 系列 USART 使能状态下波特率寄存器无法写入的硬件特性，在驱动层实现“先禁能、再配置、后使能”的波特率热切换方案，并支持八档波特率（9600～921600 bit\/s）实时切换；其三，实现基于 DWT 定时器的自动波特率检测算法，通过位宽测量与帧周期交叉验证，可在未知波特率设备上自动识别通信速率；其四，双通道 ADC 共用方案，使示波器与开关检测复用同一采样链路，硬件简洁；其五，内置约 5000 常用汉字的点阵字库，全中文图形界面，操作直观。\r\n**1.3 主要技术指标**\r\n项目\t指标\r\n主控芯片\tGD32H759IM（Cortex-M7 @ 600 MHz）\r\n存储资源\tFlash 3840 KB，AXI SRAM 832 KB\r\n操作系统\tRT-Thread 实时操作系统\r\n显示屏\t7 英寸 TFT-LCD，800×480，RGB565，30 MHz 像素时钟\r\n触摸输入\tGT911 电容触摸（软件 I2C 接口）\r\n串口调试\tUSART1，八档波特率热切换 + 自动波特率检测\r\nCAN 总线\tCAN1，常用波特率可配置\r\n示波器\t双通道，0～3.3 V，ADC2（PC2_C\/PC3）\r\n信号发生器\tDAC0_OUT1（PA5），1～10000 Hz，多波形\r\n开关检测\t双路 ADC 采集，按压时序与稳定度分析\r\n开发\/调试\tRT-Thread Studio，板载 GD-Link（pyocd 烧录）\r\n**2 功能介绍\r\n2.1 主菜单与交互**\r\n系统上电后首先显示开机画面，随后进入 4×3 宫格主菜单，共布置 8 个应用入口，每个入口同时绘制应用图标与中文名称，其余位置留空。已配置的 8 个应用为：串口、CAN、1394、1553B、开关检测、示波器、信号发生器、数据查看。其中 1394 与 1553B 为预留扩展入口，界面已就绪、功能规划中。\r\n交互支持两种方式：其一为板载按键（WAKEUP、USER、TAMPER 短按\/长按），用于上下选择与确认、返回；其二为 GT911 电容触摸，触摸坐标经消抖与坐标校正后驱动页面状态机。页面采用状态机管理，各应用页面独立刷新，任意页面点击空白区域或按返回键可回到主菜单。\r\n**2.2 串口调试工具**\r\n串口工具使用 USART1（TX=PA2、RX=PA3，复用 AF7），是项目的核心功能，具体包括：\r\n参数设置：波特率支持 9600、19200、38400、57600、115200、230400、460800、921600 共八档，可通过界面卡片实时切换；数据位、停止位、奇偶校验等参数均可设置。\r\n接收显示：提供接收窗口实时显示串口数据，支持终端模式直接呈现数据内容；设备启动时通过控制台（USART0，PA9\/PA10）输出日志信息。\r\n自动波特率检测：针对未知设备，采用基于 DWT 定时器的测量算法自动识别波特率。算法采集数据帧边沿时间戳，以相邻边沿最小间隔估算位宽（通道 A），并以起始位低电平段对应的帧周期交叉验证（通道 B），匹配容差 ±12%，识别后自动应用并复测帧错误率确认。\r\nAT 调试指令：内置 AT 指令输入区，便于对串口外设（如 4G 模块、WiFi 模块）进行调试。\r\n\r\n![串口.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/433689be73be2068311b1ec527d1603a.jpg.webp)\r\n**2.3 CAN 总线调试**\r\nCAN 调试工具使用 CAN1 控制器（RX=PB5、TX=PB6，复用 AF9），提供 CAN 总线收发调试的常用功能：波特率配置、报文 ID 与数据域设置、发送与接收、接收列表实时显示。界面布局清晰，便于总线故障排查与节点通信验证。\r\n\r\n![CAN.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/1541c1f6f344734d2795f8c39cbfe8f3.jpg.webp)\r\n**2.4 开关检测**\r\n开关检测基于 ADC2 双通道采样：通道 A 为 PC2_C（ADC2_IN0），接板载电位器作为参考电平；通道 B 为 PC3（ADC2_IN1），外接被测开关信号。功能包括：按压开关后展示两路信号按压波形对比；计算两路信号接通（上升沿）与断开（下降沿）所需时间及其差值；统计信号稳定性（抖动与保持时间）。界面以波形与数值两种形式呈现分析结果。\r\n\r\n![开关检测.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/5fd64b2274ba53e973f4f8ee647f9626.jpg.webp)\r\n**2.5 双通道示波器**\r\n示波器与开关检测共用 ADC2 双通道（CH1=PC2_C、CH2=PC3），测量范围 0～3.3 V。常用功能齐备：双通道同屏实时波形显示、时基（时间轴）分档调整、触发搜索、过零测频、波形冻结等。界面提供菜单式功能调节框，点击波形区以外任意处可返回主菜单。\r\n\r\n![示波器.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/3a6b1f6c5592845fc49d73550745f1ef.jpg.webp)\r\n**2.6 信号发生器（DDS）**\r\n信号发生器基于片上 DAC0_OUT1（PA5）输出，频率可在 1～10000 Hz 范围内通过数字键盘输入设置，支持正弦波、方波、三角波等多种波形，输出开关可控。界面实时绘制当前输出波形预览（低频率时按实际周期数显示，较高频率时固定显示 20 个周期），便于直观核对输出参数。\r\n\r\n![信号发生器.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/2aefaffc547f69003db200e2690d5a9f.jpg.webp)\r\n\r\n![信号发生器2.jpg](https:\/\/oss-club.rt-thread.org\/uploads\/20261012\/d9971c511c246180409ba20facac7431.jpg.webp)\r\n**2.7 数据保存与查看**\r\n数据查看应用用于浏览串口等工具保存的数据记录。SD 卡存储与文件系统（DFS）组件已规划，待使能相应 RT-Thread 组件后即可将接收数据保存至 SD 卡并在本页面浏览回放，当前版本界面已就绪、存储功能为预留状态。\r\n**3 开源软件代码\r\n3.1 工程代码结构**\r\n工程采用 RT-Thread Studio 标准工程结构，主要目录如下：\r\napplications\/gui\/：GUI 应用层源码，包括页面管理、绘图原语、字库渲染、各功能页面与触摸驱动；\r\ndrivers\/：板级驱动层，包括 LCD、串口、CAN、ADC、DAC、PWM、GPIO、SDIO 等设备驱动及引脚配置文件；\r\nlibraries\/：GD32 标准外设库与启动文件；\r\nrt-thread\/：RT-Thread 内核与组件源码；\r\nDebug\/：编译输出目录（rtthread.bin 固件）。\r\n**3.2 核心代码模块说明**\r\n**4 硬件框架说明\r\n4.1 硬件总体框架**\r\n系统硬件以 GD32H759IM 为主控，划分为以下功能单元：电源与复位单元；时钟单元（外部 25 MHz 晶振经 PLL 倍频至 600 MHz 内核时钟，LCD 像素时钟由 PLL2 链路产生 30 MHz）；显示单元（TLI 接口驱动 7 英寸 RGB565 液晶屏，背光由 PG13 控制）；触摸单元（GT911 电容触摸，软件 I2C 接入）；调试接口单元（串口 USART1 对外调试、USART0 为控制台日志、CAN1 总线接口）；采集与激励单元（ADC2 双通道、DAC0_OUT1 输出）；调试与下载单元（板载 GD-Link，SWD 接口）。\r\n**4.2 核心器件选型**\r\n器件\t型号\/规格\t用途\r\n主控 MCU\tGD32H759IM，Cortex-M7 @600 MHz\t系统核心，外设控制与数据处理\r\n液晶屏\tRGB070M1，7 英寸 800×480 RGB565\t人机交互显示\r\n**4.3 接口与引脚分配**\r\n功能\t外设\t引脚\t复用\/说明\r\n串口工具\tUSART1\tPA2（TX）\/PA3（RX）\tAF7\r\n控制台日志\tUSART0\tPA9（TX）\/PA10（RX）\tAF7\r\nCAN 总线\tCAN1\tPB5（RX）\/PB6（TX）\tAF9\r\n示波器\/开关检测 CH1\tADC2_IN0\tPC2_C\t板载电位器参考\r\n示波器\/开关检测 CH2\tADC2_IN1\tPC3\t外接开关信号\r\n信号发生器\tDAC0_OUT1\tPA5\t模拟输出\r\n触摸 SCL\t软件 I2C\tPH7\t开漏输出\r\n触摸 SDA\t软件 I2C\tPF9\t开漏输出\r\n触摸 RST\tGPIO\tPF6\t推挽输出\r\n触摸 INT\tGPIO\tPH6\t输入（轮询）\r\n背光控制\tGPIO\tPG13\t推挽输出，默认点亮\r\n**5.4 关键硬件设计要点**\r\n显示时序：LCD 像素时钟 30 MHz 由 HXTAL 25 MHz 经 PLL2（240 MHz VCO）分频链路产生，满足 800×480@30 MHz 刷新要求；帧缓冲位于 AXI SRAM，配合垂直同步等待避免撕裂。\r\n触摸接线：GT911 以软件 I2C 方式接入，SCL\/SDA 采用开漏结构并外接上拉；RST 由 GPIO 控制，上电复位时 INT 拉低以选择从地址 0xBA；触摸坐标按屏体方向进行左右交换校正。\r\n采集链路：ADC2 双通道共用地，输入量程 0～3.3 V；通道 A 接板载电位器提供参考电平，通道 B 外接被测开关，满足开关检测与示波器共用采样链路的设计目标。\r\n时钟配置：为使 USART1 在低波特率（如 9600 bit\/s）下仍可由 12 位分频器精确表示，将 USART1 时钟源切换为 IRC64M\/2（32 MHz），兼顾高、低波特率档位的整数分频精度。\r\n**6 软件框架说明\r\n6.1 软件总体架构**\r\n软件采用分层架构：顶层为应用层（GUI 页面与功能逻辑），中层为 RT-Thread 设备驱动框架（串口、CAN、ADC、DAC、LCD、GPIO 等设备注册与管理），底层为板级驱动*（drv_*）与 GD32 标准外设库，最终作用于硬件外设。系统启动后由 main 完成板级初始化、LCD\/触摸初始化与 GUI 初始化，随后进入主循环：周期性刷新动态界面元素（100 ms）、轮询触摸（50 ms）与扫描按键，事件经页面状态机分发到各功能页面。\r\n**6.2 RT-Thread 设备驱动框架**\r\n工程启用了 RT_USING_CAN、RT_USING_ADC、RT_USING_DAC、RT_USING_LCD 等组件，各外设通过 RT-Thread 设备接口统一访问：串口走 serial 设备框架，CAN 走 can 设备框架，ADC\/DAC 走 adc\/dac 设备框架，显示走 graphic 设备框架。应用层不直接操作寄存器，而是通过 rt_device_find\/open\/read\/write\/control 完成访问，便于组件化维护与扩展。\r\n**6.3 GUI 交互框架**\r\nGUI 采用自研轻量框架（未依赖重量级图形库，以适应 832 KB SRAM 的资源约束）：gui_core 提供点、线、矩形、填充等绘图原语及 ASCII 8×16 与 CJK 点阵渲染；gui_pages 以页面状态机管理主菜单与各应用页面，页面切换时统一执行重绘，绘图完成后刷新 D-Cache 保证帧缓冲一致；gui_app 完成输入事件采集与消抖。界面配色采用高对比度方案（纯黑背景、亮青标题、纯白正文、亮黄辅助），保证长时间观察的清晰度。\r\n**6.4 关键技术实现\r\n6.4.1 TLI 液晶驱动**\r\ndrv_lcd.c 基于 TLI 外设配置水平\/垂直时序参数与 LAYER0 全屏图层，帧缓冲为 RGB565 格式；行标记中断释放垂直同步信号量，绘制线程在写帧前等待 vsync，避免画面撕裂；同时利用 IPA 图像加速外设实现图片快速绘制。\r\n**6.4.2 GT911 触摸驱动**\r\ntouch_gt911.c 采用软件 I2C（bit-bang）方式访问 GT911，直接操作 GD32 标准外设库 GPIO 实现时序；通过读取触摸状态寄存器（0x814E）获取触点数量，从坐标寄存器（0x8150）读取各触点坐标，读取后写 0 清除；检测到按下\/松开后回调 GUI 输入接口，触摸坐标经左右交换校正后参与页面交互。\r\n**6.4.3 波特率热切换与自动检测**\r\n针对 GD32H7 系列 USART 在使能状态下波特率寄存器写入无效的特性，串口驱动的 gd32_uart_configure 在配置波特率前先执行 usart_disable，配置完成后再 usart_enable，实现运行中波特率热切换。为覆盖低波特率档位，uart_open 时将 USART1 时钟源切换为 IRC64M\/2（32 MHz），八档波特率均可整数分频。自动波特率检测使用 DWT 计数器采集边沿时间戳：通道 A 取相邻边沿最小间隔作为 1 位时间估计，通道 B 在起始位低电平段较长时间时取相邻下降沿间隔与帧周期交叉验证；匹配容差 ±12%，识别后应用目标波特率并以帧错误率复测确认，结束恢复原波特率与接收中断。\r\n**6.4.4 汉字字库**\r\n汉字显示采用 Unifont 点阵字库方案，通过在线工具（go-tools.org 的 LCD 字模生成器）批量生成约 5000 个常用汉字的点阵数据，配合 GB2312 到 Unicode 映射表（6768 项）实现 GB2312 编码到点阵的检索；ASCII 字符使用 8×16 点阵。字库按需存放于程序 Flash，兼顾显示清晰度与存储占用。\r\n**7 总结与展望**\r\n本项目基于 GD32H759IM 与 RT-Thread，完成了集串口调试、CAN 总线调试、双通道示波器、双路开关检测、信号发生器于一体的多功能调试器，实现了 7 英寸大屏的 TLI 驱动、GT911 电容触摸、全中文图形界面、八档波特率热切换与自动波特率检测等关键技术。\r\n后续工作包括：完成 1394 与 1553B 总线的硬件扩展板与协议分析功能；使能 SD 卡文件系统（DFS）组件，落地数据保存与回放；进一步优化自动波特率算法以覆盖更低频段；评估 USB 高速接口与以太网调试功能的可行性.","updatetime":"2026-10-12 11:14:45","author":"xiaochen"}}