国内做 ADS1299 替代方案的厂商不少。最近我拿到了芯聚威(Sillicoway)的对标产品,第一印象就是——它家的评估板,可能是我见过同类产品里设计得最用心、最完善的一块。
先看评估板
整块板子采用叠板结构,由三个子板堆叠而成。

中间使用塑料螺丝座子把上下板支棱起来,既能稳固固定,也便于拆装调试。

前端采集部分单独做了一块滤波子板,预留了滤波器位置。

大多数 demo 板都是直接画在同一块 PCB 上,比如友商这块:

而芯聚威这种“采集前端+数字主控”分离的做法,好处很明显:研发阶段可以直接插不同截止频率的滤波器模块来完成设计验证,不用反复改板。说实话,这个细节很加分。
底板搭载的是 STM32H750VIT。

一看到 H750 我就有点应激。这颗芯片我最早 5 块钱一片的时候就开始用了,它最大的槽点就是 Flash 只有 128 KB,基本离不开外挂 Flash。

性能方面倒是没什么可挑剔的。不过看原理图,板上确实预留了外部 Flash 的位置:

只是实物上似乎没有焊接,估计是作为选配方案存在。
考虑到 8 个同步 ADC 的数据量相当可观,底板上还加了一颗 USB PHY。

这样一来,芯片的采样率就能被完整利用起来了,不会因为数字接口瓶颈而白白浪费采样能力。
64 kSPS 时的真实 SPI 数据率
纯 ADC 数据量为:
8通道 × 24bit = 192bit = 24Byte/帧
换算成持续数据率:
64k SPS × 24Byte = 1,536,000 Byte/s ≈ 12.288 Mbps
再加上每帧 1 个 STAT 状态字节:
24Byte + 1Byte = 25Byte/帧
所以真正的持续吞吐率是:
64k SPS × 25Byte = 1,600,000 Byte/s = 12.8 Mbps
这个才是全速采样时的实际 SPI 数据压力。底板加入 USB PHY 的设计思路是对的——既可以评估最大采样率,一些起搏器功能也能在这个平台上实现或验证。
BUFFER 功能非常有价值
SW3028 的最大缓存深度为 8,SW3024 则可以到 16。手册里明确规定了不同型号的缓存深度以及对应的输出格式。
例如 SW3028 的工作模式:
Buffer = 8(每缓存 8 帧产生一次 DRDY)
于是 MCU 不需要每秒响应 64000 次 DRDY 中断,只需要每秒响应 8000 次,每次再配合 DMA 把 8 帧数据一次性搬走。这对 MCU 来说友好太多了,中断负担大幅下降。
Buffer = 8 之后,每次需要读取的数据量:
8帧 × 25Byte = 200Byte
但平均吞吐量仍然不变:
64k SPS × 25Byte = 1,600,000 Byte/s = 12.8 Mbps
所以结论很明确:BUFFER 降低的是中断频率,而不是平均数据率。这个特性对于功耗敏感的应用,尤其是需要让 MCU 长时间睡眠、攒够一批数据再唤醒处理的场景,实用价值极高。
走进 SW302x 系列 24 位生物电 AFE
手册已经更新到 V3.0 版本,说明这颗芯片经过了多轮迭代打磨。

从芯片架构来看,SW302x 与 TI ADS1299 系列具有很高的功能相似性:都采用多路同步采样 ADC、PGA、SRB 公共参考、BIAS 共模反馈、导联脱落检测以及 SPI 数据接口。

但 SW302x 也有一些值得单独研究的功能:最高支持 64 kSPS 的输出数据速率;提供 1、2、3、4、6、8、12、24 共八档 PGA 增益;支持最多 16 深度的数据缓存,降低 MCU 读取数据的频率;具有可用于连续采集的交流导联脱落检测模式。
除传统 64-pin QFP 封装外,还提供 64-pin BGA 封装。
SW302x 系列的基本定位
三款型号的区别

| 参数 |
SW3024 |
SW3026 |
SW3028 |
| ADC 通道数 |
4 |
6 |
8 |
| ADC 分辨率 |
24 bit |
24 bit |
24 bit |
| 是否同步采样 |
是 |
是 |
是 |
| 内置 PGA |
4 组 |
6 组 |
8 组 |
| 最大输出数据速率 |
64 kSPS |
64 kSPS |
64 kSPS |
| PGA 增益 |
1~24 |
1~24 |
1~24 |
| 内置基准 |
支持 |
支持 |
支持 |
| 内置时钟 |
支持 |
支持 |
支持 |
| BIAS 放大器 |
支持 |
支持 |
支持 |
| 数字缓存最大深度 |
16 |
8 |
8 |
| SPI 接口 |
支持 |
支持 |
支持 |
| 工作温度 |
-40~85 ℃ |
-40~85 ℃ |
-40~85 ℃ |
| 封装 |
QFP64 / BGA64 |
QFP64 / BGA64 |
QFP64 / BGA64 |
其中一个特别值得关注的区别是:
SW3024 的缓存深度可以达到 16,而 SW3026 和 SW3028 最大为 8。
电气参数
| 参数 |
指标 |
| 分辨率 |
24 bit |
| 输入参考噪声 |
0.23 μV RMS |
| 输入参考峰峰值噪声 |
1.28 μVpp |
| 输出速率 |
250~64000 SPS |
| CMRR |
-118 dB |
| PSRR |
96 dB |
| 通道串扰 |
-110 dB |
| SNR |
120 dB |
| THD |
-85 dB |
需要强调一点:这些参数并非全部在相同增益、带宽和工作条件下测得。比如:
0.23 μV RMS 的噪声性能对应手册列出的低速、高增益测试条件,不能直接认为在 64 kSPS 时仍然具有相同噪声水平。
功耗
手册给出了不同通道型号的正常工作功耗。
| 型号 |
5 V 模拟供电条件 |
3 V 模拟供电条件 |
| SW3024 |
19.9 mW |
11.4 mW |
| SW3026 |
29.2 mW |
16.2 mW |
| SW3028 |
36.5 mW |
20.7 mW |
对于电池供电的生物电采集设备,SW3028 大约 20~37 mW 的功耗量级值得重点评估。不算特别低,但在 8 通道 24 位同步采样的规格下,这个数字并不算离谱。
一些值得聊的闪光点
定位就是 ADS1299 的竞品,大方向没什么好说的。下面聊几个我实际用下来觉得不错的细节。
单电源供电也能测负电位
先看 ADS1299 的绝对最大额定值,它的模拟电源 AVSS 可以到 -3 V。

而 SW302x 的电源参数中,AVSS 到 DGND 的范围是 -0.2~0.2 V,意味着它不需要真正的负电源轨。

但实际测量时依然可以读到负电位信号。秘密在于芯片内部加入了电荷泵,把单电源转换为内部所需的负电位。


这一点我认为是整颗芯片最亮眼的设计。传统方案要测负电位,通常得引入负电源轨,增加物料成本和电源设计的复杂度。SW302x 用单电源就解决了这个问题,对便携设备的 BOM 精简帮助很大。
测量范围
对大多数用户来说,拿到片子后最先关心的还是常规参数的边界。基本原则是:增益越大,ADC 前端量程越小。差分满量程关系为:
V_FS = ±V_REF / PGA
如果使用内部 4.5 V 基准:
| PGA |
正负满量程 |
总跨度 |
| 1 |
±4.5 V |
9 V |
| 6 |
±0.75 V |
1.5 V |
| 12 |
±0.375 V |
0.75 V |
| 24 |
±0.1875 V |
0.375 V |
所以即使 Gain = 24,量程仍有 ±187.5 mV 左右。对于纯 EEG/EMG 信号来说,这其实依然相当充裕。
但也正因如此,EEG 信号虽然小,却不能无脑上 Gain = 24。电极失调电压可能达到几十甚至上百毫伏。假如电极 DC 失调是 100 mV:
Gain = 24 后,在 PGA 内部相当于 100mV × 24 = 2.4V
动态余量会迅速被消耗掉。因此实际设计里 Gain = 12 往往比 Gain = 24 更常见,最终取值还是要结合实际电极 DC 偏移和运动伪迹来定。
共模范围比满量程更容易被忽略
PGA 共模范围约束:
AVSS + 0.3V ≤ V_CM ≤ AVDD - 0.3V
手册给的例子是单电源 3.3 V 供电:
0.3V ≤ V_CM ≤ 3.0V
也就是说,共模电压如果偏出这个窗口,PGA 的线性度会迅速恶化。这也解释了 BIAS 为什么重要——BIAS 电路本质上就是要把人体共模拉回 ADC 前端最舒服的位置。
PGA 本身带宽很高,手册给出的 PGA 小信号带宽如下:
| Gain |
PGA BW |
| 1 |
372 kHz |
| 2 |
328 kHz |
| 3 |
292 kHz |
| 4 |
273 kHz |
| 6 |
247 kHz |
| 8 |
226 kHz |
| 12 |
195 kHz |
| 24 |
136 kHz |
即使 Gain = 24,模拟 PGA 仍然有约 136 kHz 的带宽。而 EEG 应用通常只关心 0.5~100 Hz 的低频段。也就是说,模拟前端本身会放过大量高频能量,真正把输出数据带宽压下来的,是后面的数字抽取滤波器。
小结
芯聚威家的东西一直是稳扎稳打的路线,用下来整体感觉不错。这颗芯片我个人认为最大的特点就是单电源供电,省去了负电源轨的设计负担;另外 FIFO 功能对低功耗设计也很友好。其他一些小改进就不展开说了。最后还是要再夸一句:评估板设计得真心不错。
(等有空了来写一篇完整实测。)
如果你也在评估国产生物电 AFE 方案,或者已经在实际项目里用过 SW302x,欢迎到云栈社区和更多嵌入式开发者一起交流经验。