任务介绍
本项目基于 STM32G431RBT6 微控制器设计了一款完全兼容 Arduino Uno R3 接口规范的开发板,旨在为开发者提供高性能、低成本且生态兼容的硬件平台。该开发板保留了 Arduino Uno R3 的经典引脚定义、电压标准和通信协议,同时利用STM32的高性能内核、丰富外设和低功耗特性,扩展了传统 Arduino 的开发边界。
模块介绍
根据任务要求本次我选用的是 STM32G431RBT6 芯片设计了一款MCU核心板,此板卡主要用于示波器开发学习套件的主控,常用于实时信号采集与处理场景,完全兼容 Arduino Uno R3 接口规范的开发板,以及电源供电管脚。
性能升级
- 主控芯片:采用STM32G431RBT6(Cortex-M4F内核,最高170MHz主频),支持浮点运算单元(FPU)和DSP指令集。
- 资源扩展:内置256KB Flash、64KB RAM,支持更高复杂度的程序和数据处理。
- 外设丰富:集成12位ADC(2.4MSps)、多通道定时器、USB OTG、I²C/SPI/USART等高速通信接口。
高性价比
相比传统 Arduino(ATmega328P,16MHz),性能提升10倍以上,成本仅小幅增加。支持更复杂的实时控制、信号处理和低功耗应用。
STM32G431RBT6 芯片 DigiKey 链接:https://www.digikey.cn/zh/products/detail/st-microelectronics/STM32G431RBT6/10231565
原理图和PCB模块介绍
原理图
PCB
PCB预览图
受 Microchip Curiosity Nano 系列开发板板启发,为了方便使用者扩展,开发板上排针和排母都采用了蛇形孔。可以在不需要焊接的情况下,只需要将排针插入,就可以通过排孔对排针的压力保持较好的电气连接,当时用完扩展板或面包板,只需要将排阵拔出,就可以单独使用核心板。同时,完全兼容 Arduino Uno R3 接口规范也方便使用 Arduino 的扩展板搭配使用。支持 Arduino 开发对于我这类从 Arduino 入坑的业余电子制作爱好者来说是十分友好的了。
为了表达和 Arduino 的不同之处,这里我给这块开发板命名为 STM32Duino-G431Rx。为以后的任务打下基础,后续将围绕 STM32Duino-G431Rx 制作搭配相应功能的扩展板,以方便实现不同的功能。
硬件设计亮点
1. 电源与时钟
- 输入电压:5 ~ 12V DC(兼容Arduino Uno电源标准)。
- 稳压电路:高效LDO稳压至3.3V,为STM32及外设供电。
- 时钟源:8MHz晶振+内部PLL,支持高精度定时和通信。
2. 核心接口
- USB to UART:集成CH340C芯片,实现USB串口通信(兼容Arduino编程协议)。
- 数字I/O:14个通用GPIO(兼容Uno的5V TTL电平,支持复用功能如PWM、中断、IIC、SPI、USART等)。
- 模拟输入:6路12位ADC(兼容Uno的模拟引脚A0-A5)。
3. 增强功能
- 调试接口:ARM SWD调试接口(支持ST-Link/J-Link等调试器)。同时还将 USB 接口连接到了 Type-C 母座,也就是说 Type-C 母座支持 串口、USB 双模式。
- LED与按键:板载ON/OFF状态指示灯、复位按钮及一颗板载 5050 WS2812B 灯珠。
- 蛇形排针孔:可以在不需要焊接的情况下,只需要将排针插入,就可以通过排孔对排针的压力保持较好的电气连接。
- VIN引脚加强:原版的 Arduino Uno R3 的电源排母 VIN 是接到防反接二极管后面的,该引脚没有防反接功能。在本设计中,我将其接入到防反接二极管之前,使其具有防反接功能。
- 参考电压加强:VREF+ 增加了一个 TL431AIDBZRG4 精密可编程基准,可提供 1% 精度的模拟参考电压。
- 板载拔码开关: 方便切换烧录模式,支持串口和SWD编程接口烧录切换。
4. 尺寸与封装
- PCB尺寸:完全匹配 Arduino Uno R3(68.6mm × 53.3mm),支持现有扩展板和外壳。
5. 软件支持
开发环境
- Arduino IDE:提供STM32G431专用Arduino核心,支持直接编译和下载。
- HAL库/LL库:开放STM32标准库,支持复杂外设开发(如FreeRTOS、GUI、机器学习)。
混合开发模式
- 支持Arduino简化编程(快速原型开发)与STM32底层开发(高性能需求)的自由切换。
- 支持 STM32CubeMX 一键配置工具,简化外设初始化流程。
模块主要性能指标和管脚定义
主要性能指标
类型 | MCU核心板(兼容 Arduino Uno Rev3 接口) |
---|---|
核心芯片 | STM32G431RBT6 |
内核 | Arm Cortex-M4 |
时钟频率 | 170MHz |
SRAM | 128KB |
Flash | 128KB |
IO数量 | 22 |
板卡尺寸 | 68.6mm × 53.3mm |
供电电压 | 4.5V~5.5V |
输出信号电平 | .3V |
板型 | Arduino Uno Rev3 |
管脚定义
管脚属性 | 管脚名 | 管脚编号 | 管脚编号 | 管脚名 | 管脚属性 |
---|---|---|---|---|---|
- | - | - | 32 | SCL (I2C3_SCL) | I/O |
- | - | - | 31 | SDA (I2C3_SDA) | I/O |
- | - | - | 30 | AREF | P |
- | - | - | 29 | GND | P |
- | - | 1 | 28 | 13 (PWM/SPI2_SCK) | I/O |
P | IOREF (3.3V) | 2 | 27 | 12 (PWM/SPI2_MISO) | I/O |
I | REST | 3 | 26 | 11 (PWM/SPI2_MOSI) | I/O |
P | 3.3V | 4 | 25 | 10 (PWM/SPI2_NSS) | I/O |
P | 5V | 5 | 24 | 9 (PWM) | I/O |
P | GND | 6 | 23 | 8 | I/O |
P | GND | 7 | 22 | 7 | I/O |
P | VIN | 8 | 21 | 6 (PWM) | I/O |
I/O | A0 (ADC) | 9 | 20 | 5 (PWM) | I/O |
I/O | A1 (ADC) | 10 | 19 | 4 | I/O |
I/O | A2 (ADC) | 11 | 18 | 3 (PWM) | I/O |
I/O | A3 (ADC) | 12 | 17 | 2 | I/O |
I/O | A4 (ADC) | 13 | 16 | 1 (TX) | I/O |
I/O | A5 (ADC) | 14 | 15 | 0 (RX) | I/O |
板上设置及标识
标记 | 名称 | 默认状态 | 描述 |
---|---|---|---|
PWR | 电源指示灯 | 亮 | 指示5V电压是否工作正常 |
RX | STA | 灭 | 串口接收数据时会亮起 |
TX | STA | 灭 | 串口发送数据时会亮起 |
L13 | STA | 灭 | 通过编程可以进行状态指示 |
PC13 | STA | 灭 | 通过编程可以进行状态指示 |
LED3 | STA | 灭 | 通过编程可以进行状态指示 |
R9 | 0欧姆电阻 | 安装 | 无 |
eZ-PLM上新建物料和项目的截图
使用了 eZ-PLM 系统上传了自己的工程文件,方便保存记录各个版本,也可随时查阅,系统里查阅不到的物料也支持手动添加。
物料添加展示图
项目详情图
总结
本开发板通过保留 Arduino Uno 的易用性和发挥 STM32G431 的性能优势,为开发者提供了一个 “高性能、高兼容、高扩展性” 的硬件平台。无论是 Arduino 用户向专业领域进阶,还是嵌入式开发者快速原型验证,均可通过此板实现高效开发。