Files
ldc1612_cmake_vscode/AGENTS.md
T
hulk e81c902341 docs: 修正协议文档命令编号并补全 M4~M9999 帧格式说明;新增项目 AGENTS.md
- 温度上报命令由 M3 笔误更正为 M4,补充 M4 回复示例
2026-10-02 23:07:51 +08:00

4.8 KiB
Raw Permalink Blame History

AGENTS.md — ldc1612_cmake_vscode 项目约定与进度

项目概述

GD32E230 电涡流传感器节点固件:LDC1612(电涡流/电感数字转换器)+ TMP112(板载温度), 通过 RS485 串口命令协议(D5 03 LEN [cmd] CRC)与上位机通信,支持温度补偿与标定。

  • 协议文档:CommunicationProtocol.md;寄存器速查:LDC1612_REG_LIST.md
  • 版本策略:Inc/version.h(BOARD_TYPE_CODE.主.次.修订,当前 23.1.0.1)

工具链与构建

  • 语言/环境:C99,GD32E23x 标准库(SDK/)
  • 编译器:arm-none-eabi-gcc(D:\toolchain\xpack-arm-none-eabi-gcc-15.2.1-1.1)
  • 构建:CMake + Ninja,preset Debug / Release,输出 Build/<preset>/Application/Application.elf
    • 命令行构建:cmake --build Build\Debug(需 arm-none-eabi-gcc/cmake/ninja 在 PATH)
  • 烧录/调试(.vscode/tasks.json、launch.json):
    • OpenOCD:GD32_OPENOCD_BIN 指向定制构建(含 gd32e23x flash 驱动,CMSIS-DAP HID 后端)
    • Flash MCU (DAPLink) 任务 + .vscode/openocd_daplink_gd32e23x.cfg: 适配 DAPLink 探针(无 connect_assert_srst,当前共享 cfg 的 connect_assert_srst 会导致 Cortex-M23 识别失败);烧录命令 program Application.elf verify reset exit
    • J-Link 任务需 SEGGER 探针 + PATH 中 JLink.exe(当前接的是 DAPLink,不适用)
  • 调试器探针历史问题(2026-10-02 已解决):DAPLink 的 CMSIS-DAP v1 接口曾被 Zadig 装上 libwdi WinUSB 驱动(oem244.inf),导致 OpenOCD 枚举不到探针;删除该驱动包后 恢复 HID。若复发:管理员运行 pnputil /delete-driver <oemNN.inf> /uninstall。
  • 串口验证:RS485 转 USB(FTDI,COM15),115200-8N1,需同时置位 RTS+DTR (转换器方向控制),否则命令发不出去;DAPLink 虚拟串口为 COM8。

硬件/板级约定(Inc/board_config.h)

  • MCU:GD32E230(自动探测 Flash 容量,64KB → USART1 作 RS485)
  • RS485:SP3487(无自动方向),USART1 PA2(TX)/PA3(RX),DE=PA1(USART 硬件 DE,AF1)
  • I2C0:PF0(SDA)/PF1(SCL),硬件 IIC 100kHz(SOFTWARE_IIC 可切换软模拟,默认关闭)
  • LED:PB1
  • 传感器:LDC1612 @0x2B(40MHz 外部时钟),TMP112 @0x49(ADD0=GND)
  • 调试宏(均默认关闭):DEBUG_VERBOSE / COM_DEBUG / LDC_DEBUG / EDDY_DRIVE_CURRENT_DETECTION

内存布局(当前调试阶段,2026-10-02 用户确认)

  • APP 直接链接在 0x08000000,VECT_TAB_OFFSET=0x00(Src/system_gd32e23x.c), 不考虑 Bootloader;正式发布时再切回 Bootloader 布局(0x08002000/54K + OTA 打包, 参见 hulk-mcu-firmware skill)
  • 修改布局需同时改 LD/gd32e23x_flash.ld 的 ORIGIN 与 VECT_TAB_OFFSET

开发进度

已完成

  • LDC1612 驱动(初始化/单通道配置/原始值读取/状态检查)
  • TMP112 驱动(初始化/温度读取/阈值/单次转换)
  • RS485 命令体系:M1/M2(周期上报开关)、M3(涡流原始值)、M4(温度×10000)、 M5(温度补偿涡流值)、M6(标定数据:涡流+温度)、M999(版本)、M9999(复位)
  • v1.0.1:涡流传感器温度标定方法与标定命令(M6)
  • 2026-10-02:从模板 gd32e23x_template_cmake_vscode 导入 IIC 驱动改进: 错误路径改为 i2c_bus_reset() 总线恢复+重试、_i2c_wait_flag_timeout 系列带超时 辅助函数、i2c_scan 增加 AERR 处理、新增 i2c_read_raw(无子地址读取)、 i2c_write/i2c_read 改为 16 位寄存器地址(DLPC 风格,本项目传感器仍走 i2c_write_16bits/i2c_read_16bits 8 位寄存器路径);移除未使用的 i2c_read/write_8bits、_32bits、i2c_read_display_params 显示面板便捷函数; tmp112.c 读取改回 i2c_read_16bits
  • 2026-10-02:硬件验证通过——全部命令实测:M3 涡流原始值 ~0x01ADBADC (室温)/0x01B094BA(板子被手捂热后,随温度同步上移,无错误位)、 M4 温度 27.25→30.45→29.95°C(跟踪板温变化合理)、M5 补偿值(系数为 0 时≈M3)、 M1 周期上报(~10ms/帧)开启、M2 停止("ok" 确认)、M6 组合数据、 M999 版本 v23.1.0.1、M9999 复位(复位后 M999 恢复应答); 所有响应 CRC 抽查校验正确;Release 预设编译通过(text 11.4KB)
  • 2026-10-02:解决 DAPLink 烧录器识别问题(Zadig WinUSB 驱动冲突); 新增 DAPLink 专用烧录 cfg 与任务

计划 / TODO

  • 正式发布前切回 Bootloader 布局(0x08002000/54K)并适配 OTA/Ymodem 打包流程
  • M5 温度补偿系数目前为 0(TEMP_COMP_COEFF_*),待标定后填入实际温漂系数
  • 模板侧(gd32e23x_template_cmake_vscode)的 SEGGER RTT / CFG_ENABLE 宏体系 尚未同步到本项目(board_config.h 仍是 define/undef 风格),如需对齐另起任务