第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 医疗级选型原则
最后聊聊选型。很多工程师选芯片只看数据手册,但医疗产品不一样。我总结了几条铁律:
- 优先选车规或医疗级:工业级芯片温度范围是-40°C~85°C,医疗级要求-40°C~105°C,而且老化测试更严格
- 看长期供货承诺:医疗产品生命周期5-10年,芯片不能随便停产。我一般选NXP、ST、TI这些大厂,或者国产的兆易创新、国民技术
- 评估工具链成熟度:IDE、调试器、例程、社区支持,这些直接影响开发效率。别选那种只有个简陋IDE的芯片
- 考虑合规成本:有些芯片厂商提供IEC 62304的认证包,比如ARM的CMSIS-RTOS认证版。用这些能省很多合规工作
- 功耗要留余量:数据手册上的功耗是理想值,实际至少多留20%余量。我习惯按1.5倍来设计
我的选型清单:MCU首选STM32L0系列(功耗低、生态好),传感器选TI的ADS129x系列(医疗级生物电位采集),无线选Nordic的nRF52系列(BLE协议栈成熟),电源选TI的TPS7A系列(超低噪声LDO)。这套组合我用了五年,没出过大问题。
好了,第一章就讲到这里。嵌入式系统基础是后面所有章节的基石,大家一定要把MCU、传感器、无线、电源这四块吃透。下一章我们聊医疗贴片的硬件设计,到时候我会分享一个实际项目的原理图,咱们边看边聊。