2026 Make Blocks #1阶段2 - 基于STM32G474的核心板+底板
该项目使用了STM32G474,实现了核心板+底板的设计,它的主要功能为:5V输入,自带LDO、TVS。可通过底板连接屏幕和调试接口。
标签
嵌入式系统
G474
zhjlmt
更新2026-06-01
66

一、所选任务、所画模块的硬件和功能介绍

1.1 项目任务概述

本项目旨在设计一款基于 STM32G474RET6 的通用型核心板及配套功能底板,用于 [请补充具体应用场景,如:工业数据采集、电机控制、传感器节点、嵌入式教学实验等]。项目目标是实现一个可扩展、高可靠性的嵌入式开发平台,支持后续功能模块的快速接入与二次开发。

1.2 硬件模块组成

本项目硬件系统分为两个独立部分:

  • STM32G474 核心板:作为系统主控单元,集成了微控制器最小系统、电源转换、时钟电路、复位电路、调试接口及所有 IO 引脚引出
  • 功能底板:为核心板提供电源输入、外设扩展接口、用户交互元件及特定功能电路

1.3 各模块功能介绍

表格

模块名称

主要功能

STM32G474 主控单元

系统控制、数据处理、外设驱动、算法执行

核心板电源模块

将底板输入的 5V 电压转换为 3.3V,为 MCU 及核心板外设供电

时钟与复位模块

提供系统时钟源及可靠的上电复位功能

SWD 调试接口

支持程序下载、在线调试与仿真

底板电源输入模块

接收外部 DC 5V 电源输入,提供电源保护与滤波

底板外设接口

引出 UART、SPI、I2C、CAN、ADC、GPIO 等常用接口

用户交互模块

[请补充,如:LED 指示灯、按键、蜂鸣器等]

[请补充其他功能模块]

[请补充对应功能]

二、模块设计思路、选型介绍(含设计框图)

2.1 整体设计思路

本项目采用 "核心板 + 底板" 的分层设计架构,主要基于以下考虑:

  1. 可复用性:核心板可单独使用,也可适配不同功能的底板
  2. 可维护性:核心板与底板故障可独立排查与更换
  3. 开发效率:核心板先验证,再进行底板功能开发
  4. 成本控制:底板可根据不同需求定制,核心板批量生产降低成本

设计流程遵循 "需求分析→方案设计→原理图绘制→PCB 布局→打样焊接→功能调试" 的标准硬件开发流程。

2.2 核心器件选型介绍

2.2.1 主控芯片选型

选用STM32G474RET6作为主控 MCU,主要基于以下优势:

  • 高性能:Cortex-M4 内核,最高 170MHz 主频,支持 FPU 和 DSP 指令
  • 丰富外设:集成 3 个 ADC、4 个 DAC、7 个 UART、3 个 SPI、3 个 I2C、2 个 CAN-FD 等
  • 大容量存储:512KB Flash,128KB SRAM
  • 低功耗:支持多种低功耗模式,适合电池供电应用
  • 工业级温度范围:-40℃~85℃,满足工业环境要求
  • 封装:LQFP-64,便于手工焊接与维修

2.2.2 电源芯片选型

  • 核心板 3.3V 电源:选用AMS1117-3.3线性稳压器
    • 优点:电路简单、成本低、纹波小
    • 缺点:效率较低,发热较大(最大输出电流 1A)
  • 底板电源保护:选用SMBJ5.0A TVS 管进行过压保护,0437005.WR 5A 保险丝进行过流保护

2.2.3 其他关键器件选型

  • 晶振:8MHz 无源晶振(HSE)+32.768kHz 无源晶振(LSE)
  • 电容:0805 封装陶瓷电容,电源滤波采用 100μF 电解电容 + 0.1μF 陶瓷电容组合
  • 连接器:核心板与底板采用 2.54mm 间距排针排母连接
  • 调试接口:标准 2.54mm 间距 SWD 接口

2.3 系统设计框图

plaintext

┌─────────────────────────────────────────────────────────┐
外部电源输入(5V)
└───────────────────────────┬─────────────────────────────┘

┌───────────────────────────▼─────────────────────────────┐
│ 底板电源保护模块 │
(保险丝+TVS+滤波电容)
└───────────────────────────┬─────────────────────────────┘

┌───────────────────────────┼─────────────────────────────┐
│ │ │
│ ┌────────────────────────▼─────────────────────────┐ │
│ │ 底板功能电路 │ │
(用户LED、按键、外设接口、[其他功能模块]) │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────▼─────────────────────────┐ │
│ │ STM32G474核心板 │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ AMS1117-3.3V │ │ STM32G474RET6 MCU │ │ │
│ │ │ 电源转换模块 │ │ │ │ │
│ │ └─────────────────┘ └───────────┬─────────┘ │ │
│ │ │ │ │ │
│ │ ┌────────▼─────────┐ ┌─────────▼─────────┐ │ │
│ │ │ 时钟电路模块 │ │ 复位电路模块 │ │ │
│ │ └─────────────────┘ └───────────────────┘ │ │
│ │ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ SWD调试接口 │ │ IO引脚引出 │ │ │
│ │ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘

三、模块原理图、PCB 简单介绍 + 突出特色介绍

3.1 原理图设计介绍

3.1.1 核心板原理图

image.png

核心板原理图主要包含以下几个部分:

  1. MCU 最小系统电路:STM32G474RET6 及其外围电路,包括电源引脚滤波、BOOT 配置、复位电路
  2. 电源电路:AMS1117-3.3V 稳压电路,输入 5V,输出 3.3V
  3. 时钟电路:8MHz 高速外部晶振电路和 32.768kHz 低速外部晶振电路
  4. 调试接口电路:标准 SWD 接口,包含 SWDIO、SWCLK、NRST、3.3V 和 GND
  5. IO 引出电路:将 MCU 所有可用 IO 引脚通过排针引出到底板

3.1.2 底板原理图

image.png

底板原理图主要包含以下几个部分:

  1. 电源输入与保护电路:DC 电源插座、保险丝、TVS 管、电源开关、电源指示灯
  2. 核心板接口电路:与核心板对应的排母接口
  3. 用户交互电路:[请补充,如:LED 指示灯、按键、蜂鸣器等]
  4. 外设扩展接口:UART、SPI、I2C、CAN、ADC 等接口的引出
  5. [请补充其他功能电路]

3.2 PCB 设计介绍

image.png

3.2.1 核心板 PCB

  • 层数:2 层板
  • 布局特点:
    • MCU 位于板中心,便于 IO 引脚均匀引出
    • 电源电路位于板边缘,远离敏感的模拟电路
    • 晶振靠近 MCU 的 OSC 引脚,走线尽可能短
    • 所有电源引脚都就近放置 0.1μF 滤波电容
    • 采用大面积铺地,提高抗干扰能力

3.2.2 底板 PCB

image.png

  • 层数:2 层板
  • 布局特点:
    • 电源输入与保护电路位于板的一角
    • 核心板接口位于板中心
    • 外设接口沿板边缘分布,便于外部设备连接
    • 用户交互元件(LED、按键)位于便于操作的位置

3.3 设计特色

  1. 模块化设计:核心板与底板分离,便于维护和升级
  2. 全 IO 引出:核心板引出了 STM32G474 所有可用 IO 引脚,最大化扩展能力
  3. 电源保护完善:底板集成了过流保护和过压保护功能
  4. 便于调试:预留了标准 SWD 调试接口和多个测试点
  5. 成本优化:采用 2 层板设计,选用常用且价格低廉的元器件

四、调试软件介绍、关键代码片段及说明

4.1 开发与调试环境

  • 集成开发环境:STM32CubeIDE 1.15.1
  • 固件库:STM32CubeG4 v1.6.0
  • 调试工具:ST-LINK V2 仿真器
  • 辅助工具:串口调试助手、万用表、示波器

4.2 软件整体架构

本项目软件采用模块化设计,主要分为以下几层:

  • 硬件抽象层:STM32 HAL 库,提供对 MCU 外设的底层驱动
  • 驱动层:针对具体外设和传感器的驱动程序
  • 应用层:实现具体的业务逻辑功能

4.3 关键代码片段及说明

由于核心板无供电,无法进行程序下载和运行调试,以下为预先编写的基础测试代码,用于验证核心板基本功能:

4.3.1 系统初始化代码

c

运行

#include "stm32g4xx_hal.h"

void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

// 配置内部时钟源
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 1;
RCC_OscInitStruct.PLL.PLLN = 42;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}

// 配置系统时钟总线
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
}

void Error_Handler(void)
{
// 错误处理:点亮LED1并进入死循环
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
while (1)
{
}
}

代码说明:配置系统时钟为 170MHz,使用外部 8MHz 晶振作为时钟源。如果时钟配置失败,将点亮 LED1 并进入死循环。

4.3.2 LED 闪烁测试代码

c

运行

#include "stm32g4xx_hal.h"

#define LED_PIN GPIO_PIN_5
#define LED_GPIO_PORT GPIOA
#define LED_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()

void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};

LED_GPIO_CLK_ENABLE();

// 配置LED引脚为推挽输出
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);

// 初始状态为熄灭
HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_RESET);
}

int main(void)
{
HAL_Init();
SystemClock_Config();
LED_Init();

while (1)
{
// LED闪烁,周期1秒
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
HAL_Delay(500);
}
}

代码说明:初始化 PA5 引脚为输出模式,在主循环中每隔 500ms 翻转一次引脚电平,实现 LED 闪烁功能。这是最基础的硬件测试代码,用于验证 MCU 是否正常工作。

五、模块调通的功能展示图

20260531_213758.jpg20260531_213759.jpg

由于核心板无供电,所有功能均未调通。以下为调试过程中使用的硬件和工具介绍:

5.1 调试使用的硬件和工具

  1. ST-LINK V2 仿真器:用于程序下载和在线调试
  2. 数字万用表:用于测量电压、电阻,排查电路故障
  3. DC 5V/2A 电源适配器:为底板提供电源输入
  4. 杜邦线:用于连接调试接口和外设
  5. 示波器:[如有使用请补充]

5.2 已验证的功能

  • 底板电源输入功能:使用万用表测量底板电源输入端口,电压为 5.02V,正常
  • 底板电源指示灯:底板上的 5V 电源指示灯正常点亮
  • 底板到核心板的 5V 供电:使用万用表测量核心板电源输入引脚(5V 和 GND 之间),电压为 5.01V,正常
  • 核心板 3.3V 输出:使用万用表测量核心板 3.3V 输出引脚,电压为 0V,异常

六、心得体会(包括意见或建议)

6.1 问题分析与定位

本次调试失败的直接原因是底板有电但核心板无 3.3V 输出。经过初步排查,可能的原因有:

  1. AMS1117-3.3 芯片损坏:可能是焊接过程中静电损坏,或者芯片本身质量问题
  2. 电源电路焊接问题:AMS1117 引脚虚焊、短路,或者周边电容电阻焊接错误
  3. 核心板电源输入回路断开:PCB 走线断裂,或者排针排母接触不良
  4. 核心板存在短路:3.3V 与 GND 之间短路,导致 AMS1117 进入保护状态

6.2 调试过程中的收获

  1. 电源是硬件调试的第一步:在进行任何功能调试之前,必须先确保电源系统正常工作。本次调试一开始就发现了核心板无供电的问题,避免了后续更复杂的排查。
  2. 模块化设计的优势:核心板与底板分离的设计使得故障定位更加容易,可以快速判断是核心板问题还是底板问题。
  3. 焊接质量的重要性:手工焊接容易出现虚焊、短路等问题,特别是对于贴片元件,需要更加仔细。
  4. 测试点的重要性:在 PCB 设计时预留足够的测试点,可以大大提高调试效率。

6.3 改进建议

  1. 电源电路改进
    • 在 AMS1117 的输入和输出端增加 LED 指示灯,便于直观判断电源是否正常
    • 考虑使用效率更高的 DC-DC 转换器代替 AMS1117,降低发热
    • 增加电源反接保护电路
  2. PCB 设计改进
    • 加宽电源走线,降低压降
    • 在核心板上增加更多的测试点,特别是电源和关键信号
    • 优化晶振布局,提高时钟稳定性
  3. 调试流程改进
    • 在焊接完成后,先进行通断测试和短路测试,再上电
    • 准备备用的核心板和电源芯片,便于快速替换排查故障

6.4 下一步计划

  1. 进一步排查核心板无供电的具体原因
  2. 修复或重新制作核心板
  3. 完成核心板基本功能测试(LED 闪烁、串口通信等)
  4. 逐步调试底板上的各个功能模块
  5. 进行系统联调,完成整体功能验证
附件下载
ProPrj_PP_05_STM32G4_2026-04-26.epro
团队介绍
独立完成
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号