
Main Control Board
baoqi-zhong/Awesome-SMT-Machine
A single head 🔥SMT Machine🔥 based on FOC stepper motors. Pure self-developed and fully open-sourced.

STM32H723VGT6 MainCtrlBoard Author: Aiyin4DaGLD · Hardware: v1.2 · Updated: 2026-08-21
MianCtrl H7 is an open-source printed circuit board by Aiyin4Da-2, from the Aiyin4Da-2/Main_Ctrl_H7 repository on GitHub, published under the MIT licence. It is a 4-layer board of 80 × 50 mm with 153 parts on 128 nets, routed with 1,635 tracks and 675 vias.
It is built around the TJA1042T/3/1J, SN75176AD and RY3408, with the RY8411, W25N01GVZEIG and RS3236-3.0YF5 among its other parts. Its parts include 55 capacitors, 35 resistors, 20 diodes, 13 ICs and 12 connectors. It belongs with the STM32 boards of this library.
Author: Aiyin4Da_GLD · Hardware: v1.2 · Updated: 2026-08-21
MainCtrl-H7 是一块基于 STM32H723VGT6 的 80 mm × 50 mm 四层主控板。板上集成 1 Gbit SPI NAND Flash、六轴 IMU、三轴磁力计、三路 CAN、两路 RS485、调试串口、WS2812、无源压电蜂鸣器和 IMU 加热控制,并通过 80-pin BTB 连接器引出大部分 MCU 信号。
本文档以 2026-08-21 的
mianCtrl_H7.kicad_sch、mianCtrl_H7.kicad_pcb、MainCtrl_H7Demo.ioc和当前固件源码为依据。目录与文件名中的mian、Borad、sortware为工程现有拼写,为避免破坏路径未作重命名。
![]() 接口侧 | ![]() 核心器件侧 |
| 项目 | 配置 |
|---|---|
| MCU | STM32H723VGT6,Cortex-M7,LQFP-100;当前固件配置 480 MHz |
| 外部时钟 | 24 MHz HSE,PH0/PH1 |
| 外部存储 | W25N01GVZEIG,1 Gbit(128 MiB)SPI NAND,OCTOSPI1 四线模式,当前配置约 60 MHz |
| 惯性传感器 | ICM-42688-P 六轴 IMU;LIS3MDLTR 三轴磁力计,共用 SPI2 |
| 有线通信 | 3 × FDCAN(TJA1042T-3),2 × RS485(SN75176AD),UART7,USART1,USART10,DBUS/UART5 |
| 人机交互 | 1 × WS2812B、1 × USER_BTN、1 × CPT-9019S-SMT 无源压电蜂鸣器 |
| 电源输入 | 24 V,经 XT30 接入 |
| 扩展连接 | J12,0.8 mm 间距 2 × 40-pin BTB |
| PCB | 约 79.996 mm × 49.994 mm,4 层,153 个封装,当前 PCB 无未布网络 |
| 设计工具 | KiCad 10.0 华秋版本 |
Main_Ctrl_H7/
├── bom/
│ └── ibom_mainCtrl.html # 交互式 BOM / 焊接辅助
├── datasheet & netlist/
│ ├── mianCtrl_H7.txt # 2026-08-01 导出的旧网表
│ └── *.pdf # 主要 IC 数据手册
├── image/
│ ├── mianCtrl_H7_Top.png
│ └── mianCtrl_H7_Bottom.png
├── mainCtrlBorad_sortware_demo/ # STM32CubeMX + CMake 硬件自测固件
│ ├── Core/Inc/ # BSP 与应用头文件
│ ├── Core/Src/ # BSP、控制台和硬件自测实现
│ ├── Hardware/ # 固件使用的网表和数据手册副本
│ ├── MainCtrl_H7Demo.ioc
│ ├── CMakeLists.txt
│ └── CMakePresets.json
├── mianCtrlBorad/
│ ├── mianCtrl_H7.kicad_sch # 当前原理图
│ ├── mianCtrl_H7.kicad_pcb # 当前 PCB
│ ├── mianCtrl_H7.kicad_pro # KiCad 工程
│ ├── bom/ibom.html # 从当前 PCB 生成的交互式 BOM
│ └── production/ # BOM、坐标、网表与旧生产压缩包
└── README.md常用入口:
24 V IN
└─ U10 RY8411 ── +5V
├─ U12 RY3408 ── +3V3_MCU ── STM32H723 / W25N01 / WS2812 / Buzzer
├─ U11 RS3236-3.0YF5 ── +3V3_IO
└─ U13 RS3236-3.0YF5 ── +3V3_IMU ── ICM-42688-P / LIS3MDL
STM32H723
├─ OCTOSPI1 ── W25N01GVZEIG
├─ SPI2 ─────── ICM-42688-P + LIS3MDL
├─ FDCAN1/2/3 ─ TJA1042T-3 × 3 ─ CAN1/2/3
├─ USART2/3 ─── SN75176AD × 2 ── RS485-1/2
├─ TIM3_CH2 ─── WS2812B
├─ TIM1_CH3N ── Q1 ── BZ1
└─ GPIO PB1 ─── Q2 ── IMU heater| 网络 | 变换级 | 主要负载 | 设计说明 | 实测 |
|---|---|---|---|---|
+24V_VIN | J1 → F1/保护级 | U10 输入 | 24 V 外部输入 | 待补录 |
+5V | U10 RY8411 | CAN/RS485 收发器、后级稳压器 | 24 V 降压至 5 V | 待补录 |
+3V3_MCU | U12 RY3408 | MCU、Flash、WS2812、蜂鸣器 | 网络名指示 3.3 V 设计域 | 待补录 |
+3V3_IO | U11 RS3236-3.0YF5 | IO 电源域 | 器件后缀为固定 3.0 V;网络名仍为 +3V3_IO | 待补录 |
+3V3_IMU | U13 RS3236-3.0YF5 | ICM-42688-P、LIS3MDL | 器件后缀为固定 3.0 V;网络名仍为 +3V3_IMU | 待补录 |
建议首次上电使用限流电源,并依次记录 J1 输入、+5V、+3V3_MCU、U11 pin 5 和 U13 pin 5 的电压及整板静态电流。当前工程中没有保存这五路电源的定量实测记录,因此表格保留为“待补录”。
| 功能 | MCU 引脚 | 当前固件配置 / 去向 |
|---|---|---|
| HSE | PH0 / PH1 | 24 MHz 晶振,系统时钟配置为 480 MHz |
| SWD | PA13 / PA14 | J3 pin 1 SWDIO、pin 2 SWCLK |
| USART1 控制台 | PA9 TX / PA10 RX | J11 pin 2 / pin 3,115200 8N1 |
| UART7 | PE8 TX / PE7 RX | J10 pin 2 / pin 3,115200 8N1 |
| USART10 | PE3 TX / PE2 RX | J9 pin 2 / pin 1,115200 8N1 |
| DBUS / UART5 | PB12 RX | J2 pin 1 经板上接口电路;当前验证固件不初始化 UART5 |
| RS485-1 / USART2 | PD5 TX / PD6 RX / PD4 DE | U5 → J4,115200 8N1 |
| RS485-2 / USART3 | PD8 TX / PD9 RX / PB14 DE | U6 → J5,115200 8N1 |
| FDCAN1 | PD1 TX / PD0 RX | U2 → J6,标称仲裁速率 1 Mbit/s |
| FDCAN2 | PB6 TX / PB5 RX | U3 → J7,标称仲裁速率 1 Mbit/s |
| FDCAN3 | PD13 TX / PD12 RX | U4 → J8,标称仲裁速率 1 Mbit/s |
| SPI2 SCK/MOSI/MISO | PB13 / PC1 / PC2 | ICM-42688-P 与 LIS3MDL 共用,Mode 3,当前约 0.9375 MHz |
| ICM-42688-P | PC0 CS / PE10 DRDY | WHO_AM_I 期望值 0x6A |
| LIS3MDL | PC3 CS / PE12 DRDY | WHO_AM_I 期望值 0x3D |
| OCTOSPI1 Flash | PE11 NCS、PB2 CLK、PD11 IO0、PB0 IO1、PA3 IO2、PA1 IO3 | W25N01GVZEIG,四线模式 |
| WS2812 | PA7 / TIM3_CH2 | 800 kHz 波形 |
| Buzzer | PB15 / TIM1_CH3N | 低边 MOSFET Q1 驱动;诊断频率 4 kHz |
| IMU heater | PB1 GPIO | 高电平开启,软件占空比控制 Q2 |
| USER_BTN | PA15 | 低电平按下,30 ms 消抖 |
MP 为连接器机械固定焊盘,不计入编号针脚。CAN 与 RS485 连接器的机械焊盘在当前原理图中接 GND,但外部线束仍应使用可靠的共地连接。
| 连接器 | Pin 1 | Pin 2 | Pin 3 | Pin 4 | 说明 |
|---|---|---|---|---|---|
| J1 PWR_IN | GND | VINP | — | — | XT30,24 V 输入 |
| J2 DBUS | DBUS | +5V | GND | — | 当前验证固件禁用 UART5 |
| J3 SWD | PA13/SWDIO | PA14/SWCLK | GND | +5V | 下载与调试 |
| J4 RS485-1 | A1 | B1 | — | — | 板上 R5 = 120 Ω |
| J5 RS485-2 | A2 | B2 | — | — | 板上 R10 = 120 Ω |
| J6 CAN1 | CAN1_L | CAN1_H | — | — | 板上 R1 = 120 Ω |
| J7 CAN2 | CAN2_L | CAN2_H | — | — | 板上 R2 = 120 Ω |
| J8 CAN3 | CAN3_L | CAN3_H | — | — | 板上 R3 = 120 Ω |
| J9 USART10 | RX / PE2 | TX / PE3 | GND | +5V | 115200 8N1 |
| J10 UART7 | GND | TX / PE8 | RX / PE7 | — | 115200 8N1 |
| J11 USART1 | GND | TX / PA9 | RX / PA10 | — | 控制台;原理图 Value 字段当前误写为 UART7 |
| J12 BTB | 见下表 | 2 × 40-pin 扩展连接器 |
当前 J12 的 80 个电气脚中没有
GND、+5V或 3 V 电源网络。扩展板不能只依靠 J12 获得电源和参考地;设计扩展板前必须先确认独立供电/共地方案,或修改 J12 引脚分配。
| Pin | Network | Pin | Network |
|---|---|---|---|
| 1 | PB12 | 41 | PA14 |
| 2 | IMU_SCLK | 42 | PA13 |
| 3 | USART3_TX | 43 | PA12 |
| 4 | USART3_RX | 44 | PA11 |
| 5 | USART3_DE | 45 | USART1_RX |
| 6 | BUZZER | 46 | USART1_TX |
| 7 | PD10 | 47 | PA8 |
| 8 | FLASH_IO0 | 48 | PC9 |
| 9 | CAN3_RX | 49 | PC8 |
| 10 | CAN3_TX | 50 | BTN |
| 11 | PC7 | 51 | PC10 |
| 12 | PC6 | 52 | PC11 |
| 13 | PD15 | 53 | PC12 |
| 14 | PD14 | 54 | CAN1_RX |
| 15 | PB11 | 55 | CAN1_TX |
| 16 | PB10 | 56 | PD2 |
| 17 | PE15 | 57 | PD3 |
| 18 | PE14 | 58 | USART2_DE |
| 19 | PE13 | 59 | USART2_TX |
| 20 | DRDY_LIS3MDLTR | 60 | USART2_RX |
| 21 | FLASH_NCS | 61 | PD7 |
| 22 | DRDY_ICM-42688 | 62 | PB3 |
| 23 | PE9 | 63 | PB4 |
| 24 | PE8 | 64 | CAN2_RX |
| 25 | UART7_RX | 65 | CAN2_TX |
| 26 | FLASH_CLK | 66 | PB7 |
| 27 | PC5 | 67 | PB8 |
| 28 | FLASH_IO1 | 68 | PB9 |
| 29 | IMU_HEATER | 69 | PE0 |
| 30 | ADC_PWR | 70 | PE1 |
| 31 | WS2812 | 71 | NC / unnamed |
| 32 | PA6 | 72 | IMU_MOSI |
| 33 | FLASH_IO3 | 73 | PC13 |
| 34 | PA5 | 74 | PC14 |
| 35 | PA4 | 75 | PC15 |
| 36 | FLASH_IO2 | 76 | PE6 |
| 37 | PA2 | 77 | PE5 |
| 38 | PA0 | 78 | PE4 |
| 39 | CS_LIS3MDLTR | 79 | USART10_TX |
| 40 | IMU_MISO | 80 | PE2 |
arm-none-eabi-gcc)cd mainCtrlBorad_sortware_demo
cmake --preset Debug
cmake --build --preset Debug若工程目录从其他磁盘复制而来,旧的 build/Debug/CMakeCache.txt 可能仍记录原路径,可使用以下命令重新生成缓存:
cmake --fresh --preset Debug
cmake --build --preset Debug2026-08-21 对当前 main 分支源码执行干净构建:构建通过;Flash 使用 84,836 B / 1 MiB(8.09%),DTCMRAM 使用 3,920 B / 128 KiB(2.99%)。该结果只证明固件可以编译链接,不代表当前修改已完成上板验证。
USART1 控制台为 115200、8-N-1。上电后等待 device started,输入 help 查看命令。
当前启动流程:
数据安全警告: 当前固件在每次启动以及执行
all、flash test时都会擦除、写入、回读并再次擦除 W25N01 的 block 1023。不要在该 block 保存需要保留的数据。
| 命令 | 作用 | 是否需要外部接线 / 风险 |
|---|---|---|
status | 查看 WS2812、heater、按键状态,并读取 LIS3MDL、ICM-42688、W25N01 ID | 无 |
all | 执行 ICM、LIS3MDL、W25N01 破坏性擦写和 heater 测试 | 会改写 Flash block 1023 |
icm test | ICM-42688 复位、寄存器回读和 16 组六轴采样 | 无 |
icm stream start | 静止校准 50 点零偏后,以约 20 Hz 输出陀螺仪和积分角度 CSV | 启动时保持板卡静止 |
icm stream stop | 停止陀螺仪数据流 | 无 |
lis3 test | LIS3MDL 数据读取与片内自检 | 无 |
flash id | 只读 JEDEC ID | 无 |
flash test | 擦写并校验 block 1023,结束后再次擦除 | 破坏性 |
flash protect | 恢复全阵列易失写保护,检查 SR1 0x7C | 无 |
heater test | PB1 100% 加热 8 秒,使用 LIS3MDL 温度通道观察趋势 | 表面可能升温 |
can internal | 三路 FDCAN 控制器内部回环 | 无,不检查外部收发器 |
can bus | 三路 CAN 共总线,轮流发送并要求另外两路接收 | 需三路共线并正确处理终端电阻 |
can 1 2 等 | 指定两路 CAN 物理双向收发测试 | 只连接指定的一对端口 |
rs485 test | 两路 RS485 双向收发 | J4/J5 A-A、B-B,并确保共地 |
uart7 test | UART7 本地回环 | 短接 J10 pin 2 与 pin 3 |
uart10 test | USART10 本地回环 | 短接 J9 pin 2 与 pin 1 |
ws next | 切换 WS2812 动画 | 人工观察颜色 |
buzzer test | 播放 1/2/4 kHz 三音 | 当前硬件存在已知驱动问题 |
buzzer diag | 输出 4 kHz / 50% 5 秒并打印 TIM1/PB15 寄存器与采样结果 | 当前硬件存在已知驱动问题 |
can bus 前应只保留总线两端终端,或先逐对执行 can 1 2、can 1 3、can 2 3。STM32Cube、CMSIS、HAL 驱动和器件数据手册保留各自的版权与许可条款,不属于本项目原创内容的统一授权范围。详见 THIRD_PARTY_NOTICES.md 以及各 Drivers 子目录中的许可证文件。
本项目原创的硬件设计、固件和文档采用 MIT License 开源。第三方代码与资料继续遵循其各自的版权和许可条款。
| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C11, C12, C13, C14, C15, C16, C17, C18, C24, C27, C30, C44, C47, C49, C52, C54 +2 |
| 13 | 100nF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C3, C4, C5, C6, C7, C8, C9, C10, C19, C20, C21, C22, C23 |
| 13 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C28, C31, C34, C35, C36, C37, C39, C40, C42, C43, C46, C48, C51 |
| 9 | 10K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R39, R40, R42, R44, R45, R47, R50, R51, R58 |
| 7 | ESD9B5.0ST5G | Diode_SMD:D_SOD-523 | D14, D15, D16, D17, D18, D19, D21 |
| 5 | 120R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R3, R5, R10 |
| 4 | 20pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C25, C26, C32, C38 |
| 4 | 4K7 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R7, R9, R11 |
| 4 | LED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D9, D10, D11, D12 |
| 4 | M3.2 | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 1K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R46, R48, R62 |
| 3 | 47uF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C29, C33, C41 |
| 3 | LOGO | LOGO | G***, G***, G*** |
| 3 | PESD1CAN | kicad_api_lib:PESD1CAN | D1, D2, D3 |
| 3 | TJA1042T-3 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2, U3, U4 |
| 2 | 10nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C45, C50 |
| 2 | 2.2uF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C1, C2 |
| 2 | 2K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R53, R54 |
| 2 | 330R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R38, R59 |
| 2 | 4.7K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R60, R61 |
| 2 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | RS-485 | Connector_JST:JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical | J4, J5 |
| 2 | RS3236 | kicad_api_lib:RS3236-3.0YF5 | U11, U13 |
| 2 | SM712 | Package_TO_SOT_SMD:SOT-23 | D4, D5 |
| 2 | SN75176AD | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U5, U6 |
| 2 | UART7 | Connector_JST:JST_GH_BM03B-GHS-TBT_1x03-1MP_P1.25mm_Vertical | J10, J11 |
| 1 | 10K | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R56 |
| 1 | 1K | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R24 |
| 1 | 22R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R49 |
| 1 | 330R | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R55 |
| 1 | 36R | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R57 |
| 1 | 47K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R43 |
| 1 | 4K9 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R52 |
| 1 | 4u7 | Inductor_SMD:L_APV_APH0630 | L2 |
| 1 | 54K6 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R41 |
| 1 | 6u8 | Inductor_SMD:L_APV_APH0630 | L1 |
| 1 | BOOT0 | Gld_Library:Button_Side | SW3 |
| 1 | BTB | Gld_Library:AEX7 OthersBTB_P0.8mm_2x40pin_F | J12 |
| 1 | BTN | Gld_Library:Button_Side | SW4 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_CUI_CPT-9019S-SMT | BZ1 |
| 1 | CAN1 | Connector_JST:JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical | J6 |
| 1 | CAN2 | Connector_JST:JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical | J7 |
| 1 | CAN3 | Connector_JST:JST_GH_BM02B-GHS-TBT_1x02-1MP_P1.25mm_Vertical | J8 |
| 1 | D-BUS | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Fuse | Fuse:Fuse_2512_6332Metric_Pad1.52x3.35mm_HandSolder | F1 |
| 1 | ICM-42688-P | kicad_api_lib:ICM-42688-P | U7 |
| 1 | K34 | kicad_api_lib:K34 | D6 |
| 1 | LIS3MDLTR | kicad_api_lib:LIS3MDLTR | U8 |
| 1 | NRST | Gld_Library:Button_Side | SW1 |
| 1 | PMBT3094A | Package_TO_SOT_SMD:SOT-23 | Q3 |
| 1 | PWR_IN | Connector_AMASS:AMASS_XT30PW-M_1x02_P2.50mm_Horizontal | J1 |
| 1 | RY3408 | kicad_api_lib:RY3408 | U12 |
| 1 | RY8411 | kicad_api_lib:RY8411 | U10 |
| 1 | SMCJ28A | kicad_api_lib:SMCJ28A | D22 |
| 1 | STM32H723VGTx | Package_QFP:LQFP-100_14x14mm_P0.5mm | U1 |
| 1 | SWD | Connector_JST:JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_Vertical | J3 |
| 1 | USART10 | Connector_JST:JST_GH_BM04B-GHS-TBT_1x04-1MP_P1.25mm_Vertical | J9 |
| 1 | W25N01GVZEIG | kicad_api_lib:W25N01GVZEIG | U9 |
| 1 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D13 |
| 1 | X32258MOB4SI 24M | kicad_api_lib:X32258MOB4SI | Y1 |
| 1 | ~ | Diode_SMD:D_SOD-523 | D20 |
It measures 80 × 50 mm and has 4 copper layers, 1.6 mm thick.
153 parts, built around the TJA1042T/3/1J, SN75176AD, RY3408 and RY8411. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Aiyin4Da-2/Main_Ctrl_H7 repository on GitHub, at the commit this page was made from: the board is mianCtrlBorad/mianCtrl_H7.kicad_pcb and its schematic mianCtrlBorad/mianCtrl_H7.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

baoqi-zhong/Awesome-SMT-Machine
A single head 🔥SMT Machine🔥 based on FOC stepper motors. Pure self-developed and fully open-sourced.


htsong-lab/hardware
Hardware engineering portfolio: FPGA high-speed board, RoboMaster power electronics and smart-car projects.




hkustenterprize/RM2025-Wireless-JLink
Wireless JLink-OB based on Allwinner V3S
