Files
FilmForge/AGENTS.md
T

101 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FilmForge — AGENTS.md
## 项目约定
- **用途**:自制热压模具温控固件——塑型 PC 膜,负责加热驱动与测温(NTC),
对外走 RS485 数据口。基于 GD32F4xx 工程模板
(`https://gitea.hulk.wang/hulk/gd32f4xx_template_cmake_vscode`,源自
celalkismiroglu/gd32e23x-demo-suites-cmake 体系)。
- **命名**:仓库 `FilmForge`,固件工程 `FilmForge_FW`(产物自动命名
`FilmForge_FW_V<版本>_APP_<日期>.bin`),协议板卡类型码 `BOARD_TYPE_CODE 41`。
- **目标芯片**:GD32F405RET6(设备宏 `GD32F405`,IRC16M PLL 168MHz——板上无外部
晶振;硬件 FPU fpv4-sp-d16 / hard ABI;512K Flash,链接脚本 xE)。
- **串口角色与 PC 端映射**:
- debug 串口 = USART1(PA2 TX / PA3 RX,AF7,纯串口)→ PC 端 **COM4**;
printf 重定向到 USART1(`DEBUG_UART` 宏),`DEBUG_MODE` 打开后输出。
- 数据口 RS485 = USART0(PA9 TX / PA10 RX,AF7)+ DE 引脚 PA8(GPIO 手动切换
收发)→ PC 端 **COM5**(115200-8-N-1)。拉通阶段主循环回显。
- 注意 GD 外设编号比 STM32 小 1:PA9/PA10=USART0、PA2/PA3=USART1。
- **NTC 测温**:PC5(ADC0_IN15),硬件 10K 上拉、NTC 接 GND 侧。B 值公式换算,
`NTC_B_VALUE` 宏(3950/3435 未定,默认 3950,确认后修改);`R_PULL/NTC_R25`
均为宏,换料只改宏。
- **语言/工具链**:C(gnu11)+ ARM GCC(xpack 15.2.1 已验证)、CMake ≥ 3.20 +
Ninja、VSCode + CMake Tools + cortex-debug;工具链路径经 `GD32_GCC_BIN`。
- **目录约定**(沿用模板):
- `Build/` —— 构建树与产物(gitignore);
- `SDK/` —— CMSIS、标准外设库 V3.3.3、SEGGER_RTT、USB 库(`GD32_ENABLE_USB`
开关,默认 OFF,当前未用);
- `LD/` —— 链接脚本(默认 xE 512K);
- `Inc/`+`Src/` —— 应用层,板级引脚/开关集中在 `Inc/board_config.h`;
- `OpenOCD/` —— 工程内会话配置(GD-LINK/CMSIS-DAP + stm32f4x);
- `doc/` —— 芯片文档(数据手册/用户手册/固件库指南/AN,已齐备)。
- **编译方法**:
```bash
cmake --preset Debug && cmake --build Build/Debug
cmake --preset Release && cmake --build Build/Release
```
- **Git/网络经验**:origin = HTTPS(`https://gitea.hulk.wang/hulk/FilmForge.git`),
该实例 HTTPS/SSH 直传大包均不稳,已在本仓库配置
`http.proxy http://127.0.0.1:6789` + `http.sslVerify=false`(仓库级),
代理端口变化时用 `git config http.proxy http://127.0.0.1:<新端口>` 更新。
- **printf 浮点**:`--specs=nano.specs` 默认裁剪 `%f`(输出空白),已在
`cmake/project.cmake` 启用 `-u _printf_float`(F405 flash 充裕,ROM +8~10KB 无感)。
- **在线排查寄存器地址速查**(GD32F4xx):ADC0=0x40012000(RDATA@0x4C)、
USART0=0x40011000、USART1=0x40004400、GPIOA=0x40020000(OCTL@0x14)、
RCU:CTL0=0x40023800 / **PLL=0x40023804** / **CFG0=0x40023808**。
## 开发进度
### 已完成
- 模板就位(GD32F405RET6 / IRC16M 168MHz / 硬件 FPU / 上板验证过的模板体系)。
- **debug 串口**:USART1 PA2/PA3 @115200,printf 重定向 + RBNE 中断收环形缓冲
(模板已有,COM4 观测)。
- **RS485 数据口驱动**(`rs485.h/rs485.c`):USART0 PA9/PA10 AF7 + DE PA8 GPIO
手动切换;独立接收环形缓冲(预留一格策略 + PRIMASK 临界区);阻塞发送
(DE→TBE→TC→DE,防尾字节截断);`rs485_rx_clear()` 清接收缓冲。
- **NTC 测温驱动**(`ntc.h/ntc.c`):PC5 模拟输入 + ADC0 常规通道(软件触发单次
转换 + 校准),16 次采样均值 + 分压反解阻值 + B 值公式换算摄氏度
(含开路/短路电源轨检测)。
- `debug_uart_write()` 助手(uart.c):debug 口阻塞单字节发送。
- **命令协议框架移植**(`command.h/command.c`,自 E23x 移植):D5 帧协议
(D5 BOARD_TYPE LEN [cmd] CRC 累加和校验)+ B5 响应;数据源改为 RS485 收缓冲
(`rs485_rx_*`),响应经 `rs485_send` 发出(DE 自动切换);帧状态机 + CRC +
参数解析工具(uint_to_str/parse_uint_dec/parse_timer_parameter/find_parameter_value)
全套保留;通用命令骨架:**M888 软复位 / M999 版本号 / M9999 进 OTA**;
业务命令(加热/控温)待定义,switch 中扩展(TODO 注释有格式示例)。
- **命令协议 v1.0 定稿**(权威定义见根目录 `protocols.md`,帧 hex 全部脚本生成):
- M1 查温度 / M2 查上报状态 / M2S<ms> 上报间隔+开关(M2S0 停)/ M3 加热开关
(M3S1/M3S0/M3 查询)/ M4 目标温度(M4S<temp>/M4 查询)/ M888 / M999 / M9999
- M3/M4 为**预留**:仅维护软件状态(ack+可回读),真实加热硬件执行体待接入
(`command.c` 的 `heater_apply()` 桩);GUI 可先行全量联调协议
- 协议要点:全幂等(ack 丢可重发)、响应超时建议 300ms×3 次、温度一律 ASCII
- 上位机工具:用户另行开发 FilmForge 专用 GUI(协议按 protocols.md)
- **SerialMate 串口工具问题已定位**(见
`E:\Hulk-Coding\HW-Debug-Tools\SerialMate\ISSUE_rx_timestamp_and_lag.md`):
时间戳在 GUI 消费时打导致失真 + 接收日志无限增长致卡顿;待该工具修复后
再做长时间曲线联调。
- 工程改名:`FilmForge_FW`、`BOARD_TYPE_CODE 41`。
### 计划 / TODO(已提出尚未实现)
- [x] **RS485 拉通上板验证**:命令收发/响应/上报实测通过(固件端零丢字节,
响应 10ms 级实时);遗留为 USB-RS485 适配器方向切换丢包(换适配器解决)
与 SerialMate 显示层问题(见 ISSUE 文档)。
- [x] **NTC 测温上板验证**:NTC 支路修复后读数正常(23.6~25.9℃ 稳定)。
- [ ] **B 值确认**:温度计对照实测定 `NTC_B_VALUE`(3950/3435 二选一)。
- [ ] **适配器更换**:换可靠的 USB-RS485 适配器(当前自动方向切换间歇丢响应)。
- [ ] **加热驱动**:加热功率器件驱动与控制(MOS/PWM/继电器方案待定),
接入 `command.c` 的 `heater_apply()` 桩;随后控温闭环(PID)。
- [ ] **专用 GUI 上位机**:用户开发中,协议按 `protocols.md`。
- [ ] **LED 引脚确认**:FilmForge 自制板 LED 引脚未定(当前沿用模板默认 PA15,
仅为构建占位),按原理图修改。
- [ ] **delay_10us 校准**:M4@168MHz 系数为估算值(/300000),需实测修正。
## 备注
- 本机凭据/发布约定见用户级 `C:\Users\Lenovo\.zcode\AGENTS.md`。
- 模板工程位置:`E:\Hulk-Coding\gd32f4xx_template_cmake_vscode`(模板对标工程,
Gitea: gd32f4xx_template_cmake_vscode)。
- E23x 工程位置:`E:\Hulk-Coding\gd32e23x_template_cmake_vscode`(协议/驱动参考)。