任务介绍
本项目使用了KiCAD作为设计工具,实现了STM32G484CEU6MCU核心板的设计。
DigikeySTM32G484CEU6链接:STM32G484CEU6 STMicroelectronics | 集成电路(IC) | DigiKey
STM32G4系列MCU基于170 MHz的ARM Cortex-M4内核,配备了高分辨率定时器(HRTIM),以及16位高级电机控制定时器,且具备丰富的ADC、DAC、运放、比较器与等模拟外设资源,专为需要强大计算能力和丰富模拟/数字外设的工业控制、数字电源和电机驱动等应用而设计。
本项目设计的核心板供电方便,接口丰富,可方便对MCU进行软件开发,以及进行性能评估。
方案介绍
核心板将全部的GPIO引脚均进行了引出,且根据信号类型进行了分类,如SPI、I2C、USART、PWM(TIM, HRTIM),ADC,COMP比较器,以及其他GPIO等信号;
板载支持USB-TypeC接口,UART转USB芯片,CAN及Transceiver等多种通讯方式;同时Type-C接口动态切换D+/D-信号路径,实现正接使用MCU内部USB模块、反接使用CH340串口的功能。

模块介绍
根据任务1的要求,本次选用的是STM32G484CEU6作为主控芯片,并基于此设计了该MCU核心板。核心板可用于电机控制、数字电源等场景。
核心板系统资源框图如下图所示:

1. 核心微控制器 (MCU) 模块
STM32G484,负责执行用户程序、处理数据、控制所有外设。STM32G484属于高性能系列MCU,具备高主频、丰富的模拟外设(如高速ADC、DAC、运算放大器)和数字通信接口。
2. LDO模块
XC6210B332MR将外部输入电压(如USB的5V)转换为MCU及板载其他芯片所需的稳定工作电压3.3V。且放置了基于3.3V供电的LED以显示供电状态。
3. 时钟与复位模块
时钟电路:包含8MHz主晶振,以及32.768kHz的RTC晶振,为MCU提供高精度的外部时钟源,保证系统时序准确、通信稳定。同时也可以为RTC和低功耗模式提供独立、精准的低速时钟。
Reset电路:包含复位按钮及阻容元件,提供手动复位和上电自动复位功能,使MCU能可靠地重新启动。
4. Debug模块
功能:通过SWD调试接口,连接外部ST-Link等调试器,用于下载程序到芯片、在线调试代码等。
5. 通信接口模块
USB转UART接口:通过一个USB接口芯片CH340,将MCU的UART串口信号转换为USB协议,方便与电脑进行串行通信,可以用于打印调试信息或数据传输。
CAN FD接口:提供了CAN Transceiver芯片及接口,支持高速CANFD协议,可用于连接工业控制、汽车等领域常用的CAN网络。
6. LED及按键
LED指示灯:包含2个LED,可用于输出MCU系统状态。
用户按钮:除了复位按钮,还包含2个用户可编程按钮,供用户进行输入控制。
7. 扩展与连接模块
将STM32G484的所有通用输入输出引脚、5V及3V3电源和地线引出至2个20Pin的标准排针上。后续可以将此核心板作为模块,插到底板(母板)上进行二次开发,快速构建自己的应用系统。
原理图和PCB模块介绍
本项目核心板选用的MCU型号STM32G484CEU6,封装类型为UFQFPN48,其可用的GPIO总数为42个。相比于LQFP48封装的38个可用GPIO,要多出4个GPIO。这是由于UFQFPN48的接地引脚为芯片背面的ePad,因此无需在外围引脚上留出VSS接地引脚,从而节省了引脚数目。

部分CAN、UART转USB引脚没有往排针上引出,其他全部的GPIO以及部分电源和接地引脚均放置到了2个1×20pin排针上,并按照大致的功能预设进行了引脚分组,如SPI、I2C、USART、PWM(TIM, HRTIM),ADC,COMP比较器,以及其他GPIO信号等。
详细原理图如下:

PCB图如下:

核心板参数和引脚定义
核心板主要参数
MCU | STM32G484CEU6 |
内核 | Arm Cortex-M4 @170MHz |
存储 | 128KB SRAM, 512KB Flash |
IO数量 | 42 |
板卡尺寸 | 33mm x 53mm |
供电电压 | 4.5V~5.5V |
输出信号电平 | 3.3V |
板载通讯接口 | USB Type-C, CAN, UART, SPI, I2C等 |
引脚定义
J4 | 引脚属性 | 引脚功能 | 引脚功能 | 引脚属性 | J5 |
1 | Power | 5V | 5V | Power | 1 |
2 | Power | 3.3V | 3.3V | Power | 2 |
3 | Power | 3.3V | 3.3V | Power | 3 |
4 | I/O | PB0 | PA7 / SPI1 MOSI | I/O | 4 |
5 | I/O | PB1 | PA6 / SPI1 MISO | I/O | 5 |
6 | I/O | PB2 | PA5 / SPI1 SCK | I/O | 6 |
7 | I/O | PB12 / PWM HRTIM C1 | PA4 / SPI1 NSS | I/O | 7 |
8 | I/O | PB13 / PWM HRTIM C2 | PC4 | I/O | 8 |
9 | I/O | PB14 / LED1 | PA3 / ADC1 IN4 | I/O | 9 |
10 | I/O | PB15 / LED2 | PA2 / ADC1 IN3 | I/O | 10 |
11 | I/O | PC6 | PA1 / COMP1 INP | I/O | 11 |
12 | I/O | PA9 / USART1 TX | PA0 / COMP1 INM | I/O | 12 |
13 | I/O | PA10 / USART1 RX | PA8 / TIM1 CH1 | I/O | 13 |
14 | I/O | PA15 / I2C1 SCL | PC13 / TIM1 CH1N | I/O | 14 |
15 | I/O | PA7 / I2C1 SDA | PB6 / TIM8 CH1 | I/O | 15 |
16 | I/O | PB3 / Switch 1 | PC10 / TIM8 CH1N | I/O | 16 |
17 | I/O | PB5 / Switch 2 | PB4 | I/O | 17 |
18 | I/O | PC11 | GND | I/O | 18 |
19 | Power | GND | GND | Power | 19 |
20 | Power | GND | GND | Power | 20 |
板上设置及标识
标记 | 名称 | 默认状态 | 描述 |
LED_PWR1 | LED_PWR | 亮 | 指示3.3V电压是否工作正常 |
LED1 | LED1 | 灭 | 通过配置PB14引脚输出电平以控制 |
LED2 | LED2 | 灭 | 通过配置PB15引脚输出电平以控制 |
SW1 | SWITCH1 | 高电平 | 通过配置PB3引脚的输入,以读取按键状态 |
SW2 | SWITCH2 | 高电平 | 通过配置PB5引脚的输入,以读取按键状态 |
心得体会
这是我首次使用KiCAD进行硬件设计。总体而言,与AD软件相比KiCAD更加轻量化,自带的封装库也比较全面,因此上手和使用都相对快捷。
这也是第一次设计采用UFQFPN48封装的电路,背面的ePad接地在布线中带来了一些困扰,毕竟芯片下方的空间无法自由设置过孔。但另一方面,这种封装确实额外提供了几个可用IO,因而还是值得的。
本项目另一个两点是采用利用USBType-C接口特点,设计了正反插不同功能。既可以实现串口一键下载功能,又保留了单片机USB设备功能:
- 正插 USB 转串口功能
- 反插MCU作为USB设备
不过需要注意此功能只适用于常规USB-C转USB-A延长线, 不支持用两端都是USB-C的线。