第2章 硬件平台选型:主流BLE SoC对比与选型策略
做蓝牙低功耗开发,第一步不是写代码,而是选芯片。
我记得刚入行那会儿,领导扔给我一个项目,说「做个蓝牙手环,芯片你定」。我当时对着Nordic、TI、Dialog三家的数据手册看了整整一周,越看越懵——参数都挺漂亮,到底选哪个?
后来踩了不少坑,才慢慢摸清楚门道。今天我就把这几家主流BLE SoC的底细,跟你掰扯清楚。
2.1 三巨头的基本盘
目前BLE SoC市场,Nordic、TI、Dialog三家占了绝大部分份额。它们各有各的脾气,也各有各的绝活。
| 特性 | Nordic nRF52/53系列 | TI CC26xx系列 | Dialog DA145xx系列 |
|---|---|---|---|
| 内核 | ARM Cortex-M4F / M33 | ARM Cortex-M3 / M4 | ARM Cortex-M0+ |
| 主频 | 64MHz / 128MHz | 48MHz | 16MHz |
| Flash | 512KB ~ 1MB | 128KB ~ 352KB | 32KB ~ 128KB |
| RAM | 64KB ~ 256KB | 20KB ~ 80KB | 16KB ~ 64KB |
| 接收电流 | ~5.4mA | ~5.9mA | ~3.8mA |
| 发射电流(0dBm) | ~4.6mA | ~6.1mA | ~3.5mA |
| 深度睡眠 | ~1.5μA | ~1.0μA | ~0.6μA |
| 最大发射功率 | +8dBm (nRF53可达+10dBm) | +5dBm | +2.5dBm |
| 协议栈 | SoftDevice / nRF Connect SDK | TI BLE-Stack / SimpleLink SDK | Dialog SDK (Keil/IAR) |
光看表格你可能觉得差不多,但实际用起来,差别大了去了。
2.2 Nordic:生态之王,但别被「丰富」迷了眼
Nordic的nRF系列,尤其是nRF52832和nRF52840,几乎是国内开发者最熟悉的BLE芯片。为什么?因为它的生态做得太好了。
我个人习惯用nRF Connect SDK,它基于Zephyr RTOS,集成了BLE、Thread、Zigbee甚至Wi-Fi(通过nRF7002)。你想想看,一个SDK搞定所有无线协议,开发效率确实高。
但这里有个坑——学习曲线陡。Zephyr本身是个通用RTOS,概念多,配置复杂。我刚开始用的时候,光Kconfig和设备树就折腾了两天。如果你只是做个简单的蓝牙透传,用nRF5 SDK反而更直接。
适用场景:
- 需要多协议支持(BLE + Thread + Zigbee)
- 产品需要OTA升级,Nordic的DFU方案最成熟
- 团队有RTOS开发经验
- 对功耗要求不是极致(相比Dialog略高)
我的经验:如果你选nRF52840做产品,记得把DCDC使能打开。默认是LDO模式,电流能差30%以上。我曾经有个项目,功耗死活降不下来,查了两天才发现是寄存器没配对。
2.3 TI:稳如老狗,但文档能让你看到怀疑人生
TI的CC26xx系列,比如CC2640R2F和CC2652R7,特点是稳定。射频性能扎实,协议栈经过大量验证,工业级产品里用得很多。
TI的BLE-Stack是闭源的,但API设计得很规范。你只要按流程走,基本不会出幺蛾子。我有个做医疗设备的客户,产品必须过FDA认证,他们二话不说选了TI——因为Nordic的SoftDevice虽然好用,但TI的协议栈有更完整的认证文档。
不过TI有个毛病:文档太多太杂。一个芯片可能有十几份应用笔记、用户指南、勘误表,而且版本号经常对不上。我见过新手对着CC2640R2F的文档配了三天,结果发现看的还是旧版。
适用场景:
- 工业、医疗等对稳定性要求极高的场景
- 产品生命周期长,需要长期供货保证
- 团队有TI MCU开发经验
- 需要丰富的模拟外设(如ADC、比较器)
避坑指南:TI的CC26xx系列,内部LDO输出电容必须严格按照数据手册选。我曾经因为用了容值偏大的电容,导致芯片上电后射频校准失败,查了半个月才发现是BOM问题。
2.4 Dialog:功耗之王,但资源抠得让人心疼
Dialog的DA145xx系列,比如DA14531和DA14585,最大的卖点是功耗。接收电流3.8mA,深度睡眠0.6μA,这在三家里是最低的。做纽扣电池供电的产品,Dialog几乎是首选。
但代价是什么?资源少得可怜。DA14531只有32KB Flash和16KB RAM,连个完整的BLE协议栈都塞得满满当当。你想加个OTA?对不起,Flash不够。你想跑个RTOS?别想了,裸奔吧。
我做过一个智能标签项目,用DA14531,代码优化到极致,最后Flash还剩不到2KB。每次加功能都得精打细算,跟当年写51单片机似的。
适用场景:
- 纽扣电池供电,对功耗有极致要求
- 功能简单,如Beacon、传感器数据上报
- 产品体积小,需要极小封装
- 成本敏感,Dialog价格通常比Nordic低20%~30%
我的建议:如果你用Dialog,一定要先规划好Flash和RAM的分配。我习惯先画一张内存地图,把协议栈、应用代码、数据缓冲区的位置定死,再开始写代码。否则写到一半发现放不下,那才叫欲哭无泪。
2.5 选型策略:别只看参数,要看场景
说了这么多,到底怎么选?我总结了一个简单的决策树:
- 先看功耗要求:如果必须用纽扣电池撑一年以上,Dialog优先。否则看下一步。
- 再看功能复杂度:如果只是透传或Beacon,三家里随便选,哪个便宜用哪个。如果需要OTA、多连接、Mesh,Nordic最合适。
- 然后看开发周期:项目急,团队没经验,选Nordic(生态好,社区活跃)。项目周期长,要求高可靠性,选TI。
- 最后看成本:Dialog最便宜,TI次之,Nordic最贵。但别忘了算上开发成本——用Nordic可能省两个月开发时间,那点芯片差价早就赚回来了。
我的个人经验:如果你刚开始学BLE开发,我建议从Nordic nRF52832或nRF52840入手。原因很简单:资料多、社区活跃、开发板便宜。等你把BLE协议栈玩熟了,再去看TI和Dialog,会发现一通百通。
2.6 小结
选BLE SoC,说白了就是做取舍。要功耗,牺牲资源;要生态,多花点钱;要稳定,忍受复杂的文档。没有完美的芯片,只有最适合你项目的芯片。
嗯,下一章我们开始搭建开发环境。我会拿nRF52840 DK板做演示,手把手带你跑通第一个BLE例程。到时候你就知道,选对芯片只是第一步,把环境搭好才是真正的开始。