基于安卓和STM32的耳声发射筛查系统的设计

张志忠 林霖 邝瑞杰 王涛
摘 要: 耳声发射是常用的听力筛查方法。为了降低成本和开发难度,设计一种基于安卓手机的耳声发射筛查系统。安卓手机控制基于STM32单片机的刺激采集双效卡产生刺激声,再采集耳声信号并传送至手机。安卓应用程序完成数据处理、结果显示、打印等功能。该系统实现了常见的耳声发射筛查,包括瞬态耳声发射、畸变产物耳声发射筛查。
关键词: 安卓手机; 耳声发射; STM32单片机; 听力筛查
中图分类号: TN948.53?34; TH77 文献标识码: A 文章编号: 1004?373X(2017)10?0142?04
Abstract: The otoacoustic emission (OAE) is a commonly?used hearing screening method. To reduce the cost and development difficulty, an OAE screening system based on Android mobile phone was designed. The Android mobile phone controls the stimulation?acquisition dual?task card based on STM32 to produce the acoustic stimulation, and then acquire the otoacoustic signal and transmit it to the Android mobile phone. The Android application program can accomplish the functions of data processing, result displaying and printing. The system realized the conventional OAE screening, including transient evoked otoacoustic emission (TEOAE) and distortion product evoked otoacoustic emission (DPOAE).
Keywords: Android mobile phone; otoacoustic emission; STM32; hearing screening
0 引 言
耳声发射(Otoacoustic Emissions,OAE)是一种产生于耳蜗,经听骨链及鼓膜传导释放入外耳道的音频能量,OAE被广泛应用于听力筛查[1]。目前已有的OAE筛查设备设计中,文献[2]和文献[3]把PC机作为上位机用于数据处理和人机交互,把声卡或专业数据采集卡作为下位机用于刺激声播放和耳声采集。这种设计虽然具备一定的便携性但PC机体积较大不便携带,声卡和专业数据采集卡硬件成本高。文献[4]采用一体化设计,虽然提高了便携性但需要自主设计处理和人机交互模块,电路结构复杂,较难实现。
安卓手机有丰富的计算资源、外设接口和良好人机交互性使其可以成为医疗设备开发平台[5]。本文针对目前的耳声发射筛查系统设计的不足和安卓手机的优势,提出以安卓手机结合STM32单片机的设计方案。利用安卓手机丰富的资源作为数据处理和人机交互平台,控制基于STM32单片机的刺激采集双效卡完成刺激声播放和耳声采集。本系统简化了电路设计、降低了成本和系统开发难度,并用实验验证设计的可行性,使耳声发射筛查系统设计进一步小型化和易于开发推广。
1 系统整体设计
如图1所示,本系统由安卓手机、刺激/采集双效卡、耳声探头三部分组成。安卓手机通过USB OTG(On?The?Go)接口连接刺激/采集双效卡,用于供电和交互控制信号和数据。刺激/采集双效卡以STM32单片机作为主控,配有电源电路、音频电路、耳声信号调理电路、ADC电路、TF卡和USB传输电路。刺激/采集双效卡的后端通过USB接口与安卓手机连接,实现接收安卓手机下发的检查参数并完成刺激声的播放和耳声数据的采集和上传功能。刺激/采集双效卡的前端与耳声探头直接连接。耳声探头包含两个微型扬声器用于播放刺激声,以及一个微型传声器用于采集耳声信号。传声器连接刺激/采集双效卡的信號调理电路,两个扬声器分别连接音频电路。安卓手机应用程序采用Java语言编写,完成检查参数下发、耳声数据处理、显示检查结果以及连接打印机等功能。程序的主要界面包括:病人信息登记界面、瞬态诱发OAE(Transient evoked?OAE, TEOAE)检查界面和畸变产物OAE(Distortion Product OAE, DPOAE)检查界面,以及打印界面。用户通过上述界面完成被试人员信息录入、查询和存储,以及基本OAE参数设置、数据处理和结果显示、打印结果等功能。
2 刺激/采集双效卡硬件结构
2.1 STM32单片机
刺激/采集双效卡以STM32F103ZET6单片机作为主控核心。该核心为基于Cortex?M3 内核的32 位增强型闪存微控制器,其内核具有低功耗设计,最高工作频率可达72 MHz,能满足驱动外围芯片和实时控制的要求。该芯片具有3个SPI接口、2个I2C接口、5个串口、1个SDIO接口等。高度集成的接口资源简化了电路设计[6]。
2.2 耳声信号调理电路和ADC电路
OAE反应强度低、动态范围大,声压级可从-5~20 dB SPL,频率在0.5~5 kHz之间[7]。通过传声器转换得到的信号,幅度较低为0.01 mV以下。需要经过放大和模拟带通滤波等预处理。如图2所示设计的信号调理电路分为四级。第一级为前端放大电路,采用INA128运放芯片,放大100倍;第二级和第三级分别为高通和低通两级2阶滤波器,选用集成了两个运放的单芯片实现,频率范围设计为0.5~6 kHz;第四级为后端放大电路,使用一个INA128芯片,放大1 000倍。
为了满足耳声信号采样频率和幅度的精度要求,模/数转换器选用了ADS1271[8]芯片。该芯片具有较高的性能指标和较高的环境稳定性,满足大多数生理信号采集需要。模/数转换电路如图3所示,其中VINP和VINN为信号输入引脚,SCLK和DOUT引脚与STM32单片机的SPI1对应引脚连接,用于传输数据。SYNC为芯片使能引脚,高电平有效。DRDY为ADC数据转换完成标示引脚,数据转换完成后输出低电平。该引脚可用于STM32单片机的外部中断从而实现中断模式采集耳声。根据应用需求,采用ADS1271的高精度模式,36 kHz采样率和24位量化精度。
2.3 音频电路
音频电路用于传输转换刺激声信号,主要电路为PCM1770[9]芯片。该芯片内集成有音频DAC和音频功放,可以实现数字音频的模/数转换和功率放大。PCM1770的控制接口为SPI接口,片内有4个寄存器可以实现声道和音量控制,音频传输接口为I2S接口。如图4所示,PCM1770的SPI接口与STM32的SPI1接口连接,I2S接口与STM32的I2S3接口连接。使用时先通过SPI接口配置音频播放参数,然后通过I2S接口传输音频数据。
2.4 电源电路、TF卡和USB传输电路
电源电路引入安卓手机的USB OTG接口5 V电源为刺激/采集双效卡的电路和耳声探头供电。TF卡电路为TF卡卡槽电路,卡槽内插有TF卡,刺激声文件被预先存储在TF卡中,需要更新刺激声时仅需重新载入。USB传输电路主要由一片USB转串口芯片CH340[10]组成。CH340具备与安卓手机USB OTG接口连接功能,通过USB OTG接口的数据线与STM32单片机交互数据。STM32单片机串口1波特率高达4.5 Mb/s,而CH340最大波特率为2 Mb/s,可以满足耳声数据实时传输的需要。
3 系统软件设计
3.1 软件组成
系统软件由STM32单片机固化程序和安卓程序组成。安卓程序完成人机交互和数据处理、分析、显示等任务,STM32單片机固化程序负责实时播放刺激声和采集传输耳声信号。两部分软件通过USB接口驱动连接,交互控制信号和数据。
3.2 STM32单片机固化程序
STM32单片机固化程序工作流程如图5所示。单片机上电后首先初始化串口、SPI等接口,此后轮询串口等待手机发送参数。接收参数后,程序解析参数并从TF卡载入对应的TEOAE或DPOAE刺激声文件到内存,在内存建立两个缓存区标记为1和2作为乒乓缓存区,并建立一个内存指针指向缓存区1。然后启动I2S接口以DMA方式传送一个刺激周期数字音频信号到音频电路。因为DMA不占用STM32单片机内核可同时使能ADS1271启动SPI接口通过中断模式采集来自ADS1721的耳声信号,内存指针指向缓存区1则采集的耳声信号先放至缓存区1,同时计数采集数据量,通过数据量来确定采集时长,当缓存区1内的数据量达到一个刺激周期的时间内所需采集的数据量时,此时启动串口把缓存区1内的一个刺激周期的耳声数据通过另一个DMA通道传送至安卓手机。此时一次刺激采集周期完成,内存指针指向缓存区2,每次完成后都做一次这样的指向替换,把下一个刺激采集的耳声数据存储在另一个缓存区。每完成一个周期的刺激采集任务后都做一次判断是否达到刺激采集次数要求,如未达到则继续进行刺激采集,否则一次完整的OAE检查结束,程序再次进入轮询串口等待手机下达检查指令。
3.3 安卓程序
安卓程序采用Java语言开发,使用了第三方画图控件achartengine[10]。如图6所示为安卓应用程序流程图,安卓应用程序主要有病人信息登记界面、TEOAE检查界面和DPOAE检查界面页面、打印界面等。进入程序后首先进入病人管理界面,填写病人信息,程序会将病人信息保存在SQLite数据库中。
随后可选择进入TEOAE检查或者DPOAE检查界面。在检查界面时首先选择检查参数,然后程序会自动连接刺激/采集双效卡的USB传输电路加载检查参数。此时为了保证数据接收和处理显示的实时性和数据的连续性,程序已经预先开启两个线程,并建立FIFO队列数据池,一个线程负责实时接收耳声数据并存放至数据池,另一个线程不断读取数据池内的数据并进行叠加、时域波形显示、傅里叶变换、结果显示等处理。检查结束后结果也存储在SQLite数据库中。打印界面通过手机蓝牙连接蓝牙打印机将检查结果打印输出。
4 OAE筛查实验
为了验证OAE筛查系统的有效性、稳定性以及可靠性,对健听受试者分别进行TEOAE和DPOAE筛查实验。TEOA筛查实验刺激声采用宽度为80 μs的声压级为80 dB SPL的click声。TEOAE的潜伏期为3~5 ms,诱发后持续15 ms左右。为了去除刺激尾迹,刺激开始后延迟3 ms采集数据。如图7所示为TEOAE检查界面和结果。界面左上角显示筛查者姓名,奇/偶次刺激诱发的OAE分别以蓝红两色表示,波形下方为检查结果和操作按钮。对原始数据在Matlab下做分析,结果如表1和图8所示,说明本检查系统引出的TEOAE信号在相应频段的相关率和信噪比都较高,可以用于TEOAE筛查。
DPOAE筛查一般采用两个扬声器同时输出具有固定频率比和固定声强差的纯音作为刺激声(f1和f2),一般设置f2和f1频率比为1.2。DPOAE反应在频率2f1~f2处具有较高的反应强度[7]。本实验刺激声选用1 000 Hz和1 200 Hz纯音。对采集结果用Matlab对原始数据进行频谱分析,如图9所示可以看到除了两个纯音刺激声外,在800 Hz附近的一个明显的峰值即对应于引出DPOAE成分。上述TEOAE和DPOAE实验结果表示本设备设计方案可行,系统工作正常,可以实现常规的OAE筛查功能。
5 结 论
本文介绍一种基于安卓手机和STM32单片机的OAE筛查系统设计方案。安卓手机具有丰富的计算和接口资源,以及良好的人机交互性,该系统利用安卓手机作为开发平台,结合STM32单片机低功耗多接口的特性设计刺激采集双效卡,经实验表明本系统不但满足OAE筛查的需求,且降低了成本和开发难度并具有低功耗、便携性高的特点。有助于研发低成本OAE筛查设备和推广听力筛查。
参考文献
[1] 韩德民.听力学基础与临床[M].北京:科学技术文献出版社, 2004.
[2] 宫琴,金慧君,关添,等.基于USB声卡的便携式耳声发射检查系统的研制[J].仪器仪表学报,2010,31(2):383?389.
[3] 彭诚,李俊奎,杭圣超.基于LabVIEW平台的耳声发射综合检查系统的研制[J].生命科学仪器,2014(3):51?55.
[4] 徐玉峰.基于DSP的便携式耳声发射筛查仪[D].上海:上海交通大学,2006.
[5] DEPARI A, FLAMMINI A, SISINNI E, et al. A wearable smartphone?based system for electrocardiogram acquisition [C]// Proceedings of 2014 IEEE International Symposium on Medical Measurements and Applications. [S.l.]: IEEE, 2014: 1?6.
[6] 刘军,张洋,严汉宇.原子教你玩STM32[M].北京:北京航空航天大学出版社,2013.
[7] 李兴启,郑杰夫,郗昕.听觉诱发反应及应用[M].北京:人民军医出版社,2007.
[8] 李灵华,何丽君.24位高带宽Δ?∑模/数转换器ADS1271的原理及应用[J].现代电子技术,2007,30(16):4?6.
[9] Texas Instruments. PCM1770 datasheet [R]. USA: Texas Instruments, 2007.
[10] 张秀香.基于Android的健康管理系统客户端的设计与实现[D].大连:大连理工大学,2012.