第2章:主控芯片选型:STM32 vs 国产MCU(如GD32、AT32)

做充电宝租借柜机,主控芯片怎么选?

这个问题,我几乎每次开新项目都会被问到。说实话,没有标准答案。但选错了,后面改起来是真的头疼。我见过不少团队,前期图便宜选了某款国产MCU,结果开发到一半发现外设驱动不全,又硬着头皮换回STM32,板子重画、代码重写,那叫一个酸爽。

2.1 先聊聊STM32

STM32在嵌入式圈子里,基本就是「默认选项」。我最早做柜机项目时,用的就是STM32F103系列。为什么?因为生态太成熟了。

  • 资料多:从数据手册到参考手册,从HAL库到LL库,从官方例程到社区帖子,你要啥有啥。
  • 工具链完善:Keil、IAR、STM32CubeIDE,随便选。调试器用ST-Link,便宜又好用。
  • 稳定性经过验证:工业级温度范围、长期供货保证,这些在柜机这种需要7x24小时运行的设备里,很重要。

但STM32也有短板。最明显的就是——贵。尤其是这两年,ST的芯片价格一路涨。我记得去年有个项目,BOM里MCU一项就占了将近15%的成本。老板看了直摇头。

我的建议:如果你的产品量不大(年出货几千台),或者对开发周期要求很紧,直接选STM32。别折腾。省下的开发时间,比省下的那几块钱芯片成本值钱多了。

2.2 国产MCU:GD32和AT32

国产MCU这几年进步确实快。GD32和AT32是两家比较有代表性的。

GD32

GD32是兆易创新的产品。它最大的特点是——引脚兼容STM32。说白了,你把STM32F103的芯片拆下来,焊上一颗GD32F103,板子不用改,代码稍微调一下就能跑。我有个朋友就是这么干的,老板让他降成本,他直接换了GD32,省了30%的芯片成本。

但要注意,GD32的ADC精度和STM32比,还是有点差距。我在做电池电压检测时遇到过这个问题——GD32的ADC读数跳得厉害,后来加了硬件滤波才搞定。

AT32

AT32是雅特力的产品。它的特点是主频高、性能强。AT32F403系列能跑到240MHz,而STM32F4系列一般也就168MHz。如果你需要做复杂的算法(比如电池电量计、加密通信),AT32是个不错的选择。

不过AT32的生态比GD32还要弱一些。库函数文档写得不够清楚,有些外设的配置方式跟STM32差别挺大。我刚开始用AT32时,光一个定时器配置就折腾了两天。

一个小技巧:如果你打算用国产MCU,建议先买几块开发板,把关键外设(ADC、I2C、SPI、UART)都跑一遍。别等到画完板子才发现某个外设不好用,那就晚了。

2.3 选型考量因素

选主控芯片,我一般看四个维度:成本、性能、生态、供货

维度 STM32 GD32 AT32
成本 较高 中等(约STM32的70%) 中等(约STM32的60%)
性能 稳定可靠 主流水平,ADC略弱 主频高,性能强
生态 非常成熟 较成熟,兼容STM32 一般,文档需完善
供货 周期长,价格波动大 相对稳定 相对稳定

具体到充电宝租借柜机,我个人的选型思路是这样的:

  1. 主控需要做什么? 柜机的主控主要负责:读取充电宝状态(通过I2C或UART)、控制电磁锁(GPIO)、与后台通信(4G模块或Wi-Fi)、管理屏幕显示(SPI或RGB接口)。这些任务对MCU的性能要求其实不高。一个100MHz左右的Cortex-M3/M4完全够用。
  2. 量有多大? 如果年出货量在1万台以下,我建议用STM32。省心。如果超过5万台,可以考虑国产MCU,成本优势就体现出来了。
  3. 开发团队熟悉什么? 如果团队之前一直用STM32,突然换GD32或AT32,会有学习成本。这个成本也要算进去。

避坑指南:我曾经在一个项目里,因为供货问题被迫从STM32换到GD32。结果发现GD32的USART在高速模式下有丢数据的问题。后来查了勘误手册才知道,GD32的USART FIFO深度和STM32不一样。所以,换芯片之前,一定要仔细看勘误手册!

2.4 我的最终建议

如果你现在问我,充电宝租借柜机的主控芯片选什么?

我会说:先选STM32F103或STM32F4系列做原型开发。等产品定型、量上来了,再评估是否切换到GD32或AT32。

这样做的好处是:前期开发快、风险低。后期切换时,因为硬件设计已经留好了兼容性(比如引脚兼容的国产MCU),切换成本也不高。

嗯,说白了就是「先求稳,再求省」。这个思路,在我做过的十几个项目里,基本没出过问题。

一句话总结:选主控芯片,别只看价格。把开发成本、维护成本、供货风险都算进去,才是真正的「性价比」。