如何打造智能手表:芯片选型指南
Eric Migicovsky
如何打造智能手表:芯片选型指南
[2025-05-12] 本篇文章的完整视频已发布在我的播客 YouTube 频道! 订阅 PocketCasts, Spotify, 或 Apple Podcasts. 要点总结:
- 我们为 Core Time 2 选择了芯片 - SF32LB52J。它来自一家名为 SiFli 的公司,并提供开源 SDK。
- 我正在撰写一系列关于如何制造智能手表的文章。
- 内容涵盖如何选择芯片(今天),以及其他硬件和软件方面的内容(后续)。
- 我希望其他人可以使用 PebbleOS 构建有趣的新智能手表和其他设备!
这是关于构建智能手表所需步骤的系列文章中的第一篇。我想证明在 2025 年制造一款像样的智能手表实际上并不难! 希望我们为这些 新手表 所做的工作也能帮助其他人构建自己的智能手表。 智能手表不是也不应该是“一刀切”的设备。 我真的希望 PebbleOS 的开源能够激发人们的想象力,使他们能够构建一款完美满足其需求的智能手表! 智能手表是一个由三个主要部分组成的系统:
- 手表硬件(这是实际的手表本身)
- 手表软件(通常称为固件或操作系统)
- 移动端应用 (iOS 和 Android 应用,用于发送通知、下载表盘等)
正如我之前提到的,设计像智能手表这样的消费电子产品是一项约束最大化的工作。 你需要确定一个目标体验(“我想要一款始终开启、日光下可读、续航 30 天的智能手表”),然后将其分解为特性/规格(“电子纸显示屏”、“Bluetooth LE”、“防水”、“零售价 150 美元”),然后创建一个包含硬件和软件组件(“Sharp Memory LCD”、“150mAh 锂聚合物电池”、“FreeRTOS”等)的设计,以满足您的规格并实现您的目标。 在构建产品近 20 年后,这个过程对我来说很自然——有时甚至是不自觉的! 我可以查看任何产品并想象出分解图,估计制造成本,并想象其软件子系统如何组合在一起。 这既是一种祝福,也是一种诅咒! 您可以将手表硬件分解为五个关键系统:
- 微控制器芯片(通常包括 Bluetooth 无线电)
- 显示屏
- 传感器和输出(轻触开关、触摸、麦克风、加速度计、扬声器)
- 其他电子元件(芯片、无源元件、印刷电路板、电池)
- 机械结构(表壳、玻璃、按钮、表带、充电线)
如今,为后 3 个系统选择组件实际上非常简单。 传感器、电池、表带、表壳、麦克风等都有很多不错的选择,价格各不相同。 对于这些组件,约束最大化相对容易,我将在后面的博文中将所有这些内容整合在一起。 在设计智能手表时,需要做出的两个最具挑战性的组件决策是选择:
- 微控制器和 Bluetooth 无线电(本文)
- 显示屏(后续文章)
背景故事
在第一个 Pebble 时代,我们使用了 STM32F2 微控制器 (MCU)。 为什么? 因为在 2011 年的一个星期五晚上,在 Hacker Dojo 的啤酒聚会上,我的一个朋友 Hugo Fiennes 不停地称赞这种相对较新的 MCU。 当时,我正在开发 inPulse,它使用 LPC2103(8K 内存!),他正确地认为我们迫切需要升级。 老实说,这对我来说是 100% 典型的。 我认为我所做的所有主要的芯片选择都来自朋友们对特定芯片的赞不绝口。 是的,我有一群非常古怪的朋友😂 感谢 Trammell Hudson, TL Lim from Pine64, Peter Barrett 以及多年来的许多其他人与我的交流。 MCU 是智能手表的中心。 将 MCU 视为一台微型计算机——它包含 CPU、RAM、(通常)闪存存储、I/O 外围设备,有时还包含无线电,所有这些都集成在一个微小的集成电路中。 您可以在此 有用的表格 上查看我们以前使用的 MCU 的规格 - 64-144MHz、128-256KB RAM。 在那个时代,MCU 没有集成的 BT 无线电,因此我们使用了额外的芯片,例如 TI CC2564(由于某种原因,该型号永远铭刻在我的脑海中,可能是因为找到一个像样的 BT 协议栈来配合使用所带来的痛苦)。
为什么选择合适的 MCU 如此重要?
回到约束最大化,MCU 位于最受约束的控制“方程式”的焦点——软件兼容性、功耗和成本。 最有趣和最困难的约束实际上是软件兼容性。 嵌入式软件比计算机操作系统软件更加分散且特定于要求。 因为计算机的硬盘空间限制不大,所以可以优化内核以实现更广泛的兼容性——Linux 包含超过 17,000 个设备驱动程序。 PebbleOS 实际上是硬编码的,仅支持来自一家公司 (STM) 的 MCU。 切换到其他品牌需要编写新的外围设备 (i2c、SPI、DMA 等) 驱动程序,采用不同的 SDK 和(有时)构建系统更改。 这些更改没有风险,但确实需要时间来实施和测试。 有些 MCU 不容易支持 FreeRTOS(咳嗽 nRF53/54 是因为缺乏 BLE 协议栈)。 由于我们不打算生产数十万或数百万只手表,因此软件工程成本无法分摊,最终成为每只手表总成本的重要驱动因素。 如果一种芯片更容易开发软件,考虑到节省软件开发时间,人们甚至可能会考虑为每单位支付更高的芯片成本。 智能手表必须通过 Bluetooth 全天候连接到手机,因此连接时的平均功耗是两个最大的功耗之一——另一个是显示屏。
为我们的新手表选择芯片
我们决定为 Core 2 Duo 使用 Nordic 的 nRF52840。 这是一个较旧的芯片,但我们非常熟悉它,并且知道我们可以相对较快地在它上面启动并运行 PebbleOS。 最初,我们计划使用 Nordic 的 SoftDevice BLE 协议栈,但由于 Liam(我在 Pebble 的同事,现在是 Rebble 的贡献者)的出色工作,我们改用了一个名为 nimBLE 的开源 BLE 协议栈。 虽然 nrf52840 对于 Core 2 Duo 来说足够强大,但对于 Core Time 2,我们需要一个具有更多 RAM 和处理能力的 MCU。 对于 Core Time 2,我们希望继续使用 Nordic(因为我们刚刚花了很多时间来移植 PebbleOS 以使用 Nordic 的 SDK 和外围设备),但 Nordic 在 BLE MCU 领域的路线图并不是很有吸引力。 他们的新低端芯片 nRF54L15 只有 256k 的 RAM。 Core Time 2 上更大的彩色显示屏需要更多的 RAM,并且我们希望为新功能留出一些空间。 此外,它只是最近才投入量产,所以我们还没有任何朋友在使用它——评论也不多。 Nordic 还有一个具有 1M RAM 的 54H 系列,但价格翻了一番,达到 4-5 美元甚至更多——也没有 512K RAM 的选项。 CT2 还需要一个特殊的接口来连接其 64 色 MIP 显示屏,2015 年代的 Pebbles 以前使用专用的 FPGA 来驱动它。 所以我正在寻找一种新的芯片。 我研究了 Apollo、BES 和 Dialog 等多种选择,但找不到完全满足我们需求的芯片。 最大的障碍之一是缺乏开源 SDK。 BES 的一款芯片看起来不错,但在我们尝试测试它时遇到了问题——没有开源 SDK! 没有示例代码。 一切都被锁定在 NDA 之后。 这对我们来说行不通——PebbleOS 需要是开源的。 幸运的是,闪电击中了。 我随机收到了一封来自一家名为 SiFli 的小型 Bluetooth 芯片公司的 CEO 的电子邮件。 我们在几个小时内交换了几封电子邮件。 渐渐清楚的是,他对让他的芯片为开源智能手表提供动力非常感兴趣。 SiFli 芯片是专门为智能手表中的主芯片而定制的。 它们已经为来自 Redmi、Oppo、Noise 和许多其他品牌的数千万只智能手表提供动力。 最小的 (!) SiFli 芯片 SF32LB52x 拥有超过 512K 的 SRAM、16M 的 PSRAM,并具有专用的 MIP 外围设备来连接我们的显示屏——无需单独的 FPGA 或昂贵的专用显示接口芯片,如 Epson。 它还具有极低的功耗特性:连接 BLE 时约为 50uA。 哦,它还不到 2 美元! 他们甚至有几种具有 1 到 2MB SRAM 选项的芯片,如果需要,我们可以切换到这些芯片。 最棒的是——他们的 SDK 在 Github 上是开源的,并且他们主动提出帮助移植 PebbleOS 以在他们的芯片上运行。 这就是全部了。 Core Time 2 的芯片将是 SF32LB52J(SF32LB527 的 1.8V 版本)。 这肯定会铭刻在我的长期记忆中! 下一篇文章:如何选择显示屏…… SiFli 链接: