SDC-ACQ&DAC 板卡工程设计思路
说明:本文整理的是可交付、可复核的工程设计思路和关键取舍,不记录逐步的内部思维链。依据当前目录中的网表、STM32F407VET6 引脚资料、引脚规划文档和 Altium 工程包整理。
交付文件
- 固件使用说明:功能、串口/CAN 协议、编译、下载与现场排障。
- CAN 数据库(DBC):CAN1/CAN2 使用的 11 位标准帧定义。
- CAN 报文说明 PDF:可直接对外发送的 CAN 协议简表。
A11_F407_SDC_ACQ_DAC_CubeMX/:CubeMX 工程与应用源代码。
构建目录和 .bin、.elf、.hex 等编译产物不纳入版本库;请根据工程重新生成。
1. 设计目标
这块板子的目标是围绕 STM32F407VET6 做一块集成采集、通信和 DAC 输出的控制板。核心需求可以归纳为:
- 使用 STM32F407VET6 作为主控,封装为 LQFP100。
- 提供 15 路 SDC 电平输入采集,方便一次性读取一组外部状态信号。
- 当前固件提供 2 路轮速输入捕获:左前
PA0、右前PA6,直接换算为 m/s。 - 提供 2 路 CAN 通信接口,面向车载或工业现场总线。
- 提供 2 路 DAC/模拟输出,网表中为
MC_L、MC_R。 - 提供 I2C 接口,并通过电平转换兼容 3.3 V MCU 侧和 5 V 外设侧。
- 提供 12 V 输入、5 V、3.3 V、模拟参考和必要的去耦滤波。
- 保留 SWD、复位、启动配置、串口调试、状态 LED 等调试和量产必需接口。
2. 总体架构
板卡按功能分为以下模块:
| 模块 | 主要器件/网络 | 设计意图 |
|---|---|---|
| 主控 | U23 STM32F407VET6 |
统一处理 SDC 输入、转速捕获、CAN、I2C、DAC 控制和调试接口 |
| 电源 | +12V、+5V、VCC、VCCA、VREF |
由外部 12 V 进入,生成数字 5 V、MCU 3.3 V 和模拟参考 |
| SDC 输入 | SDC_IN1SDC_IN15、SDC1SDC15 |
外部输入经电阻/三极管级进入 MCU,集中到 GPIOD |
| 转速输入 | ZQ_OUT、ZH_OUT、YQ_OUT、YH_OUT |
经限流/下拉后进入 TIM 输入捕获通道 |
| CAN | CAN1_H/L、CAN2_H/L、CAN1_TX/RX、CAN2_TX/RX |
MCU 侧接 CAN 收发器,外部侧接总线并配置终端电阻 |
| DAC | DAC1、DAC2、MC_L、MC_R |
通过 I2C 控制两路 DAC 输出 |
| I2C 电平转换 | I2C_SCL_33、I2C_SDA_33、SCL_5、SDA_5、U22 |
MCU 侧 3.3 V,DAC/外设侧 5 V |
| 调试 | SWDIO、SWCLK、NRST、USART1_TX/RX、STLED_1/2 |
下载、在线调试、日志输出和运行状态显示 |
3. MCU 引脚分配原则
引脚分配优先级不是单纯按外设功能堆叠,而是同时考虑 PCB 布线、调试保留、外设冲突和软件读取效率:
- 必需接口先保留:
PA13/SWDIO、PA14/SWCLK、NRST、BOOT0、PB2/BOOT1、HSE、VCAP_1/2、电源和模拟电源脚不参与普通功能分配。 - 同类信号尽量靠近:CAN1/CAN2 放在
PB5/PB6/PB8/PB9附近,便于两个 CAN 收发器并排布置。 - 大量状态输入尽量集中到同一端口:15 路 SDC 输入集中使用
PD0~PD14,软件可以直接读取GPIOD->IDR后按位解析。 - 当前轮速固件仅启用
PA0/TIM5_CH1(左前)和PA6/TIM3_CH1(右前);原理图上的PA2/TIM9_CH1、PB14/TIM12_CH1可保留作后续扩展,但不参与当前采集和 CAN 上报。 - I2C 使用相邻且 5 V 容忍的
PB10/PB11,便于布线并适配外部上拉和电平转换。 PB0/PB1保留给 ADC 相关功能,其中PB0/ADC1_IN8用于 24 V 分压检测,PB1/ADC1_IN9可作备用模拟量。- 调试 LED 放在
PE0/PE1,释放PB0/PB1给模拟输入。
4. 关键功能设计思路
4.1 SDC 输入采集
15 路输入从连接器进入后,经过电阻网络和三极管级再接入 MCU 的 PD0~PD14。这样设计的好处是:
- 外部输入和 MCU 管脚之间有基本限流与隔离。
- 所有 SDC 信号集中在 GPIOD,软件读取简单,适合周期扫描。
PD15可作为第 16 路备用,后续扩展时不需要大改软件结构。
设计时需要特别确认外部 SDC 输入电平、有效极性、三极管反相关系以及默认上下拉状态,避免上电阶段误判。
4.2 双路轮速采集
当前固件只使用以下两路定时器输入捕获:
| 外部信号 | MCU 网络 | MCU 引脚 |
|---|---|---|
ZQ_OUT |
TIM5_CH1 |
PA0 |
YQ_OUT |
TIM3_CH1 |
PA6 |
固件由相邻上升沿的时间差得到方波频率,再按每圈 49 个方波、轮周长 1414 mm 换算:轮速(m/s) = 频率(Hz) × 1.414 / 49。超过 1 秒没有边沿时轮速归零。PA2/TIM9_CH1 和 PB14/TIM12_CH1 当前未启用。
4.3 双 CAN 接口
CAN1 使用 PB8/PB9,CAN2 使用 PB5/PB6。MCU 只连接收发器逻辑侧,外部接口为 CAN1_H/L 和 CAN2_H/L。
关键取舍:
- 选择
PB5/PB6/PB8/PB9是为了让两路 CAN 的 MCU 侧信号集中,收发器靠近 MCU 和连接器都更容易。 - 网表中
R20、R21为 120 欧终端相关器件,需要根据总线拓扑决定是否常接、跳线选择或预留不焊。 - CANH/CANL 外侧应关注 ESD、共模干扰和走线差分/等长要求。
4.4 I2C 与 DAC 输出
MCU 侧 I2C 为 PB10/PB11,网络名为 I2C_SCL_33、I2C_SDA_33;5 V 侧为 SCL_5、SDA_5,经 U22 做电平转换后连接 DAC。
这样安排的目的:
- MCU 维持 3.3 V 逻辑,避免 5 V 直接进入非预期模式下的 MCU 引脚。
- DAC 和外设侧可以使用 5 V 供电或 5 V 上拉。
- 上拉电阻分布清楚,方便按总线速度和负载电容调整。
两路 DAC 输出网络为 MC_L 和 MC_R,需要在调试时确认 DAC 地址、I2C 上拉、电源纹波和输出负载范围。
4.5 电源与模拟参考
网表显示板上存在 +12V、+5V、VCC、VCCA、VREF、AGND 和 GND 等网络。设计意图是把输入电源、数字电源和模拟参考分层处理:
+12V作为外部输入或上级电源。+5V给 CAN 收发器、DAC 或其他 5 V 侧器件供电。VCC作为 MCU 数字 3.3 V 供电。VCCA、VREF和AGND用于 ADC/DAC 相关模拟部分,需减少数字噪声耦合。VCAP_1/2必须接低 ESR 电容到地,不可悬空或作外部电源使用。
4.6 24 V 电压检测
PB0/ADC1_IN8 对应网表中的 ADC 网络,通过分压电阻把最高输入压到 MCU ADC 安全范围内。当前固件按上臂 100 kΩ、下臂 30 kΩ 换算输入电压,并在采样点加小电容滤波。实物分压电阻值仍应以原理图/BOM 和测量结果复核;若硬件不同,必须同步更新固件标定参数。
这部分的关键不是只算分压比,还要确认:
- 最高输入电压、瞬态浪涌和误接风险。
- ADC 采样时间是否能适配较高源阻抗。
- 分压电阻精度、温漂对测量误差的影响。
- 是否需要 TVS、串联电阻或钳位保护。
4.7 调试与量产接口
板上保留了 SWD、串口、复位、启动配置和状态 LED:
SWDIO、SWCLK、NRST用于下载和在线调试。USART1_TX/RX可接 USB-TTL 作为日志口。BOOT0和BOOT1必须有确定上下拉,避免随机进入系统 Bootloader。STLED_1、STLED_2作为最小运行状态反馈,适合上电自检和故障定位。
5. PCB 布局布线重点
- MCU 放在板卡控制中心,SDC 输入、CAN、DAC/I2C、调试接口按功能分区引出。
- CAN 收发器靠近外部连接器,CANH/CANL 走线短、成对、少过孔,并在接口附近布置保护器件。
- HSE 晶振靠近
PH0/PH1,晶振回路短且远离高噪声开关电源和 CAN 总线。 - MCU 每个 VDD/VDDA 就近放 100 nF 去耦,电源入口和稳压输出放足够的储能电容。
- 模拟参考、ADC 分压和 DAC 输出尽量远离开关节点与高速边沿信号。
- I2C 上拉、电平转换器和 DAC 尽量靠近,SCL/SDA 避免长距离并行干扰源。
- SDC 输入通道重复结构保持一致,便于生产检查、维修和软件映射。
6. 软件配置映射
| 功能 | CubeMX/固件配置 |
|---|---|
| SDC 输入 | PD0~PD14 配置为 GPIO 输入,按实际硬件极性设置上下拉 |
| 左前轮速 | PA0 配置为 TIM5_CH1 输入捕获 |
| 右前轮速 | PA6 配置为 TIM3_CH1 输入捕获 |
| 预留脉冲输入 | PA2/TIM9_CH1、PB14/TIM12_CH1 当前不启用 |
| CAN1 | PB8/PB9 配置为 CAN1_RX/TX |
| CAN2 | PB5/PB6 配置为 CAN2_RX/TX,固件中同时注意 CAN1 时钟依赖 |
| I2C | PB10/PB11 配置为 I2C2_SCL/SDA,开漏,外部上拉 |
| ADC | PB0 配置为 ADC1_IN8,按分压比换算真实电压 |
| 串口 | PA9/PA10 配置为 USART1_TX/RX |
| LED | PE0/PE1 配置为 GPIO 输出 |
7. 当前 CAN 上报摘要
CAN1、CAN2 都使用 500 kbit/s、11 位标准帧,并发送相同的主动上报数据。
| ID | 内容 | 周期 / 编码 |
|---|---|---|
0x6A2 |
双路轮速 | 每 20 ms;Byte0–1 左前 PA0、Byte2–3 右前 PA6;uint16 小端,原始单位 mm/s,物理量纲 0.001 m/s |
0x6A6 |
15 路状态 | 每 1 s;PD0PD14 对应 bit0uint32 ms 时间戳 |
完整帧定义以 DBC 为准。
8. 原理图复核清单
- STM32 所有
VDD/VSS/VDDA/VSSA/VREF+/VCAP是否按数据手册完整连接。 BOOT0、BOOT1、NRST是否有明确默认状态。- SWD 下载口是否包含
SWDIO、SWCLK、GND、VCC,必要时包含NRST。 - HSE 晶振负载电容和器件封装是否匹配。
- CAN 收发器供电、TX/RX 方向、终端电阻和接口定义是否正确。
- I2C 电平转换方向、上拉电阻、电源域连接是否正确。
- DAC 地址冲突、输出范围、负载能力和滤波是否满足需求。
- 24 V 分压到 ADC 的最高电压是否低于
VREF+,并留足异常保护。 - 15 路 SDC 输入的硬件反相、上下拉和软件逻辑是否一致。
- 连接器针序是否和外部线束定义一致,特别是 CAN、12 V、电源地和 DAC 输出。