外观
Loading search…
外观
Loading search…
MCU: STM32F407VET6(LQFP100)
配置来源: DlaBoard_A.ioc(STM32CubeMX 6.15.0 / FW_F4 V1.28.3)+ Core/Src 应用层 USER 区覆盖
核对日期: 以当前工程源码为准;Cube 重新生成后请对照本文 §8 维护项复查。
| 项目 | 配置 |
|---|---|
| HSE | 8 MHz(HSE_VALUE=8000000) |
| PLL | M=8, N=336, P=2, Q=4,源 = HSE |
| SYSCLK | 168 MHz |
| HCLK | 168 MHz(AHB ÷1) |
| APB1 | 42 MHz(÷4);定时器时钟 ×2 → 84 MHz |
| APB2 | 84 MHz(÷2);定时器时钟 ×2 → 168 MHz |
| 实现 | SystemClock_Config() — Core/Src/main.c |
说明:
DlaCart 应用是否使用该引脚/外设。0)理解。board_inputs.h 注释要求上拉,请与原理图一致(外置上拉或后续在 MX_GPIO_Init 中改为 GPIO_PULLUP)。| 引脚 | 复用 / 模式 | 外设 | 固件用途 | 驱动模块 / 备注 |
|---|---|---|---|---|
| PA8 | TIM1_CH1 AF | TIM1 | 电机 PWM CH1 | motor_control.c → htim1 |
| PE11 | TIM1_CH2 AF | TIM1 | 电机 PWM CH2 | 同上;运行时 PSC=167, ARR=999 → 1 kHz PWM |
| PA2 | TIM2_CH3 AF | TIM2 | 轮速 FG(右轮,CN20) | wheel_speed.c CH3;上升沿;ICFilter=8 |
| PA3 | TIM2_CH4 AF | TIM2 | 轮速 FG(左轮,CN19) | wheel_speed.c CH4 |
| PC6 | TIM3_CH1 AF | TIM3 | 遥控转向 PWM 输入 | rc_input.c CH1;1 MHz 捕获 |
| PC7 | TIM3_CH2 AF | TIM3 | 遥控油门 PWM 输入 | rc_input.c CH2 |
| PB8 | CAN1_RX AF | CAN1 | 转向伺服 CAN RX | servo_can.c → hcan1 |
| PB9 | CAN1_TX AF | CAN1 | 转向伺服 CAN TX | 波特率 1 Mbit/s |
| PA9 | USART1_TX AF | USART1 | Jetson / 主机 TX | train_uart.c |
| PA10 | USART1_RX AF | USART1 | Jetson / 主机 RX | 115200 8N1;RX 内部上拉(MSP USER) |
| PD5 | USART2_TX AF | USART2 | VGUS 屏 TX | screen.c |
| PD6 | USART2_RX AF | USART2 | VGUS 屏 RX | 9600 8N1 |
| PB0 | ADC1_IN8 模拟 | ADC1 | CN30 加速踏板 | 连续转换默认通道;MX_ADC1_Init USER |
| PC1 | ADC1_IN11 模拟 | ADC1 | 电池电压分压 | board_battery.c 单次采样后恢复 IN9 |
| PD0 | GPIO 输入 | — | 档位 P | board_inputs.h GEAR_P_Pin,低有效 |
| PD1 | GPIO 输入 | — | 档位 R | GEAR_R_Pin |
| PD3 | GPIO 输入 | — | 档位 N | GEAR_N_Pin |
| PD4 | GPIO 输入 | — | 档位 D | GEAR_D_Pin |
| PE2 | GPIO 输入上拉 | — | 刹车开关 1 | MX_GPIO_Init USER 覆盖;训练帧 brake |
| PE3 | GPIO 输入上拉 | — | 刹车开关 2 | 同上;任一为低则视为刹车按下 |
| 引脚 | 复用 / 模式 | 外设 | Cube / 硬件说明 | 固件状态 |
|---|---|---|---|---|
| PA0 | TIM2_CH1 | TIM2 | 未走线 | 未启 IC 中断 |
| PA1 | TIM2_CH2 | TIM2 | 未走线 | 未启 IC 中断 |
| PA4 | GPIO 推挽输出 | — | 注释:IMU CS,空闲高 | MX_GPIO_Init USER 拉高;无 SPI 业务 |
| PA5–PA7 | SPI1 SCK/MISO/MOSI | SPI1 | 预留给 IMU 等 | MX_SPI1_Init 存在,主循环未调用 |
| PA11–PA12 | USB_OTG_FS | USB | — | 未初始化 USB 栈 |
| PA13–PA14 | SWD | — | 调试 | — |
| PE13–PE14 | TIM1_CH3/CH4 AF | TIM1 | — | MSP 已映射,应用未用 PWM |
| PE5–PE6 | EXTI 上升沿 | — | — | 无 EXTI 中断服务函数 |
| PC8–PC9 | TIM3_CH3/CH4 | TIM3 | — | 未用 |
| PD14–PD15 | TIM4_CH3/CH4 AF | TIM4 | GPIO 仅 AF 配置 | 无 MX_TIM4_Init |
| PC10–PC11 | USART3 TX/RX | USART3 | — | 未初始化 USART3 |
| PB6–PB7 | I2C1 | I2C1 | — | 仅 GPIO AF |
| PB10–PB11 | I2C2 | I2C2 | — | 仅 GPIO AF |
| PB12–PB15 | SPI2 | SPI2 | — | 仅 GPIO AF |
| PC0, PC2–PC5 | ADC1_IN10/12–15 | ADC1 | 模拟输入已使能 | 应用未采样 |
| PB1 | ADC1_IN9 | ADC1 | 模拟输入已使能 | 应用未采样 |
| PE0–PE1, PE4, PE7–PE10, PE12, PE15 | GPIO 输出 | — | Cube 默认推挽;PE0/1 初值 SET | 应用未驱动 |
| PD7–PD13 | GPIO 输入 | — | 无上下拉 | 应用未读 |
| PH0–PH1 | HSE | RCC | 8 MHz 晶振 | — |
| PC14–PC15 | LSE | RCC | 32.768 kHz | — |
| 项目 | 状态 |
|---|---|
| 停转 / 倒车 / 刹车缸等 | board_relays.c 占位,未绑定具体 GPIO;Board_Relay_BrakeCylinder() 当前为空实现 |
| 参数 | 值 |
|---|---|
| 引脚 | PA9 TX, PA10 RX |
| 波特率 | 115200 |
| 格式 | 8N1,无流控 |
| 句柄 | huart1 |
| 初始化 | MX_USART1_UART_Init() |
| RX | USART1_IRQHandler → 仅 TrainUART_ReceiveISR()(不走 HAL_UART_IRQHandler 收字节) |
| NVIC | 优先级 5,train_uart.c |
| 参数 | 值 |
|---|---|
| 引脚 | PD5 TX, PD6 RX |
| 波特率 | 9600(.ioc 固化,与屏出厂一致) |
| 格式 | 8N1 |
| 句柄 | huart2 |
| RX | USART2_IRQHandler → Screen_ReceiveISR() + HAL_UART_IRQHandler(&huart2) |
| NVIC | 优先级 6,screen.c |
| 参数 | 值 |
|---|---|
| 引脚 | PB8 RX, PB9 TX |
| 波特率 | 1 Mbit/s(Prescaler=3, BS1=11TQ, BS2=2TQ, SJW=1,APB1 42 MHz 时) |
| 模式 | Normal;AutoBusOff=Enable;AutoRetransmission=Enable |
| 滤波器 | Bank0,32bit 掩码全 0,FIFO0(MX_CAN1_Init USER) |
| 启动 | HAL_CAN_Start() 在 USER 区 |
| 协议 | servo_can.c,节点 ID=0 → 标准 ID 0x64 |
| 句柄 | hcan1 |
| 参数 | 值 |
|---|---|
| 引脚 | PB0 IN8, PB1 IN9, PC0–PC5 IN10–IN15 |
| 分辨率 | 12 bit,右对齐 |
| 时钟 | PCLK/4 |
| 默认运行 | 连续转换,通道 ADC_CHANNEL_8(CN30 踏板),采样 56 cycles |
| Cube 初值 | IN10,3 cycles(USER 区覆盖为 IN8 连续模式) |
| 电池采样 | Battery_GetLevel() 临时切 IN11(PC1),144 cycles,单次转换后恢复 IN8 |
| 阶段 | Prescaler | ARR | 频率 / 说明 |
|---|---|---|---|
| Cube 初值 | 0 | 65535 | 占位 |
Board_TuneTimersForCart() | 167 | 999 | 1 kHz(168 MHz 定时器时钟) |
| 使用通道 | CH1 (PA8), CH2 (PE11) | PWM1,高有效 | |
| 占空比 | 0–1000 | MOTOR_PWM_MAX_DUTY;逻辑占空再 × MOTOR_SPEED_SCALE(120%) / 100 | |
| 模块 | motor_control.c |
| 参数 | 值 |
|---|---|
| 使用通道 | CH3 (PA2),CH4 (PA3) |
| 运行时 PSC | 83 → 计数 1 µs(84 MHz 定时器时钟) |
| ARR | 0xFFFFFFFF |
| 捕获 | 上升沿,ICFilter=8(Board_TuneTimersForCart) |
| 速度换算 | 500 ms 窗口;WHEEL_DIAMETER_MM=260,15 脉冲/圈 |
| 中断 | TIM2_IRQHandler → HAL_TIM_IRQHandler(&htim2);NVIC 优先级 2 |
| 参数 | 值 |
|---|---|
| 使用通道 | CH1 (PC6) 转向,CH2 (PC7) 油门 |
| 运行时 PSC | 83 → 1 µs |
| ARR | 65535 |
| 捕获 | 上升/下降沿测脉宽;ICFilter=0 |
| 脉宽范围 | 1000–2000 µs(rc_input.h) |
| 中断 | TIM3_IRQHandler;NVIC 优先级 3 |
| 参数 | 值 |
|---|---|
| 引脚 | PA5 SCK, PA6 MISO, PA7 MOSI |
| 模式 | 主机,8 bit,Mode0,预分频 ÷2(约 42 Mbit/s) |
| NSS | 软件;片选意图 PA4 |
| 状态 | 已 MX_SPI1_Init,主循环 未使用 |
| IRQn | 优先级 | 使能位置 | 服务函数 / 行为 |
|---|---|---|---|
| TIM2_IRQn | 2 | wheel_speed.c | TIM2_IRQHandler → HAL TIM2 |
| TIM3_IRQn | 3 | rc_input.c | TIM3_IRQHandler → HAL TIM3 |
| USART1_IRQn | 5 | train_uart.c | TrainUART_ReceiveISR() |
| USART2_IRQn | 6 | screen.c | Screen_ReceiveISR() + HAL UART2 |
| SysTick | 15 | 内核 | HAL_IncTick() |
未使能: CAN RX 中断(轮询 HAL_CAN_GetRxMessage)、ADC DMA、EXTI5/6。
| 逻辑 | IO / 外设 |
|---|---|
| 工作模式(手动/遥控/训练/跟随) | 仅串口屏 SCREEN_ADDR_MODE(0x05A1),无专用模式 GPIO |
| 档位 PRND | PD0/1/3/4 + 屏 0x05E1;50 ms 消抖 |
| 刹车(训练上报) | PE2、PE3 或 P 档 |
| 刹车缸继电器 | 占位,未接脚 |
| 电机允许 | D/R 档或跟随 brake==0 |
| 踏板 | CN30 ADC IN8;D/R 档映射为 CAN 油门请求 |
| 转向伺服定位速度 | CAN 0x23,AUTO_ROTATION_SPEED=650 |
| 轮速显示 | TIM2 → WheelSpeed_GetSpeed_01kmh() → 屏 SCREEN_ADDR_SPEED_DISPLAY |
main() 中 Cube 初始化顺序(main.c):
HAL_Init → SystemClock_ConfigMX_GPIO_Init → MX_ADC1_Init → MX_CAN1_Init → MX_TIM1_Init → MX_SPI1_InitMX_USART1_Init → MX_USART2_Init → MX_TIM3_Init → MX_TIM2_InitDlaCart_AppInit() — 内含 Board_TuneTimersForCart()、各模块 *_Init()、ADC Start| 内容 | 文件 |
|---|---|
| Cube 引脚 / 时钟 | DlaBoard_A.ioc |
| 外设 Init | Core/Src/main.c |
| 引脚 MSP | Core/Src/stm32f4xx_hal_msp.c |
| 定时器运行时参数 | Core/Src/dla_cart_app.c → Board_TuneTimersForCart() |
| PRND 宏 | Core/Inc/board_inputs.h |
| 中断 | Core/Src/stm32f4xx_it.c |
| 捕获分发 | Core/Src/tim_capture.c |
MX_CAN1_Init USER:HAL_CAN_ConfigFilter + HAL_CAN_StartMX_ADC1_Init USER:连续模式 + ADC_CHANNEL_8 CN30 踏板MX_GPIO_Init USER:PE2/PE3 上拉输入;PA4 空闲高stm32f4xx_hal_msp.c USER:USART1 RX 上拉(若被覆盖)DlaCart_AppInit() / Board_TuneTimersForCart() 仍被 main 调用dla_cart_app.c、train_uart.c、wheel_speed.c 等应用源文件DlaBoard_A_Documentation_CN.mdDlaBoard_A_Documentation.md