摘要:設計基于STM32的MIT-BIH心電數據D/A回放,對整體設計方案、硬件組成、軟件設計等進行了介紹。通過讀取心電數據將其進行D/A轉換,輸出波形與原始波形進行比較,較好地實現了回放功能。由此可見,該系統(tǒng)的性能指標達到了設計要求。能很好地實現心電數據回放,為一系列心電算法的仿真實踐及實時心電監(jiān)護儀的研制打好了基礎。
關鍵詞:MIT-BIH心電數據庫;D/A轉換;STM32;USB接口
0 引言
心電信號是人類最早開展研究并應用于臨床醫(yī)學的生物電信號之一,通過對心電信號的分析處理能有效地預測心臟疾病。如何利用心電數據開發(fā)研究相關的醫(yī)療設備是對科研人員至關重要。心電數據的回放就是將原有的存儲的MIT-BIH心電數據,根據其存儲的格式,利用設計的系統(tǒng)通過D/A轉換最終從終端回放出模擬信號。本文介紹基于ARM Cortex-M3內核的STM32微控制器作為主控嵌入式芯片的心電信號數據回放的設計方法。
1 工作原理和硬件設計
上位機應用程序讀取心電數據庫中一文件,利用設備驅動程序與D/A回放模塊設備進行通信。通過USB總線不斷向硬件設備發(fā)送數據,設備接收到的原始數據,利用DMA傳輸方式,連續(xù)、不丟失地傳送到DAC模塊中,在定時器的觸發(fā)下,DAC模塊完成數據的D/A轉換,最后在終端設備即示波器上回放出模擬信號。
D/A回放硬件結構框圖如圖1所示。
1.1 STM32F103XX微處理器簡介
系統(tǒng)硬件采用意法半導體公司開發(fā)的基于Cortex-M3內核的新型32位微控制器STM32F103RE作為主控芯片,工作頻率高達72 MHz,內部集成了RAM、全速USB 2.0設備接口模塊和雙通道的12位高精度D/A轉換模塊等豐富的外設。在結合了高性能、低功耗和低電壓的同時,保持了高度的集成性能和簡易的開發(fā)特性。應用開發(fā)時,只需連接少量的外圍電路即可使電路結構簡單緊湊。
1.2 D/A轉換模塊
D/A轉換模塊(DAC)是12位數字輸入,電壓輸出的D/A轉換器。DAC可以配置成8位或12位模式,也可以與DMA控制器配合使用。DAC有2個輸出通道,每個通道都有單獨的轉換器,可以工作在雙DAC模式下,DAC集成了2個輸出緩存,可以用來減少輸出阻抗,無需外部運放,即可直接驅動外部負載。DAC轉換可以選擇外部事件觸發(fā)(定時器計數器,外部中斷線)和軟件觸發(fā)。
使能DAC通道后,STM32F103XX相應的GPIO管腳(PA4或PA5)會自動與DAC的模擬輸出相聯系。為避免寄生干擾和額外功耗,管腳PA4和PA5配置成模擬輸入(AIN),如圖2所示。
1.3 USB全速設備接口
USB外設接口實現了USB 2.0全速總線和APB1總線間的接口,為PC主機和微控制器所實現的功能之間提供了符合USB規(guī)范的通信連接。PC主機和微控制器之間通過共享USB端點緩沖區(qū)來實現數據的傳輸。
STM32芯片內部集成了USB外設,大大減輕了USB電路的設計負擔,只需設計USB接口電路,就可以實現STM32芯片的電路板的USB通信設計。D/A回放系統(tǒng)選用的USB硬件接口電路如圖3所示:USB上拉電壓接在D+線上,所以本設計USB實現全速通信,PC機為USB接口供電。USB+連接在GPIO管腳PA11,USB-連接在GPIO管腳PA12,如圖2所示:
2 固件程序設計
固件程序是運行于USB設備中的程序代碼,用于輔助硬件完成USB的功能。該系統(tǒng)固件程序選用的是STM提供的The USB-FS-Device Libra ry固件程序庫。主要完成如下功能:一是處理USB標準請求和用戶自定義請求;二是根據USB規(guī)范設置設備的各種描述符;三是初始化系統(tǒng)得各級中斷和內部端點的配置。在Keil編譯環(huán)境下,利用現成固件程序框架函數,根據設備需求在STM提供的固件程序的框架中添加相應的程序代碼,完成本回放系統(tǒng)的功能目的。
2.1 STM32F103xxUSB固件程序庫簡介
STM32F103xxUSB固件程序庫是意法半導體公司專為STM32F103XX系列ARM微處理器提供的固件程序庫,主要分為內核層和應用接口層,結構框圖如圖4所示。
內核層:該層管理使用USB IP硬件與USB標準協議兩者間的直接通信。USB庫內核遵從USB 2.0標準并和標準的STM32F103XX固件庫分離。
應用程序接口層:該層為用戶提供了內核和最終應用程序之間的完整接口。應用接口層和最終應用與固件庫通信來管理應用的硬件需求。
2.2 固件程序的設計
在本系統(tǒng)的開發(fā)中,沒有對內核層進行深入研究和修改,僅對應用接口層進行完成設備功能需要的設計。應用層的開發(fā)主要包括:系統(tǒng)初始化,主要開啟系統(tǒng)和所用外設的時鐘;USB時鐘配置,設置并使能USB時鐘,為48 MHz;USB初始化主要是完成USB設備的枚舉;定時器模塊配置、DAC和DMA模塊配置主要是完成所用外設的初始化;最后配置好標志位后等待上位機發(fā)送數據。所有代碼都是用庫函數來完成的,主程序流程圖如圖5所示。
插入USB設備時,主機輪回查詢各個USB端口,檢測到D+和D-之間有電壓差,會識別出有USB設備的插入,然后對設備進行枚舉。在設計的D/A回放系統(tǒng)中,枚舉過程的實現主要是對USB設備的設備描述符、配置描述符、端口描述符和端點描述符的配置來實現的。USB設備枚舉的過程就是通過讀取各個描述符來獲取USB設備的信息,然后將它配置為其中的一種功能。
D/A回放系統(tǒng)模塊設計中,共使用了3個端點,分別為端點0,2和3。端點0為USB設備默認的控制端點,采用了控制傳輸方式,主要完成設備的枚舉。端點2、3均為批量傳輸端點,數據傳輸采用的是批量傳輸方式,分別接收上位機發(fā)送來的心電信號數據和呼吸信號數據。定時器是一節(jié)拍發(fā)生器,作為DAC的外部事件觸發(fā)源。定時時鐘的預裝載值和時鐘分頻系數由原數字信號的抽樣頻率來決定。在D/A回放系統(tǒng)中,使用了兩個通用定時器3,4,分別作為心電信號和呼吸信號數據DA數模轉換的觸發(fā)源。DAC的配置為12位數據右對齊輸入,電壓輸出的雙通道模式。其中,通道1完成心電信號數據的D/A,通道2完成呼吸信號數據的D/A,選擇定時器作為外部事件觸發(fā)源,在一個定時周期內完成一次數據的DA實現。DMA模塊主要是完成數據的轉移,USB模塊接收端點中斷接受的數據,利用DMA方式從端點緩存中送入DAC的DAC_DHRyyD寄存器中,經過相應的移位后,寫入的數據被轉存到DHR1和DHR2寄存器中,隨后通過定時器的外部事件觸發(fā)傳輸到DORx寄存器中,在經過時間tsetting后,輸出即有效。在數據傳輸過程中,采用了雙緩沖機制,在RAM中開辟了2個緩存buffer,USB模塊接收數據放在一個buffer中,DMA傳輸即DAC階段,處理的數據是另一個buffer中的數據,這樣,使接收數據和處理數據并行進行,保證了轉換后波形的連續(xù)不間斷性。雙緩沖的實現大致如下(以心電信號數據為例):初始化空閑buffer位為buffer1,DMA源初始化配置為buffer1。端點2接收一數據包放入buffer1中,判斷是否為第一次接收數據,如果是第一次接收,改變空閑buffer位為buffer2,并允許下一數據包的接收;如果不是第一次,中斷直接返回。繼續(xù)接收第二個數據包,放入buffer2中,判斷是否第一次DMA傳輸,如果是,改變空閑buffer位為buffer1,開啟DMA傳輸,并使能定時器;如果不是,中斷返回。當DMA傳輸完成進入中斷時,首先判斷空閑buffer位,再重新配置DMA,包括DMA源和傳輸數目的改變,最后改變空閑buffer位,并允許端點的繼續(xù)接收。心電信號數據接收處理流程圖如圖6所示。對于呼吸信號數據,做同樣的處理。
3 設備驅動和應用程序的設計
本系統(tǒng)的USB驅動程序采用WDM模型,選用的開發(fā)工具是Windows XP DDK(Build 2600),Driver Studio 3.2和VC 6.0。驅動程序開發(fā)平臺搭建成功后,根據實際需要,用DriverWorks自帶的DriverWizard生成驅動程序框架和Read,Write函數,在DeviceIoControl函數中添加設備控制程序,完成自定義的功能。
上位機應用程序是采用VC 6.0創(chuàng)建的一個基于MFC的多文檔界面應用程序,主要分為數據管理模塊,回放模塊等基本模塊。Win32應用程序與設備驅動程序之間的通信是通過接口(API)函數來實現的,應用程序不需要為了和USB設備通信去了解復雜的USB協議,把USB接口當做文件來操作,從而輕而易舉的實現USB接口通信。
4 系統(tǒng)回放結果分析
按照固件程序的設計寫入USB設備,插入主機并加載相應的驅動程序,打開上位機程序,讀取數據庫中220.dat文件,傳輸到STM32完成D/A,原始心電信號波形與示波器回放波形的比較如圖7所示。
D/A模塊較好的完成了回放功能。通過示波器實時分析,回放波形周期及幅度亦滿足要求,即時序性滿足要求。
5 結語
基于STM32的MIT-BIH心電數據D/A回放的設計,在硬件和固件應用程序兩方面實現了比較完美的結合,對原始數據的D/A回放取得了良好的運行效果。同時主控芯片STM32F103RE內部集成的豐富的功能模塊,降低了開發(fā)的難度,也保證了系統(tǒng)的穩(wěn)定性,使得該回放系統(tǒng)在醫(yī)學研究和工業(yè)生產中有廣泛的應用前景。