· 5 min read
STM32G031G8U6 Nano 开发板
用了一段时间的 STM32G031G8U6 这颗 MCU,回过头来完善了一下之前做的开发板,尽量做到符合推荐设计。
STM32G031C8U6 是一个成本优化的小封装的 Arm Cortex-M0+ MCU。最近我的一些业余小项目会用到它。我是用它来代替 CH32V003 的。CH32V003 的 RAM 和 Flash 太不够用了,复杂点的程序就占满了。所以我用了四倍左右的价格换更大的空间和 Rust 开发体验。
动机
第一次计划用 STM32 的 MCU,为了保险保险起见,所以先在网上找了几个项目参考了下,做了一个我认为介于核心板和简易开发板之间的 Nano 开发板。
不买现成的开发板主要还是因为我除了验证软件部分,还需要验证硬件电路部分。顺便再给自己做点偷懒的小东西。
电路设计
电源引脚使用 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,去掉勾选就行了。
由于 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 引脚的状态。
本来是做 2.54 排针的,但是后面很多项目都用 SH 1.0 接口来连接 MCU,所以开发板直接按我使用的引脚定义做成了这样,方便我直接插上用,不要再重新确认线序是否正确。
项目工程开源在立创开源硬件平台:CH32V003F4U6 Nano Board,需要自取。