第1章:嵌入式系统基础

各位同学好,我是老张。做医疗贴片这行十几年了,今天咱们聊聊嵌入式系统的基础。说实话,很多刚入行的工程师觉得嵌入式就是写写代码、调调外设,但医疗级别的产品,远没那么简单。

1.1 嵌入式系统定义

嵌入式系统,说白了就是「专门干一件事的计算机」。它不像你桌上的PC,能打游戏能写文档。嵌入式系统从出生那天起,任务就定死了——比如监测心率、控制胰岛素泵、或者驱动一个贴片做电刺激。

我个人习惯把嵌入式系统拆成三块看:

  • 硬件平台:MCU、传感器、无线模块、电源这些物理器件
  • 软件栈:从底层驱动到上层应用,中间可能跑个RTOS
  • 交互接口:用户怎么用、数据怎么传、报警怎么触发

你想想看,一个医疗贴片贴在病人胸口,它得实时采集心电信号,处理完再通过蓝牙发给手机。这中间任何一环出问题,都不是「重启一下」能解决的。所以嵌入式系统的核心就四个字:可靠、实时

医疗贴片的特殊性:它必须能连续工作7天、14天甚至30天,功耗要极低,体积要极小,还得通过ISO 13485和IEC 62304的合规认证。这不是普通消费电子能比的。

1.2 系统组成:四大核心模块

一个典型的医疗贴片,内部长什么样?我拆开过几十种贴片,发现万变不离其宗,就这四个模块:

1.2.1 MCU(微控制器)

MCU是贴片的大脑。选型时我特别看重三点:

  • 处理能力:够用就行,别堆料。比如心电信号采样率也就250Hz-1kHz,Cortex-M0+完全够用
  • 功耗:这是硬指标。我见过一个项目,选了个M4F的片子,性能是够了,但待机电流多出50μA,直接导致续航少了两天
  • 外设集成度:ADC精度、DMA通道数、定时器资源,这些直接决定你外围要不要加芯片

我的经验:医疗贴片首选Cortex-M0+或M4内核的MCU。比如STM32L0系列、NXP的Kinetis L系列,或者国产的AT32L系列。别追新,稳定第一。

1.2.2 传感器

传感器是贴片的「眼睛」和「耳朵」。医疗贴片常用的有:

  • 生物电位传感器:测心电(ECG)、脑电(EEG)、肌电(EMG)
  • 生物阻抗传感器:测呼吸、体脂、血氧
  • 温度传感器:测体温,精度要求±0.1°C
  • 加速度计:检测运动、跌倒、睡眠姿势

嗯,这里要注意:医疗级传感器和工业级传感器,最大的区别在于信噪比和长期稳定性。我曾经在一个项目中用了工业级的加速度计,结果贴片贴了三天后数据就开始漂移,最后不得不换成了医疗级的ADXL355,成本翻了三倍,但合规过了。

1.2.3 无线模块

医疗贴片现在基本都带无线功能。主流方案就两种:

无线技术 典型芯片 功耗 传输距离 适用场景
BLE(低功耗蓝牙) nRF52832、DA14531 极低(μA级) 10-30米 贴片→手机APP
NFC NT3H1101 无源 接触 配置、读取数据
Sub-1GHz CC1310 100-500米 医院内组网

我个人习惯用BLE,因为手机生态成熟,病人自己就能用APP看数据。但要注意,BLE的协议栈一定要选经过医疗认证的,比如Nordic的SoftDevice系列。

1.2.4 电源管理

电源是贴片的命脉。医疗贴片通常用纽扣电池(CR2032、CR2477)或软包锂电池。设计时我关注三个指标:

  • 静态功耗:贴片待机时,整个系统电流必须小于5μA
  • 动态功耗:工作时,MCU+传感器+无线的总电流要控制在10mA以内
  • 电源纹波:模拟传感器对电源噪声极其敏感,纹波要小于10mVpp

避坑指南:我曾经在一个项目中用了廉价的LDO,结果心电信号上全是50Hz工频干扰。后来换了超低噪声的LDO(比如TPS7A47),问题才解决。电源设计,千万别省那几毛钱。

1.3 RTOS与裸机系统对比

很多新手问我:医疗贴片到底要不要上RTOS?我的回答是:看复杂度。

裸机系统,说白了就是一个大循环:

void main(void) {
    while(1) {
        read_sensor();      // 读传感器
        process_data();     // 处理数据
        send_ble();         // 发送数据
        sleep();            // 休眠
    }
}

这种写法简单直接,适合任务单一、时序要求不高的场景。但问题也很明显:如果读传感器卡住了,整个系统就死在那了。

RTOS(实时操作系统)就不一样了。它把任务拆成多个线程,每个线程有自己的优先级和栈空间:

// RTOS下的任务划分
void task_sensor(void *arg) {
    while(1) {
        read_sensor();
        osDelay(10);  // 每10ms读一次
    }
}

void task_ble(void *arg) {
    while(1) {
        send_ble();
        osDelay(100); // 每100ms发一次
    }
}

void task_watchdog(void *arg) {
    while(1) {
        check_system();
        osDelay(1000);
    }
}

我做个对比表,大家一看就明白:

对比项 裸机系统 RTOS
任务管理 手动轮询 自动调度
实时性 依赖代码结构 可预测(μs级)
代码复杂度 中高
内存占用 小(1-2KB RAM) 较大(5-10KB RAM)
调试难度 简单 中等(需处理死锁、优先级反转)
医疗合规 容易(代码路径清晰) 较难(需验证调度器)

我个人建议:如果贴片只有1-2个任务,裸机就够了。但如果要同时处理传感器采集、无线通信、数据存储、用户交互,还是上RTOS吧。我常用的RTOS是FreeRTOS,开源、稳定、文档全,而且通过了IEC 62304的认证。

关键点:医疗贴片如果用RTOS,一定要确保所有中断服务程序(ISR)的执行时间小于系统允许的最大延迟。我曾经在项目中遇到一个bug,蓝牙中断处理时间过长,导致心电采样丢失了三个点,差点没通过合规审核。

1.4 医疗级选型原则

最后聊聊选型。很多工程师选芯片只看数据手册,但医疗产品不一样。我总结了几条铁律:

  1. 优先选车规或医疗级:工业级芯片温度范围是-40°C~85°C,医疗级要求-40°C~105°C,而且老化测试更严格
  2. 看长期供货承诺:医疗产品生命周期5-10年,芯片不能随便停产。我一般选NXP、ST、TI这些大厂,或者国产的兆易创新、国民技术
  3. 评估工具链成熟度:IDE、调试器、例程、社区支持,这些直接影响开发效率。别选那种只有个简陋IDE的芯片
  4. 考虑合规成本:有些芯片厂商提供IEC 62304的认证包,比如ARM的CMSIS-RTOS认证版。用这些能省很多合规工作
  5. 功耗要留余量:数据手册上的功耗是理想值,实际至少多留20%余量。我习惯按1.5倍来设计

我的选型清单:MCU首选STM32L0系列(功耗低、生态好),传感器选TI的ADS129x系列(医疗级生物电位采集),无线选Nordic的nRF52系列(BLE协议栈成熟),电源选TI的TPS7A系列(超低噪声LDO)。这套组合我用了五年,没出过大问题。

好了,第一章就讲到这里。嵌入式系统基础是后面所有章节的基石,大家一定要把MCU、传感器、无线、电源这四块吃透。下一章我们聊医疗贴片的硬件设计,到时候我会分享一个实际项目的原理图,咱们边看边聊。