SDC-ACQ&DAC 固件交付说明

STM32F407VET6 采集、双 CAN 与双路 DAC 控制板

文档版本:1.1 | 日期:2026-08-09 | 固件工程:A11_F407_SDC_ACQ_DAC_CubeMX

15 路状态采集4 路频率输入双 CAN 500 kbit/s双 MCP4725 DAC串口调试

1. 功能概览

功能当前实现
状态采集采集 PD0–PD14 共 15 路数字输入。上电和任一输入变化时,向 CAN1、CAN2 发送完整状态与变化掩码。
频率采集采集 PA0、PA2、PA6、PB14 的上升沿频率,每 20 ms 通过 CAN 输出;串口每 500 ms 汇总输出。
电压采集ADC1_IN8(PB0)测量外部经分压后的输入;对外输出分压前、已标定且滤波后的电压。
CANCAN1 与 CAN2 均为 500 kbit/s、11 位标准数据帧,并使用相同协议。
DAC通过 I2C2 控制两颗 MCP4725,接收 CAN 命令或串口命令设置 0–5.000 V 输出。
运行指示PE0 每 500 ms 翻转一次作为运行心跳;发生初始化错误时 PE0、PE1 快速翻转。

2. 接口和引脚

接口MCU 引脚 / 外设说明
15 路状态输入PD0–PD14 / EXTIbit0 对应 PD0,bit14 对应 PD14。
频率输入PA0/TIM5、PA2/TIM9、PA6/TIM3、PB14/TIM12上升沿输入捕获。
电压输入PB0 / ADC1_IN8报告值为分压前电压,单位 mV。
CAN1 / CAN2PB8/PB9;PB5/PB6分别为 RX/TX。
DAC I2CPB10/PB11 / I2C2DAC1 地址 0x61,DAC2 地址 0x60(7 位地址)。
调试串口PA9/PA10 / USART1115200、8N1、无硬件流控。

3. CAN 协议

所有字段均为小端序(低字节在前)。板卡主动上报的帧会分别发到 CAN1 和 CAN2。

CAN ID名称方向 / 时机数据定义
0x6A0心跳板卡发送,每 100 msA1 01 seq_L seq_H uptime_0..3;板号 A1、协议版本 1、序号、运行时间 ms。
0x6A1输入电压板卡发送,每 500 msuint16,单位 mV。例如 90 2F = 0x2F90 = 12176 mV = 12.176 V。
0x6A2四路频率板卡发送,每 20 ms4 个 uint16,单位 Hz;依次为 PA0、PA2、PA6、PB14。
0x6A3DAC 设置外部发送给板卡[DAC 编号][mV_L][mV_H],编号仅允许 1 或 2;每路 100 ms 未续帧归零。
0x6A4DAC 应答板卡发送,设置后[结果][DAC 编号][mV_L][mV_H];结果 1 成功,0 失败。
0x6A5ASSI RGB 灯控外部发送给板卡byte0:0=关、1=黄常亮、2=黄闪、3=蓝闪、4=蓝常亮。
0x6A615 路状态板卡发送,上电或状态变化状态 uint16、变化掩码 uint16、时间戳 uint32 ms。

DAC 设置示例

电压 V 到 CAN 数据的换算:mV = round(V × 1000),随后拆为低字节和高字节。

DAC1 输出 3.000 V:ID = 0x6A3,DLC = 3,DATA = 01 B8 0B
DAC2 输出 1.140 V:ID = 0x6A3,DLC = 3,DATA = 02 74 04

应答示例(DAC1 成功设为 3.000 V):ID = 0x6A4,DATA = 01 01 B8 0B
DAC 输出范围为 0–5000 mV。软件中 DAC1、DAC2 到板级 MC_L、MC_R 的实际对应关系应以实物测量为准。

4. ADC 电压说明

ADC 输出为分压前输入电压,换算使用 100 kΩ / 30 kΩ 分压参数,并采用实测标定系数 12300 / 11656。单次报告包含 16 次 ADC 平均,随后对最近 4 次报告做移动平均;输出刷新周期为 500 ms,滤波时间约 2 秒。

串口示例:ADC=12300mV PWM=10,0,0,0Hz

5. 串口使用

串口参数:115200、8 数据位、1 停止位、无校验、无流控。USB-TTL 应交叉连接:PA9/TX → 转换器 RX,PA10/RX → 转换器 TX,并连接公共地。

DAC1 1.234
DAC2 2500
D1 2.5V

命令不区分大小写,支持伏特小数或毫伏整数。设置完成后串口会回显结果,CAN1/CAN2 同时发送 0x6A4 应答。

6. 频率输入说明

频率使用相邻上升沿时间差计算;连续 1 秒没有新边沿时,该通道输出 0 Hz。当前版本只测频率,不输出占空比。

测频限制:当前实现为主循环轮询捕获标志,不是捕获中断或 DMA。定时器计数时钟理论上为 TIM5 16 MHz、其余三路 100 kHz,但这不是可靠测量上限。高于数百 Hz 的连续信号可能因串口输出等主循环阻塞而丢失边沿;如需可靠的 kHz 级测量,应改为输入捕获中断或 DMA。

7. 编译、CubeMX 与下载

cd A11_F407_SDC_ACQ_DAC_CubeMX
cmake --preset Release
cmake --build --preset Release

# 修改 .ioc 后重新生成(保留 USER CODE 区)
./tools/cubemx_generate.sh

生成文件:build/Release/A11_F407_SDC_ACQ_DAC.bin。

/opt/st/stm32cubeclt_1.21.0/STM32CubeProgrammer/bin/STM32_Programmer_CLI \
  -c port=SWD mode=UR reset=HWrst \
  -w build/Release/A11_F407_SDC_ACQ_DAC.bin 0x08000000 -v -rst

8. 现场检查要点