# SDC-ACQ&DAC 板卡工程设计思路 > 说明:本文整理的是可交付、可复核的工程设计思路和关键取舍,不记录逐步的内部思维链。依据当前目录中的网表、STM32F407VET6 引脚资料、引脚规划文档和 Altium 工程包整理。 ## 1. 设计目标 这块板子的目标是围绕 STM32F407VET6 做一块集成采集、通信和 DAC 输出的控制板。核心需求可以归纳为: - 使用 STM32F407VET6 作为主控,封装为 LQFP100。 - 提供 15 路 SDC 电平输入采集,方便一次性读取一组外部状态信号。 - 提供 4 路转速或脉冲输入捕获,用 MCU 定时器测频、测周期或读取 PWM。 - 提供 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_IN1`~`SDC_IN15`、`SDC1`~`SDC15` | 外部输入经电阻/三极管级进入 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 布线、调试保留、外设冲突和软件读取效率: 1. 必需接口先保留:`PA13/SWDIO`、`PA14/SWCLK`、`NRST`、`BOOT0`、`PB2/BOOT1`、HSE、`VCAP_1/2`、电源和模拟电源脚不参与普通功能分配。 2. 同类信号尽量靠近:CAN1/CAN2 放在 `PB5/PB6/PB8/PB9` 附近,便于两个 CAN 收发器并排布置。 3. 大量状态输入尽量集中到同一端口:15 路 SDC 输入集中使用 `PD0`~`PD14`,软件可以直接读取 `GPIOD->IDR` 后按位解析。 4. 转速/脉冲输入优先选定时器捕获脚:`PA0/TIM5_CH1`、`PA2/TIM9_CH1`、`PA6/TIM3_CH1`、`PB14/TIM12_CH1` 分别承担 4 路输入。 5. I2C 使用相邻且 5 V 容忍的 `PB10/PB11`,便于布线并适配外部上拉和电平转换。 6. `PB0/PB1` 保留给 ADC 相关功能,其中 `PB0/ADC1_IN8` 用于 24 V 分压检测,`PB1/ADC1_IN9` 可作备用模拟量。 7. 调试 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` | | `ZH_OUT` | `TIM9_CH1` | `PA2` | | `YQ_OUT` | `TIM3_CH1` | `PA6` | | `YH_OUT` | `TIM12_CH1` | `PB14` | 这些脚都可配置为定时器输入捕获。若只测频率,可以在捕获中断或 DMA 中记录相邻边沿时间差;若要测 PWM 高低电平宽度,应结合定时器通道和输入极性配置进一步确认。 ### 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` 网络,通过分压电阻把最高 20 V 压到 MCU ADC 安全范围内。当前规划建议过 `100 k` 与 `20 k` 量级分压,并在采样点加小电容滤波。 这部分的关键不是只算分压比,还要确认: - 最高输入电压、瞬态浪涌和误接风险。 - ADC 采样时间是否能适配较高源阻抗。 - 分压电阻精度、温漂对测量误差的影响。 - 是否需要 TVS、串联电阻或钳位保护。 ### 4.7 调试与量产接口 板上保留了 SWD、串口、复位、启动配置和状态 LED: - `SWDIO`、`SWCLK`、`NRST` 用于下载和在线调试。 - `USART1_TX/RX` 可接 USB-TTL 作为日志口。 - `BOOT0` 和 `BOOT1` 必须有确定上下拉,避免随机进入系统 Bootloader。 - `STLED_1`、`STLED_2` 作为最小运行状态反馈,适合上电自检和故障定位。 ## 5. PCB 布局布线重点 1. MCU 放在板卡控制中心,SDC 输入、CAN、DAC/I2C、调试接口按功能分区引出。 2. CAN 收发器靠近外部连接器,CANH/CANL 走线短、成对、少过孔,并在接口附近布置保护器件。 3. HSE 晶振靠近 `PH0/PH1`,晶振回路短且远离高噪声开关电源和 CAN 总线。 4. MCU 每个 VDD/VDDA 就近放 100 nF 去耦,电源入口和稳压输出放足够的储能电容。 5. 模拟参考、ADC 分压和 DAC 输出尽量远离开关节点与高速边沿信号。 6. I2C 上拉、电平转换器和 DAC 尽量靠近,SCL/SDA 避免长距离并行干扰源。 7. SDC 输入通道重复结构保持一致,便于生产检查、维修和软件映射。 ## 6. 软件配置映射 | 功能 | CubeMX/固件配置 | |---|---| | SDC 输入 | `PD0`~`PD14` 配置为 GPIO 输入,按实际硬件极性设置上下拉 | | 转速 1 | `PA0` 配置为 `TIM5_CH1` 输入捕获 | | 转速 2 | `PA2` 配置为 `TIM9_CH1` 输入捕获 | | 转速 3 | `PA6` 配置为 `TIM3_CH1` 输入捕获 | | 转速 4 | `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. 原理图复核清单 - 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 输出。