· 5 min read

STM32G031G8U6 Nano 开发板

用了一段时间的 STM32G031G8U6 这颗 MCU,回过头来完善了一下之前做的开发板,尽量做到符合推荐设计。

用了一段时间的 STM32G031G8U6 这颗 MCU,回过头来完善了一下之前做的开发板,尽量做到符合推荐设计。

STM32G031C8U6 是一个成本优化的小封装的 Arm Cortex-M0+ MCU。最近我的一些业余小项目会用到它。我是用它来代替 CH32V003 的。CH32V003 的 RAM 和 Flash 太不够用了,复杂点的程序就占满了。所以我用了四倍左右的价格换更大的空间和 Rust 开发体验。

STM32G031G8U6 Nano V2 版本成品

动机

第一次计划用 STM32 的 MCU,为了保险保险起见,所以先在网上找了几个项目参考了下,做了一个我认为介于核心板和简易开发板之间的 Nano 开发板。

不买现成的开发板主要还是因为我除了验证软件部分,还需要验证硬件电路部分。顺便再给自己做点偷懒的小东西。

电路设计

MCU 引脚引出原理图

电源引脚使用 4.7 uF 和 100 nF 的电容。

时钟原理图 外部晶振使用频率为 32.768 kHz 的两脚无源晶振,两端负载电容为 22pF。

复位和启动模式按钮原理图

复位引脚有内部上拉电阻,对于开发板来说可以不做外部上拉(R12),如果实际项目上有使用该引脚,可能需要根据 PCB 走线长度或干扰情况来增加外部上拉电阻。

C19 是一个跨接在 RESET 引脚到地的电容,主要用于引出 RESET 引脚后,避免误触发。C19 不是为按键准备的,放在这里主要是因为在这里使用到了 RESET 引脚。

BOOT0 引脚和启动模式有关。由于我使用的微动开关是单刀单掷的,所以默认对 BOOT0 进行下拉,避免按钮未按下时引脚悬空导致误触发。

默认情况下,只要 BOOT0 上拉,并且 nBOOT_SEL bit 是 0,复位上电就能进入系统存储器,此时可以通过 UART 进行烧录程序。

修改 nBOOT_SEL bit,可以在 STM32 Cube Programmer 中更改。在 STM32 Cube Programmer 通过 ST Link 连接开发板,或者可以通过 UART 连接重未烧录过的开发板。然后按下图所示位置修改 nBOOT_SEL bit,去掉勾选就行了。

通过 STM32 Cube Programmer 修改 nBOOT_SEL bit

由于 STM32G0x1 系列芯片默认对 Flash 进行空数据检查,所以未写入过程序的 MCU 默认会从系统存储器启动,这时可以通过下列的串行接口写入程序:

  • PA2/PA3、PA9/PA10(仅 STM32G071)上的 USART
  • PB6/PB7 上的 I2C
  • 仅 STM32G071xx 和 STM32G081xx 上的引脚 PA4/PA5、PA6/PA7 上的 SPI

其中,PA2/PA3 在本开发板中连接了 USB 转 UART 芯片,可以直接通过 USB 连接电脑进行通信。

另外就是 STM32G0x1 复位后,在 SYSCLK 的第四个上升沿锁存自举模式配置,所以不需要一直保持 BOOT0 引脚的状态。

SWD 接口原理图

本来是做 2.54 排针的,但是后面很多项目都用 SH 1.0 接口来连接 MCU,所以开发板直接按我使用的引脚定义做成了这样,方便我直接插上用,不要再重新确认线序是否正确。

项目工程开源在立创开源硬件平台:CH32V003F4U6 Nano Board,需要自取。

Back to Blog

相关文章

查看更多 »

电子负载开发笔记

我准备开发第一版的电子负载,并在此记录一些流水账。这个版本作为我第一次开发电子负载以及运放相关的硬件,希望能实现 CC 模式和 CV 模式,不求精度,只求大概。

在本地运行 Act Runner

这是一个快速步骤备忘录,用于快速手动在 ArchLinux 上运行 Act Runner 并连接到 Gitea 实例。