嵌入式系统基础:微控制器选型、传感器接口、无线通信模块(BLE/NFC)
好,咱们直接切入正题。医疗贴片这东西,说白了就是一块贴在身上的微型电脑。它要小、要省电、要可靠,还得能跟外界通信。今天我就把这三个核心模块——微控制器、传感器接口、无线通信——掰开了揉碎了讲清楚。
微控制器选型:别光看主频
选MCU,我个人的习惯是先看功耗,再看外设,最后才看算力。为什么?你想想看,医疗贴片就那么一小块电池,可能就几十毫安时。主频再高,跑几分钟就没电了,那还有什么用?
我在项目中遇到过一款号称“低功耗”的MCU,数据手册上写的待机电流是1μA,结果实际测下来,加上外围电路,待机功耗直接飙到10μA。嗯,这里要注意,数据手册上的数字往往是在最理想条件下测的,你得留出余量。
- 工作电流:活跃模式、睡眠模式、深度睡眠模式下的电流值
- 唤醒时间:从深度睡眠到正常工作,能不能在微秒级完成
- 外设集成度:ADC、DAC、比较器、DMA,这些能不能省掉外部芯片
- 封装尺寸:BGA还是QFN?贴片面积能不能控制在5mm×5mm以内
举个例子,我常用的一个方案是STM32L0系列。它的待机电流能做到0.3μA,唤醒时间只要3.5μs。配合一个RTC定时唤醒,贴片可以做到一年不换电池。当然,如果你需要更强的处理能力,比如要跑算法,那可以考虑M4内核的芯片,但功耗会翻倍。
传感器接口:模拟信号的“最后一公里”
医疗贴片上的传感器,无非就是测体温、测心率、测血氧、测汗液成分这些。传感器输出的信号,大多是微弱的模拟量。怎么把这些信号干净地送进MCU,这里头门道不少。
我见过不少新手,直接把传感器输出接到MCU的ADC引脚上。结果呢?噪声大得离谱,数据根本没法用。为什么会这样?因为传感器的输出阻抗通常很高,而MCU的ADC输入阻抗相对较低,信号一进来就被“拉偏”了。
正确的做法是加一级运放做缓冲。我习惯用TI的OPA333或者ADI的AD8605,它们都是轨到轨、低功耗的运放,非常适合电池供电的设备。
// 伪代码:传感器数据采集流程
void sensor_read(void) {
// 1. 开启传感器电源(通过GPIO控制MOS管)
GPIO_SetPower(SENSOR_POWER, 1);
delay_ms(10); // 等待传感器稳定
// 2. 启动ADC转换
HAL_ADC_Start(&hadc);
// 3. 等待转换完成
if (HAL_ADC_PollForConversion(&hadc, 100) == HAL_OK) {
uint32_t adc_value = HAL_ADC_GetValue(&hadc);
// 4. 转换为实际物理量
float temperature = (adc_value * 3.3 / 4096 - 0.5) / 0.01;
}
// 5. 关闭传感器电源,省电
GPIO_SetPower(SENSOR_POWER, 0);
}
另外,模拟信号的走线也要讲究。我建议把传感器、运放、ADC这些模拟电路,跟数字电路(比如MCU、无线模块)在PCB上隔离开。地线要单点接地,别让数字噪声串进模拟回路。
无线通信模块:BLE还是NFC?
医疗贴片的无线通信,目前主流就两个选择:BLE和NFC。选哪个,取决于你的应用场景。
| 特性 | BLE | NFC |
|---|---|---|
| 通信距离 | 10-100米 | 0-10厘米 |
| 数据传输速率 | 最高2Mbps | 最高424kbps |
| 功耗 | 中等(广播模式约10mA) | 极低(被动模式无需电池) |
| 典型应用 | 连续监测、数据上传 | 身份识别、配置参数 |
我个人更倾向于BLE,因为它能实现持续的数据传输。比如一个心电贴片,需要每秒钟把心电波形发到手机上,那BLE是唯一的选择。NFC虽然省电,但通信距离太短,你得把手机贴上去才能读数据,这在实际使用中很不方便。
不过,NFC有一个BLE无法替代的优势:它可以无源工作。也就是说,贴片本身可以不带电池,靠手机发出的射频场供电。这在一次性贴片或者需要超长待机的场景下,非常有用。
- Nordic nRF52832:性能均衡,开发资料多,适合大多数医疗贴片
- TI CC2640R2F:功耗极低,适合纽扣电池供电的设备
- Dialog DA14531:成本低,适合大批量生产
我曾经在一个血糖监测贴片上用过nRF52832。它的BLE协议栈很成熟,连接稳定,而且支持OTA升级。不过要注意,BLE的天线设计很关键。我建议用陶瓷天线或者PCB天线,别用外置天线,因为贴片太小了,放不下。
好了,这三个基础模块就讲到这里。微控制器是大脑,传感器是眼睛和耳朵,无线通信是嘴巴。把它们选对、用好,你的医疗贴片就成功了一半。下一章,咱们聊聊怎么把这些模块整合到一起,做系统级的验证。