硬件选型:主控芯片、加密芯片、存储与电源方案

各位同学,咱们接着聊硬件选型。这一节可以说是整个加密狗项目的「骨架」——芯片选错了,后面软件写得再好也白搭。我这些年踩过的坑,有一半都出在选型阶段。今天我把主控、加密、存储、电源这四块掰开揉碎了讲,你跟着我的思路走一遍,基本不会跑偏。

主控芯片选型:STM32 / AT32 / 国产RISC-V

主控芯片是加密狗的大脑。选它的时候,我主要看三点:算力够不够、外设齐不齐、生态好不好。说白了,就是能不能跑得动加密算法,能不能接上加密芯片,出了问题能不能快速找到资料。

STM32:老牌王者,稳如老狗

我个人习惯,项目初期验证阶段首选STM32。为什么?因为它的HAL库和CubeMX太成熟了。你想想看,从USB设备枚举到I2C通信,网上随便一搜就是现成的代码。我最早做加密狗原型时,用的就是STM32F103C8T6,淘宝10块钱一片,开发板20块包邮。

推荐型号:STM32F103系列(入门)、STM32L4系列(低功耗)、STM32F4系列(高性能)

我踩过的坑:STM32F103的USB接口有坑——它的内部晶振精度不够,USB高速模式容易丢包。后来我加了外部晶振才解决。嗯,这里要注意,如果你要做USB全速设备,外部晶振是必须的。

AT32:国产平替,性价比之选

AT32是雅特力的产品,直接对标STM32。它的优势是主频更高、价格更低。我记得有一次项目要量产,STM32F103涨到30块一片还缺货,我果断换了AT32F403A,主频240MHz,价格才8块钱。性能上完全够用,而且引脚兼容STM32,PCB都不用改。

小技巧:AT32的库函数和STM32几乎一样,你只需要改一下启动文件和链接脚本。我一般用AT32的BSP包,配合Keil或IAR,上手很快。

国产RISC-V:未来趋势,但生态尚浅

RISC-V架构的芯片,比如沁恒的CH32V系列、博流的BL702系列,这两年很火。它们的优势是开源、授权费低、自主可控。但我建议你谨慎用于加密狗产品——为什么?因为RISC-V的IDE和调试工具链还不够完善。我曾经试过用CH32V203做加密狗,结果发现它的USB设备驱动在Linux下兼容性有问题,折腾了两周才搞定。

警告:如果项目周期紧、团队经验不足,别碰RISC-V。它更适合有Linux驱动开发经验的团队。新手还是老老实实选STM32或AT32。

加密芯片选型:ATECC608A vs SE050

加密芯片是加密狗的灵魂。主控负责跑逻辑,加密芯片负责存密钥、做签名。这两者分工明确,缺一不可。

ATECC608A:Microchip的经典款

ATECC608A是我用得最多的加密芯片。它支持ECDSA签名、SHA-256哈希、AES-128加密,内部有硬件随机数发生器。最关键的是,它有一个「安全存储区」,密钥一旦写入,任何人都读不出来——包括你自己。

我举个例子:你在工厂烧录时,把私钥写进ATECC608A,然后熔断保险丝。之后就算有人用电子显微镜扒开芯片,也拿不到密钥。这就是硬件安全的核心。

选型要点:

  • 接口:I2C,最高1MHz,接线简单
  • 功耗:待机<1μA,适合电池供电
  • 价格:批量2-3元人民币
  • 缺点:存储空间小(仅72字节),不支持RSA

SE050:NXP的高端方案

SE050是NXP的产品,对标ATECC608A但功能更强。它支持RSA、ECC、AES全系列算法,内部有Java Card虚拟机,可以运行自定义安全逻辑。说白了,ATECC608A是「固定功能」的保险箱,SE050是「可编程」的保险箱。

但我个人觉得,SE050有点「杀鸡用牛刀」了。加密狗场景下,ECDSA签名就够了,RSA很少用到。而且SE050的驱动库很大,占用主控Flash空间。我曾在STM32F103上移植SE050的驱动,结果Flash用了40KB,差点装不下。

对比项 ATECC608A SE050
算法支持 ECDSA, SHA, AES RSA, ECC, AES, 3DES
可编程性 固定功能 Java Card可编程
驱动复杂度 低(5KB代码) 高(40KB+代码)
价格 2-3元 8-15元
推荐场景 加密狗、配件认证 金融支付、高安全需求

我的建议:90%的加密狗项目用ATECC608A就够了。除非你的客户要求通过CC EAL6+认证,或者需要存储多组密钥,才考虑SE050。

存储芯片选型

加密狗需要存储固件、日志、用户数据。主控芯片内部Flash通常不够用,所以外挂一颗SPI Flash是常规操作。

SPI Flash:W25Q系列是标配

华邦的W25Q系列,比如W25Q64(8MB)、W25Q128(16MB),是我最常用的。它们支持SPI接口,读写速度快(80MHz时钟),擦写次数10万次,数据保持20年。价格也很便宜,8MB的芯片批量不到2块钱。

我记得有一次,客户要求加密狗存储10MB的日志数据。我选了W25Q128,用FATFS文件系统管理,读写都很顺畅。嗯,这里要注意:SPI Flash的擦除是按扇区(4KB)进行的,写之前必须先擦除。如果你要频繁写小数据,建议用NOR Flash或者FRAM。

EEPROM:小数据存储的备选

如果你只需要存储几KB的配置参数,比如序列号、校准值,用EEPROM更合适。AT24C系列(I2C接口)或CAT24C系列(SPI接口)都可以。EEPROM的优点是字节级读写,不需要擦除,但容量小(最大512KB),价格也贵一些。

选型总结:

  • 固件+日志:SPI Flash(W25Q64/128)
  • 配置参数:EEPROM(AT24C256)
  • 高速缓存:PSRAM(如IPS6404L,但加密狗很少用)

电源管理方案

加密狗通常通过USB供电,电压5V。但主控和加密芯片需要3.3V,所以必须做电压转换。电源管理看似简单,但做不好会导致复位、通信失败等问题。

LDO稳压:最稳妥的方案

我推荐用AMS1117-3.3,这是最经典的LDO。输入5V,输出3.3V,最大输出电流1A,纹波抑制比70dB。价格才0.3元,外围只需要两个电容。我所有的加密狗项目都用它,从来没出过问题。

注意:AMS1117的压差是1.1V,也就是说输入电压必须大于4.4V才能稳定输出3.3V。如果你的USB线太长导致电压跌落,建议换成XC6206系列(压差0.2V)。

DC-DC:高功耗场景才用

如果你的加密狗需要驱动大功率外设,比如4G模块、摄像头,才考虑DC-DC。比如MP2307(降压型),效率可达95%,但外围电路复杂(需要电感、肖特基二极管),而且纹波大,可能干扰加密芯片的I2C通信。我一般不用DC-DC做加密狗,除非客户要求电池供电。

电源监控:防止掉电写坏Flash

加密狗在写入Flash时突然断电,会导致数据损坏。解决方案是加一个电源监控芯片,比如MAX809。它会在电压低于阈值时输出复位信号,让主控停止写操作。我吃过这个亏——有一次量产时,工人热插拔USB导致10%的加密狗Flash损坏。后来加了MAX809,问题再没出现过。

我的习惯:每个加密狗项目都加电源监控,成本增加0.2元,但能省去售后维修的麻烦。你想想看,客户因为数据损坏投诉你,一次就够你受的。

总结一下选型清单

好了,我把这一节的核心内容整理成一张表,你照着买就行:

模块 推荐型号 单价(批量) 备注
主控芯片 STM32F103C8T6 / AT32F403A 8-15元 新手选STM32,老手选AT32
加密芯片 ATECC608A 2-3元 90%场景够用
存储芯片 W25Q128(SPI Flash) 1.5-2元 16MB容量
电源管理 AMS1117-3.3 + MAX809 0.5元 LDO+监控

下一节我们讲原理图设计。到时候我会把这几颗芯片怎么连在一起,画成完整的电路图。你先把选型定下来,咱们后面就好办了。