基于STM32的MIT-BIH心電數(shù)據(jù)的D/A回放
D/A回放系統(tǒng)模塊設(shè)計(jì)中,共使用了3個(gè)端點(diǎn),分別為端點(diǎn)0,2和3。端點(diǎn)0為USB設(shè)備默認(rèn)的控制端點(diǎn),采用了控制傳輸方式,主要完成設(shè)備的枚舉。端點(diǎn)2、3均為批量傳輸端點(diǎn),數(shù)據(jù)傳輸采用的是批量傳輸方式,分別接收上位機(jī)發(fā)送來的心電信號數(shù)據(jù)和呼吸信號數(shù)據(jù)。定時(shí)器是一節(jié)拍發(fā)生器,作為DAC的外部事件觸發(fā)源。定時(shí)時(shí)鐘的預(yù)裝載值和時(shí)鐘分頻系數(shù)由原數(shù)字信號的抽樣頻率來決定。在D/A回放系統(tǒng)中,使用了兩個(gè)通用定時(shí)器3,4,分別作為心電信號和呼吸信號數(shù)據(jù)DA數(shù)模轉(zhuǎn)換的觸發(fā)源。DAC的配置為12位數(shù)據(jù)右對齊輸入,電壓輸出的雙通道模式。其中,通道1完成心電信號數(shù)據(jù)的D/A,通道2完成呼吸信號數(shù)據(jù)的D/A,選擇定時(shí)器作為外部事件觸發(fā)源,在一個(gè)定時(shí)周期內(nèi)完成一次數(shù)據(jù)的DA實(shí)現(xiàn)。DMA模塊主要是完成數(shù)據(jù)的轉(zhuǎn)移,USB模塊接收端點(diǎn)中斷接受的數(shù)據(jù),利用DMA方式從端點(diǎn)緩存中送入DAC的DAC_DHRyyD寄存器中,經(jīng)過相應(yīng)的移位后,寫入的數(shù)據(jù)被轉(zhuǎn)存到DHR1和DHR2寄存器中,隨后通過定時(shí)器的外部事件觸發(fā)傳輸?shù)紻ORx寄存器中,在經(jīng)過時(shí)間tsetting后,輸出即有效。在數(shù)據(jù)傳輸過程中,采用了雙緩沖機(jī)制,在RAM中開辟了2個(gè)緩存buffer,USB模塊接收數(shù)據(jù)放在一個(gè)buffer中,DMA傳輸即DAC階段,處理的數(shù)據(jù)是另一個(gè)buffer中的數(shù)據(jù),這樣,使接收數(shù)據(jù)和處理數(shù)據(jù)并行進(jìn)行,保證了轉(zhuǎn)換后波形的連續(xù)不間斷性。雙緩沖的實(shí)現(xiàn)大致如下(以心電信號數(shù)據(jù)為例):初始化空閑buffer位為buffer1,DMA源初始化配置為buffer1。端點(diǎn)2接收一數(shù)據(jù)包放入buffer1中,判斷是否為第一次接收數(shù)據(jù),如果是第一次接收,改變空閑buffer位為buffer2,并允許下一數(shù)據(jù)包的接收;如果不是第一次,中斷直接返回。繼續(xù)接收第二個(gè)數(shù)據(jù)包,放入buffer2中,判斷是否第一次DMA傳輸,如果是,改變空閑buffer位為buffer1,開啟DMA傳輸,并使能定時(shí)器;如果不是,中斷返回。當(dāng)DMA傳輸完成進(jìn)入中斷時(shí),首先判斷空閑buffer位,再重新配置DMA,包括DMA源和傳輸數(shù)目的改變,最后改變空閑buffer位,并允許端點(diǎn)的繼續(xù)接收。心電信號數(shù)據(jù)接收處理流程圖如圖6所示。對于呼吸信號數(shù)據(jù),做同樣的處理。本文引用地址:http://www.ex-cimer.com/article/161152.htm
3 設(shè)備驅(qū)動和應(yīng)用程序的設(shè)計(jì)
本系統(tǒng)的USB驅(qū)動程序采用WDM模型,選用的開發(fā)工具是Windows XP DDK(Build 2600),Driver Studio 3.2和VC 6.0。驅(qū)動程序開發(fā)平臺搭建成功后,根據(jù)實(shí)際需要,用DriverWorks自帶的DriverWizard生成驅(qū)動程序框架和Read,Write函數(shù),在DeviceIoControl函數(shù)中添加設(shè)備控制程序,完成自定義的功能。
上位機(jī)應(yīng)用程序是采用VC 6.0創(chuàng)建的一個(gè)基于MFC的多文檔界面應(yīng)用程序,主要分為數(shù)據(jù)管理模塊,回放模塊等基本模塊。Win32應(yīng)用程序與設(shè)備驅(qū)動程序之間的通信是通過接口(API)函數(shù)來實(shí)現(xiàn)的,應(yīng)用程序不需要為了和USB設(shè)備通信去了解復(fù)雜的USB協(xié)議,把USB接口當(dāng)做文件來操作,從而輕而易舉的實(shí)現(xiàn)USB接口通信。
4 系統(tǒng)回放結(jié)果分析
按照固件程序的設(shè)計(jì)寫入U(xiǎn)SB設(shè)備,插入主機(jī)并加載相應(yīng)的驅(qū)動程序,打開上位機(jī)程序,讀取數(shù)據(jù)庫中220.dat文件,傳輸?shù)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/STM32">STM32完成D/A,原始心電信號波形與示波器回放波形的比較如圖7所示。
D/A模塊較好的完成了回放功能。通過示波器實(shí)時(shí)分析,回放波形周期及幅度亦滿足要求,即時(shí)序性滿足要求。
5 結(jié)語
基于STM32的MIT-BIH心電數(shù)據(jù)D/A回放的設(shè)計(jì),在硬件和固件應(yīng)用程序兩方面實(shí)現(xiàn)了比較完美的結(jié)合,對原始數(shù)據(jù)的D/A回放取得了良好的運(yùn)行效果。同時(shí)主控芯片STM32F103RE內(nèi)部集成的豐富的功能模塊,降低了開發(fā)的難度,也保證了系統(tǒng)的穩(wěn)定性,使得該回放系統(tǒng)在醫(yī)學(xué)研究和工業(yè)生產(chǎn)中有廣泛的應(yīng)用前景。
評論