基于STM32 的心音信号采集系统的设计与实现
2022-12-23臧俊斌高慧芳郝凯轩
臧俊斌,高慧芳,郝凯轩
(1.中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051;2.山西工学院,山西朔州 036000)
近年来,居民生活水平得到提高,我国呈现出人口老龄化现象,老年人心血管疾病频发,心脏病患者人数持续上涨[1-3]。通过技术手段检测并分析患者的心音信号,对心脏病的诊断有着重要的临床参考价值。因此,设计一个简单、方便、易用的心音信号采集系统,实现心音信号的采集、存储与波形实时显示等功能,便于对心脏病变发展情况及过程做出准确的评估和掌控,也能辅助医师和学生加强对心脏病的深刻理解与认识;同时,对于降低患者的医疗成本,减轻其心理负担,促进心脏病的早期控制和有效治疗意义重大。
1 原理与系统设计
心音指的是在一个完整的心动周期内,因心肌舒张与收缩以及心脏瓣膜启闭等多种因素而引发的心脏机械式振动经心脏附近组织传递至胸壁,可以由耳朵或听诊器贴紧胸壁听到的声音[4-6]。心电图作为检测人体心电活动最精确的手段之一,是医务人员对心血管类疾病患者诊断的有效依据。心电图指记录心电信号并间接反映人的心脏功能和活动的波形图。通常情况下,心电信号的一个完整周期如图1 所示,其由P 波、PR 波段、QRS 波群、ST 波段、T 波组成[7-8]。
图1 心电信号特征波形图
研究表明,心脏在一个周期内生成四个心音:第一心音(S1)在心室收缩时产生,在心电图的QRS 波群之后;第二心音(S2)在心室舒张开始时产生,在心电图中T 波的终端;第三心音(S3)则在第二心音(S2)之后产生;第四心音(S4)在心房收缩期产生,在心电图的P 波之后。通常情况下,只可能听到第一心音(S1)和第二心音(S2)。因此,在一个周期内,心音信号通常分为第一心音(S1)、收缩期、第二心音(S2)、舒张期四个时间段[9],如图2 所示。其中,S2 振幅较弱于S1,持续时间相对较短。
图2 心音信号的时域特征图
基于心音与心电的产生机理与表现形式,该文设计了便携式心音信号采集系统,其主要由心音信号采集模块、心音信号处理模块以及心音信号波形显示模块三部分组成。
其中,心音信号采集模块主要使用PVDF 心音传感器来完成对人体内心音信号的采集工作。PVDF 心音传感器将位于胸腔内心跳发出的微弱声音信号放大并且转换成处理模块可以识别的电信号[10]。由于心音信号的频带范围为20~800 Hz,依据奈奎斯特采样定理、硬件处理能力、STM32 转化精度和采样频率,通常将采样频率设置为48 kbps,量化精度设置为12位,编码方式设置为WAV 格式[11-12]。
心音信号处理模块主要采用STM32 处理器对接收到的电信号进行处理。该模块由放大电路、高通/低通滤波电路以及数据转换处理部件四部分组成,以完成对所采集心音信号的处理[13-14]。
心音信号波形分析显示与通信传输主要采用2-ANO_TC 地面站的v4.34 版本与2-XCOM 的V2.0版本。通过STM32 对心音信号进行处理,再经过串口通信传输到PC端,在PC 端使用2-XCOM 对串口进行调试,最后使用2-ANO_TC 地面站完成心音信号输出波形的显示。详细的系统结构图如图3所示。
图3 系统结构图
2 硬件设计
2.1 心音信号传感器
该研究中使用PVDF 心音传感器作为系统中的心音信号传感器,完成对心音信号的采集工作。PVDF 心音传感器是一种比较常见的动态应变式传感器,其主要材料是PVDF 高分子膜。当PVDF 高分子膜受应力影响发生弯曲或拉伸变化时,上下两个电极表面将产生相应变化的电流信号,该电信号与高分子膜的形变程度成比例。与一般压电材料相比,PVDF 高分子膜拥有更高的敏感程度,当大面积地对薄膜施加压力时,它会产生更大的应力[15-17]。不仅如此,这种传感器更薄、更轻,而且非常柔软,经过上百万次的形变亦不会影响它的性能。
PVDF 心音传感器采集的心电信号经电路放大后,再传输到STM32 嵌入式开发板上进行信号处理。
2.2 STM开发板
该次设计使用的STM32 为MAX9812 1.0,其主要功能是处理来自PVDF 心音传感器传递的电信号,处理后的信号将传输到PC 端。MAX9812 是一个同时带有20 dB 固定输出功率和高电源增益的音频放大器,主要特点是采用6 引脚SC70 封装,具有顶级水平的电源抑制比和极低的THD+N,且具有低功耗等特性。
2.3 PC端
该设计使用的两种PC 端软件是2-ANO_TC 地面站与2-XCOM 串口调试工具。2-XCOM 的作用是将串口连接起来,串口的端口号为COM4:USBSERIAL,波特率为460 800 bps;用2-ANO_TC 地面站进行波形输出与显示,串口的端口号与波特率的设置与2-XOM 的设置相同,即可将上述两个软件对接,从而获取到所收集心音信号的波形。
3 软件设计
该设计的程序主要使用了sys 函数、adc 函数、delay 函数、key 函数、usart 函数、Timer 函数、LED 函数以及main 函数。
1)sys 函数:该函数用来处理中断的开启、结束以及设置栈顶地址。
2)adc 函数:
①ADC 接在APB2上,将时钟设置为72 MHz,通过分频的方式给ADC 提供特定时钟,其中预分频的方式主要有二分频、四分频、六分频、八分频四种。
②设置多个通道采样、转换时间,其中,通道采样时间的变化将对采样精度产生直接影响。
③转换时间=采样时间+12.5 个周期,一个周期大约为1 μs。通常情况下,如果是软件启动,则转换时间等于采样周期。若通过定时器触发启动ADC,则还需要加上定时器的相关时间。
④确定采样频率:为了尽可能提高采样精度,选取ADC 时钟为12 MHz,即六分频。在保证采样率为400 kHz 的情况下,每次采样时间为2.5 μs,同理可以求出采样时间为17.5 个周期。因此,采样时间必须小于17.5 个周期才能保证采样率在400 kHz 以上。综上,选择13.5 个周期以保证有较高的准确度。
3)delay 函数:修正中断过程时再次调用函数后可能出现的中断死机、循环错误,为了防止延时不准确,采用do while 函数结构。并且在此基础上,还增加了一个对ucosii 延时的自动系统支持。同时,添加了delay_osrunning、delay_ostickspersec、delay_osintnesting三个宏定义与delay_ossched-lock、delay_osschedunlock、delay_ostimedly 三个函数。
①delay_osrunning 表示当前系统是否正在工作,以决定是否使用与os 相关的函数。
②delay_ostickspersec 表示设定的一个时钟节拍,delay_init 将根据这个参数计算出systick。
③delay_osintnesting 表示os 的中断嵌套级别,可以通过使用delay_ms 函数决定如何运行和调度中断。
④delay_osschedlock 自动锁定os 的任务调度,禁止其他调度。
⑤delay_osschedunlock 自动解锁os 的任务调度,重新打开调度。
⑥delay_ostimedly 应用于os 的延时,可以打开任务调度。
4)key 函数:主要包括节制按钮及电源起始化。这个函数会对开机状态与供电状态进行检测,对按键进行标记并检查按键按下的标志位,判断按键是否有效。
5)usart 函数:主要用于GPIO 端口的数组设置,判断一个用户指定数组字符串在该数组中是否真实存在,确保每一次用户发送的数据不会超过USART3_MAX_SEND_LEN 定义的最大缓冲字节数,并对完成的标志进行接收,进而判断所接收的字节是否有效。
6)Timer 函数:主要用来实时处理自动定时器的各种中断控制服务,包括定时器的中断初始化、自动重装、清空、更新等操作。
7)LED 函数:主要控制MAX9812 上的LED灯,表示PB 端口时钟的状态。
8)main 函数:连接各个函数,实现预期的功能。其中包括软件复位、蓝牙发送、开启DMA、ADC 采集等功能。
4 系统测试与结果分析
根据上述设计的系统结构图与硬件选型,最终完成对心音传感采集系统的整体设计与实现,然后采用开发的软件程序与设定的通信帧格式进行信号采集功能测试,当设备通电之后,MAX9812 上的LED 灯会亮起,PB 端口时钟打开。采集时先将该设计中的心音传感器用绑带固定在心脏附近,保持呼吸均匀。然后,打开2-XCOM 软件,对串口进行设置,最后,打开2-ANO_TC 地面站并进行串口及波特率的匹配。匹配成功后,打开显示波形按钮,即可在2-ANO_TC 上显示心音信号波形。
最终所测试的波形结果如图4 所示。从图中可以清晰看到第二个波形振幅高,持续时间久,为心音信号的S1 阶段;第三个波形振幅明显低于第二个波形,其持续时间也相对较短,为心音信号的S2 阶段。且S1 与S2 为周期性波动、间隔均匀、波形清晰、无杂音,为一正常人心音波形的测试结果图。
图4 心音信号波形图
5 结束语
该系统设计开发了集MAX9812 处理器板与心音信号传感器为一体的信号采集处理电路,并使用Python 语言对这些元器件进行编程,设计出心音信号采集系统。再利用2-XCOM 和2-ANO_TC 等串口传输助手,将采集电路板上的USB 接口与PC 端连接,实现心音信号数据的通信传输,最终在PC 端瞬态输出显示所测波形。其结果表明,采集测试得到的波形准确清晰,可以辅助学生及医师清晰地理解心音信号的组成与包含的特征信息,进而准确完成对心音信号的快速识别,同时促进了学科交叉融合的创新性和实用性。另外,该设计是在STM32 主控芯片电路的基础上实现了心音信号的便携采集,未完成高效去噪、滤波等工作。因此,设计并不够完善,后续的研究可以重点从此方面展开深入研究。