导航菜单

基于ADS1298和STM32F407的心电采集与显示系统设计

宋勐翔,陈兰岚

(华东理工大学信息科学与工程学院,上海200237)

摘要:提出一种以ADS1298芯片及STM32F407为基础的心电采集与显示系统设计思路。在介绍心电信号采集基本原理的基础上,构建系统的总体框架,阐述基于ADS1298的信号采集、放大电路以及STM32F407接口电路设计,最后应用μC/GUI实现了心电信号在LCD液晶屏上的实时显示。结果表明,该系统为疾病诊断和健康监护中能应用的高精度、便携式、低功耗心电信号采集分析系统奠定了很好的基础。

教育期刊网 http://www.jyqkw.com
关键词 :心电信号采集;ADS1298芯片;STM32F407;μC/GUI

中图分类号:TN911.7?34 文献标识码:A 文章编号:1004?373X(2015)13?0141?04

收稿日期:2015?01?30

基金项目:上海市大学生创新性实验计划资助项目(S13093);

国家自然科学基金青年基金资助项目(61201124);

中央高校基本科研业务基金资助项目(WH1414022)

0 引言

心电信号属于生物电信号,它是心脏无数心肌细胞电活动的综合反映,其中包含了大量的生理和病理信息。通过对心电信号的研究,可以对心血管疾病的诊断、治疗提供有效的辅助分析手段[1]。其在临床医学和认知科学领域具有重要的科学意义。心电信号具有以下几个主要特点:随机性较强,即信号无法用确定的函数式来描述;噪声背景强,预测的有用信号往往淹没在许多无用信号中;信号频率低。心电信号频率较低,大量的是直流成分,去掉直流,它的主要频率范围是0.05~100 Hz,大部分能量集中在0.05~40 Hz。

一般心电采集系统主要包括信号放大与调理、模/数转换、信号处理与传输等。由于信号的微弱性和干扰的复杂性,信号放大与调理的电路比较复杂,导致体积大、功耗高[2]。由TI公司研发的ADS1298高精度A/D转换芯片将信号的滤波及陷波等处理转移到数字端,并且集成了大部分生物电采集功能,实现了便携式心电信号的采集[3]。本文利用该芯片的高精度性能,以STM32F407 为主控芯片,设计一个高集成度的便携式心电采集显示系统。

1 系统原理与架构

1.1 系统原理

图1为心电采集原理图。根据国际标准,在人体上放置10个电极,分别是4个肢体电极:LA(左臂)、RA(右臂)、LL(左腿)、RL(右腿)和6个胸部电极:V1~V6。计算两肢体间的电位差,进而得到3个双极肢体导联Ⅰ,Ⅱ,Ⅲ。由于等边三角形的中心为心脏,并与三角形在同一平面上,Ⅰ,Ⅱ,Ⅲ导联能很好地反应心脏额面的运动状况,但它不能记录单个电极处的电位变化。为了探测心脏某一局部区域电位变化,Wilson提出了单极胸导联的连接方式[4],将探查电极V1~V6安放在靠近心脏的胸壁上,参考电极置于Wilson中心电端(WCT),分别计算V1~V6与WCT之间的电位差,来反映心脏局部电位的变化。R 为平衡电阻,平衡三个肢体端与心脏间的电阻,阻值在5~300 kΩ之间。RLD为右腿驱动,是抑制电源及其他共模干扰的一种方式[5],其本质上是一个负反馈,实现方法是将人体的共模干扰信号取出,并反向放大后施加到人体端。

1.2 系统架构

本采集系统支持8通道心电信号的采集,包括6通道胸导联信号。用于反映心脏水平面情况和2通道双极肢体导联信号用于反映心脏额面状况。为实现高精度、高可靠性的心电信号采集,在预处理电路之后,采用ADS1298 作为模拟采集前端并实现模/数转换,应用STM32F407平台实现心电信号在在LCD液晶屏上的实时显示,支持SD 卡存储并预留数据通信接口。系统架构如图2所示。

2 硬件设计

2.1 心电信号采集模块设计

心电信号采集模块主要包括心电信号的采集,放大和模/数转换等过程,具体结构如图3所示。

信号的预处理电路为一个二阶滤波电路,用于限幅和滤除高频电磁波。信号进入ADS1298 后,通过一个电磁干扰滤波器(EMI Filter)来有效抑制电网噪声,提高电子设备的抗干扰能力及系统的可靠性。本芯片中EMI滤波器带宽为3 MHz。

ADS1298为每一路信号都提供了一个输入复用器(MUX)。除将输入信号传递给放大器这一基本功能外,大部分功能用于对重要设备和子系统进行故障诊断、校准和配置。具体功能有:测量内部噪声,提供测试信号,测量芯片温度,测量供电电压,测量导联脱落信号和测量右腿驱动信号[6]。

信号从输入复用器进入PGA,ADS1298芯片有8个可编程的运算放大器,实际为差分放大器。由于芯片是24位高精度A/D转换器,在参考电压VREF = 2.4 V时,分辨率可以达到0.023 8 μV,考虑到心电信号的典型值为1 mV,故放大增益设为1即可进行信号的放大。

模/数转换器最重要的参数是转换精度与转换速率,为了获得较高的频率分辨率,在每一路通道上使用了24位Σ?Δ调制器,它利用反馈环来提高粗糙量化器的有效分辨率并整形其量化噪声,使信号带宽内的噪声大大减小,而放大了信号带宽外的噪声。相当于将噪声能量从低频段推到了高频段,而对信号本身不起整形作用。此外,ADS1298芯片使用数字抽取滤波器来去除调制后产生的高频噪声,该滤波器由一个三阶的sinc滤波器构成,是可变采样速率的低通滤波器。

2.2 信号处理、显示及存储模块设计

该模块以STM32F407 为控制和处理的核心,其内部资源完全满足心电采集系统的需求,图4 为信号处理、显示及存储模块结构图。

STM32F407 通过SPI 接口读取ADS1298 处理转换的数字信号,将其处理后进行储存和显示。存储部分选用SD 卡,高度集成闪存,具备串行和随机存取能力。SD 卡的接口可以支持两种操作模式:SD 卡模式和SPI模式。为了简化主机的设计,使用SPI的传输模式,该模式的不足之处是丧失了速度性能。显示部分选用ALIENTEK提供的240×320 TFT显示屏,它的驱动芯片选择ILI9328,主要以列为单位控制屏幕的点亮和刷新,以行为单位控制灰度。所有的数据存在GRAM(Graph?ics RAM)中以减少数据传输工作,只有必须更新的数据才被传送。门驱动有320 个,与列数相同,所送出的波形可以依次将每一行的TFT打开。源驱动有720个,每3个控制1个点的灰度。门驱动与源驱动相配合,即在屏幕上生成了不同颜色的点和图像。

3 软件设计

根据系统功能要求,将基于主控STM32F407 芯片的软件功能设计分为:SPI功能模块、μC/GUI功能模块以及SD功能模块。

3.1 SPI功能模块

SPI 接口作为基于ADS1298 前置放大电路与基于STM32F407数字信号处理模块的传输媒介,是至关重要的环节。ADS1298芯片提供了两种读数据的模式[7]。一种为RDATAC 模式,即连续读数据模式,在该模式下,芯片会按照预先设定的速率不停地采集并转换数据,直到系统收到STOP命令或SDATAC命令。该模式为默认模式,如果需要进入别的模式,比如RREG读寄存器模式,必须首先使用SDATAC命令退出连续读数据模式,否则命令无效。第二种为RDATC模式,即命令读数据模式。在此模式下,每发送一个RDATC 命令,系统转换一次数据。一般用于经常变动寄存器设置的场合,为了方便计算和控制数据个数,本系统采用第二模式。ADS1298芯片有26 个寄存器,需要使用RREG 和WREG 命令来配置诸如转换速率、复用器功能、SPI模式和右腿驱动等功能。图5给出了本系统中SPI的时序。

如图5 所示,片选信号变为低电平后,首先要发送SDATAC命令,接着使用RREG和WREG命令查看和修改寄存器配置。完成后,使START变为高电平,开始转化数据,系统每完成一次数据转换,会发出一个DRDT信号,将该信号作为中断,在中断中发送RDATA命令,取回当前数据,并做一定的处理。

3.2 μC/GUI功能模块

使用的TFT?LCD 利用薄膜晶体管(TFT)产生电压来控制液晶分子转向。μC/GUI的所有命令其实是对驱动芯片寄存器的读/写操作,通过写入多个寄存器的值来控制特定像素点的颜色,形成需要的图像[8]。

μC/GUI将最底层的读写寄存器的函数封装起来,形成画点、画线和画矩形等底层驱动函数。在此基础上,对驱动函数做二次封装,形成适合μC/GUI的核心函数。对于复杂任务,μC/GUI设计了一套基于消息的机制,即所有操作是通过发消息方式实现。为了方便用户使用,μC/GUI 定义了视窗(类似于Windows 的窗口)的概念,并设计了一些窗口控件。在本系统中使用了TEXT、BUTTON和GRAPH窗口控件,其中TEXT控件用于显示特定文字,BUTTON组件及相应的回调函数实现不同通道间数据的切换,GRAPH 组件用于绘制图形及图形坐标。

μC/GUI 是应用消息驱动的,以BUTTON 组件为例。观察BUTTON_Create→ BUTTON_CreateEx 中的WM_CreateWindowAsChild、WIDGET__Init等函数,并没有对LCD 屏的操作,大部分是对参数的记录及赋值。

这些函数并不涉及操作,只是将要做的事情以消息的形式发送,称为μC/GUI 消息的收集机制,通过该机制,μC/GU“I 明白”要做什么。真正的显示是在GUI_Exec函数中,GUI_Exec()→GUI_Exec1()→WM_Exec()→WM_Exec1()→_DrawNext()→_Paint()→WM__Paint?WinAndOverlays()→_Paint1()一系列函数负责剪切,即根据收到的消息,确定LCD 需要重新绘制的区域。_Paint1()→WM_SendMessage()将所有信息发到对应于BUTTON组件的_Paint函数,_Paint函数接收此信息,调用核心函数完成最后的绘制。

图6是基于μC/GUI的LCD屏实时显示的通道二采集到的心电信号,即I导联信号。

3.3 SD卡功能模块

SD 卡的主要功能是记录采集到的数据,以便做进一步的分析,包含读SD 卡和写SD 卡两个功能。SD 卡的读/写等操作是以命令形式来控制的,可根据命令对多块或单块进行读/写操作。

4 结论与展望

基于ADS1298芯片及STM32F407设计的心电采集及显示系统体积小、采集速度快、数据精度高,完全可用于医学研究和辅助诊断。

系统还可以在以下三个方面改进:一是针对采集到的数据,在单片机中添加算法,对数据进行分析,达到对心血管疾病自诊断的目的[9]。二是充分利用ADS1298芯片内置的起搏信号检测功能和呼吸阻抗测量功能等,将系统的功能多样化、全面化。三是可以扩展一个无线接口[10],把采集的数据和处理的结果以无线的方式传送到远程接收端,通过无线采集方式,在医院里可以很容易实现远程动态存储和实时监控。

教育期刊网 http://www.jyqkw.com
参考文献

[1] 杨凯华.浅谈心电图临床应用价值[J].医药前沿,2014(7):346?347.

[2] 谢宏,谢涛.基于ADS1298与FPGA的高性能脑电信号采集系统[J].现代电子技术,2013,36(11):95?97.

[3] 魏厚杰,官金安,方浩.ADS1298 模拟前端的便携式生理信号采集系统[J].单片机与嵌入式系统应用,2012(2):36?39.

[4] 谢宏,颜林,姚楠,等.基于ADS1298的新型脑电信号采集前端设计[J].电子技术应用,2013(4):75?78.

[5] 郭继鸿.EASI 导联衍生12 导联的原理[J].临床心电学杂志,2008(3):163?167.

[6] TI. ADSl298 datasheet [EB/OL]. [2012?12?24]. http://www.ti.com/lit/ds/sbas459j/sbas459j.pdf.

[7] 刘志峻,靳薇,郭坚.基于体域网的便携式监护系统设计[J].现代科学仪器,2014(1):35?40.

[8] 刘勇,王学俊,孔新伟,等.基于μC/GUI的触摸屏显示设计[J].液晶与显示,2014(5):739?744.

[9] 罗旻晖.心电图机自动分析算法的研究与实现[D].哈尔滨:哈尔滨工业大学,2013.

[10] 谢宏,董洋洋,姚楠,等.基于ADS1298与WiFi的脑电信号采集与传输系统设计[J].现代电子技术,2013,36(6):150?153.

作者简介:宋勐翔(1991—),男,在读硕士研究生。主要从事仪表自动化的研究。陈兰岚,女,副教授。主要从事脑电信号处理的研究。

下载文本