亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于STM32 的心電和脈搏波監(jiān)測

        2023-11-30 11:32:28陳飆鄒遠文
        科技與創(chuàng)新 2023年22期
        關鍵詞:數(shù)組緩沖區(qū)寄存器

        陳飆,鄒遠文

        (四川大學,四川成都 610065)

        隨著人們對于自身生理健康的日漸重視,在日常生活中能夠方便、實時地進行生理信號的監(jiān)測變得愈加重要。

        人體的心電(ECG)和脈搏波含有豐富的生理信息,具有醫(yī)療和健康指導意義。利用心電波形可以進行異常心跳的檢測與分類[1],而利用脈搏波特別是光電容積描記脈搏波(PPG)可以進行多種心血管疾病的診斷[2],甚至可以結(jié)合ECG 和PPG 進行血壓的預測[3]。因此,本文基于STM32 設計了一種生理信號監(jiān)測方案,可以實時同步監(jiān)測清晰穩(wěn)定的ECG 和PPG 波形。

        1 總體設計與流程

        方案總體上由信號的采集、處理和顯示3 個部分構(gòu)成。其中采集部分由STM32 的模擬/數(shù)字轉(zhuǎn)換(ADC)部分對心電模塊和脈搏波傳感器采集的模擬信號進行采樣從而轉(zhuǎn)化成數(shù)字信號,而處理部分則是由STM32對采樣的數(shù)字信號進行濾波并實時提取信號波形的特征計算一些生理參數(shù),顯示部分是STM32 將處理后的信號和特征參數(shù)通過LCD 屏和LabVIEW 上位機進行實時顯示。

        方案選用的器件包括用于采集模擬生理信號的AD8232 心電模塊、脈搏波傳感器,用作主控芯片的STM32F103C8T6,用于顯示的LCD 屏和運行LabVIEW上位機的個人電腦(PC)。

        2 信號采集

        STM32F103C8T6 的信號采集部分工作流程如圖1所示,包括STM32 對ECG 和PPG 模擬信號的ADC采樣及采樣后數(shù)字信號的DMA(Direct Memory Access,直接存儲器訪問)傳輸。

        圖1 STM32 的模擬信號采集流程

        2.1 ADC 采樣

        由于需要同步采集ECG 和PPG,所以使用STM32的雙ADC 同步規(guī)則模式,即ADC1(主ADC)的外部觸發(fā)同時給ADC2(從ADC)提供觸發(fā),這樣ADC1和ADC2 的2 個通道就能同時進行ADC 采樣。主ADC的外部觸發(fā)源配置為通用定時器TIM3 的TRGO 觸發(fā)輸出信號,同時將定時器的TRGO 信號配置為定時器的更新事件,這里是定時器的計數(shù)器在向上計數(shù)模式下從0 計數(shù)到自動重裝載值產(chǎn)生溢出時的更新事件。因此ADC 的采樣頻率實際上由計數(shù)器的時鐘頻率和自動重裝載值決定,可由以下公式計算:

        式中:fADC為ADC 的采樣頻率的數(shù)值,也是計數(shù)器計數(shù)溢出的更新頻率的數(shù)值;RARR為自動重裝載寄存器的數(shù)值;fCNT為計數(shù)器的時鐘頻率的數(shù)值;fPSC為定時器的時鐘頻率,由APB1 總線的時鐘頻率結(jié)合APB1的預分頻系數(shù)獲得,此處為72 MHz。

        這里將PSC 預分頻值設置為71,ARR 自動重裝載值設置為1 000,從而得到1 kHz 的ADC 采樣頻率。

        2.2 DMA 傳輸

        在完成一次ADC 采樣后,ADC1 和ADC2 同時轉(zhuǎn)換的2 個12 位ADC 值分別存儲在32 位的ADC1 數(shù)據(jù)寄存器的低16 位和高16 位中,為了避免連續(xù)轉(zhuǎn)換時數(shù)據(jù)被覆蓋丟失,需要及時讀取。另外,為了避免CPU(中央處理器)頻繁響應中斷,選擇DMA 來進行外設ADC 到內(nèi)部存儲器的高速數(shù)據(jù)傳輸。STM32 的DMA1 通道1 在內(nèi)部直接與ADC1 相連,除了基本的數(shù)據(jù)傳輸方向(從外設讀)、外設數(shù)據(jù)寬度(32 位)等配置,還需要注意在內(nèi)存中預先分配一個數(shù)組作為緩沖區(qū),緩沖區(qū)的大小也是DMA 通道的CNDTR 傳輸數(shù)量寄存器的值,進一步將DMA 通道配置為循環(huán)模式,存儲器地址執(zhí)行增量操作,這樣DMA 就能自動搬運數(shù)據(jù)填滿數(shù)組緩沖區(qū),并且下一次自動從數(shù)組基地址重頭開始向內(nèi)存搬運數(shù)據(jù)。

        為了避免緩沖區(qū)數(shù)據(jù)被覆蓋,需要及時讀取數(shù)據(jù)并進行處理,但同時不應影響DMA 的高速連續(xù)傳輸,因此需要采用類似乒乓緩存的雙緩沖區(qū)[4],并且使能DMA 的HT 傳輸過半中斷和TC 傳輸完成中斷。每當DMA 傳輸50%的數(shù)據(jù)后,CPU 通過HT 中斷將緩沖區(qū)數(shù)組的前50%數(shù)據(jù)讀出處理(此時DMA 仍在繼續(xù)向后50%填充數(shù)據(jù)),并且關閉HT 中斷;當DMA 傳輸完成時,再通過TC 中斷將緩沖區(qū)的后50%讀出處理,再開啟HT 中斷。如此交錯反復,實現(xiàn)ADC 的連續(xù)采樣和周期性及時處理。中斷處理的時間間隔取決于緩沖區(qū)的大小,這里緩沖區(qū)數(shù)組長度設置為200,這樣DMA 每傳輸100 個數(shù)據(jù)也就是每隔100 ms 觸發(fā)一次中斷,進行數(shù)據(jù)讀取與信號處理。

        3 信號處理

        3.1 平滑濾波

        原始的ECG 和PPG 信號最主要的噪聲是隨機噪聲,需要采用平均濾波來平滑曲線。這里采用滑動窗口數(shù)組來進行平均濾波,即每次接收1 個新的信號點,就將數(shù)組的首項數(shù)據(jù)去除,數(shù)組整體數(shù)據(jù)左移1 位,將新數(shù)據(jù)放入到數(shù)組的尾項,然后對這個窗口數(shù)組里的所有數(shù)據(jù)求平均值。這樣在不損失采樣點數(shù)量或采樣頻率的情況下很好地消除尖銳噪聲,提取了一定區(qū)間內(nèi)的波形變化趨勢。

        另外,滑動窗口越大,平均濾波后的曲線越平滑,但波形的特征越容易丟失,因此需要平衡好噪聲與波形特征的取舍,選擇合適的數(shù)組大小。EGG 和PPG 的原始含噪聲波形和濾波后波形如圖2 所示。

        圖2 ECG 和PPG 波形的滑動平均濾波

        3.2 特征檢測

        ECG 和PPG 的波形特征蘊含著豐富的生理信息,這里考慮心率和血壓這2 種常見的生理參數(shù)。首先,ECG 的R 波間隔或者PPG 的波峰間隔都可以作為一個心跳周期,從而得到每分鐘的心跳次數(shù)即心率。其次,目前一種有潛力的無袖式血壓測量方法是通過脈搏波在人體動脈中的傳播速度來關聯(lián)預測血壓,這種速度可以體現(xiàn)為脈搏波從動脈近端到遠端的傳輸時間,一般通過ECG 的R 波與PPG 的某些特征點的時間差來計算,這里常用的特征點包括PPG 的峰值、足部、最大斜率/導數(shù)處等。

        特征檢測算法需要對每個新的濾波后信號點進行實時判斷,從而及時地跟蹤并記錄波形變化。首先設定波形的峰值、谷值、周期及閾值初值,并且在連續(xù)判斷信號點的過程中不斷更新。具體來說,在更新過程中,閾值被不斷調(diào)整為波形峰值和谷值的平均值,因此每當出現(xiàn)大于閾值的信號點,就意味著波形此時正處于上升階段即將到達波峰,也標志著新的心跳節(jié)拍的開始;當出現(xiàn)小于閾值的點時,則說明處于波峰的下降階段,標志著當前一拍的結(jié)束。需要注意避免ECG 的T 波和PPG 的重搏波干擾,即判斷時不僅僅依賴于信號點的數(shù)值大小,還要注意信號點的時間距離上一拍的時間間隔是否大于1/2~3/5 個心跳周期。因此,ECG 的R 波和PPG 的波峰都可以通過一拍結(jié)束后更新的最大值來確定。PPG 的足部也就是波峰的山腳,則應在舊的一拍結(jié)束后新的一拍開始前這個時間段對信號點時間進行更新。當信號點首次出現(xiàn)超過5%~10%閾值(具體數(shù)值根據(jù)總體信號幅度確定)的上升幅度后,就停止更新,表示剛好從底部平緩的變化轉(zhuǎn)為向波峰快速爬升,表明已經(jīng)找到了足部。而在檢測到峰值之前,出現(xiàn)最大上升幅度的點則被認為是最大斜率處。對本方案中某次實時采集的波形和特征數(shù)據(jù)保存后進行離線處理,繪制的圖像如圖3 所示??梢钥吹讲ㄐ畏浅7€(wěn)定而且細節(jié)十分清晰,并且各個特征都被清晰地用虛線標注了出來,不僅說明提取算法有效,也體現(xiàn)了波形質(zhì)量良好。

        圖3 ECG 和PPG 的波形及特征

        3.3 數(shù)據(jù)通信

        STM32 需要與外部設備建立通信,再將濾波后的信號點和生理特征等數(shù)據(jù)傳輸給外接設備進行顯示。首先考慮小巧便攜的顯示方案,這里選用了分辨率為240×240 的1.3 英寸TFT-LCD 顯示模塊,其內(nèi)核是一塊單片機控制和驅(qū)動芯片ST7789V3,支持8 位/9 位的并行輸入控制。

        STM32 選擇串行外設接口SPI 進行與LCD 的通信,有助于節(jié)省I/O(輸入輸出接口)資源,同時可以通過軟件模擬SPI的方式來自由地使用任意I/O進行通信。因為只需顯示,所以只用向屏幕寫入數(shù)據(jù),4 線制SPI 寫時序如圖4 所示。

        圖4 LCD 的SPI 寫時序圖

        每次寫入時需要將CS 片選引腳拉低,然后將數(shù)據(jù)引腳SDA 設置為要發(fā)送的字節(jié)的每位的高低電平,然后將時鐘引腳SCL 時鐘先設為低電平再設為高電平,這樣SDA 就會在SCL 時鐘的上升沿被采樣從而將該位電平發(fā)送出去,依次發(fā)送8 位就剛好完成1 個字節(jié)的發(fā)送。另外,在發(fā)送字節(jié)時還需要設置D/CX 引腳的高低電平,因為芯片會在SCL 的第8 個上升沿對D/CX引腳電平進行采樣,從而確定寫入的是數(shù)據(jù)還是命令。

        由于LCD 的屏幕尺寸較小,所以也考慮了引入大尺寸的屏幕來同時進行ECG 和PPG 波形的監(jiān)測,而且也便于觀察波形細節(jié)。這里采用LabVIEW 設計了一款PC 端上位機軟件,可以實時接收STM32 從串口發(fā)送來的數(shù)據(jù)包并進行解析與顯示。這里選用STM32 的通用同步異步收發(fā)器USART1 作為串口,其波特率可以通過波特比率寄存器BRR 進行配置,而通過配置控制寄存器CR1 的PCE 檢驗控制使能位和M 字長位以及CR2 的停止位,可將USART1 設置為無校驗、8 位數(shù)據(jù)位、1 位停止位,然后使能USART1。另外,需要使能發(fā)送和接收。發(fā)送一幀數(shù)據(jù)(一個字節(jié))時,需要向數(shù)據(jù)寄存器DR 寫入數(shù)據(jù),在硬件上實際是數(shù)據(jù)被送到發(fā)送數(shù)據(jù)寄存器TDR 或者直接送到移位寄存器,當1 幀數(shù)據(jù)發(fā)送完成后狀態(tài)寄存器SR 的TC 傳輸完成標志位被置1,通過讀一次SR 寄存器和寫一次DR 寄存器來清除TC 位并同時寫入下一幀。當一個字符被接收時,SR 寄存器的讀數(shù)據(jù)寄存器非空RXNE 位被硬件置1,通過使能RXNE 中斷來及時讀取數(shù)據(jù)。

        4 生理參數(shù)顯示

        在LCD 或上位機進行顯示的時候涉及CPU 對LCD 的頻繁寫操作或者向串口連續(xù)收發(fā)數(shù)據(jù)的操作,為了避免還未讀取處理的數(shù)據(jù)被后續(xù)DMA 中斷送來的新數(shù)據(jù)覆蓋,同樣也需要設置緩沖區(qū)。這里通過緩沖數(shù)組和讀、寫雙指針的交替移動來實現(xiàn)先進先出環(huán)形緩沖區(qū)FIFO 的設計[5-6],如圖5 所示。讀、寫指針一開始都是緩沖數(shù)組的基地址,DMA 每次中斷處理時就進行寫指針的自增,并根據(jù)指針地址進行緩沖數(shù)組新數(shù)據(jù)的填充,如果指針超過數(shù)組大小就回到數(shù)組開頭的基地址,如此循環(huán)反復,構(gòu)成了一個環(huán)形緩沖區(qū)。讀指針也是如此,當LCD 和上位機每次取數(shù)據(jù)時,讀指針根據(jù)讀取數(shù)據(jù)的數(shù)量進行移動。因此,緩沖區(qū)中讀指針和寫指針之間的數(shù)據(jù)就是待讀取的新數(shù)據(jù),而2 個指針重合則表明暫時沒有有效的數(shù)據(jù)可讀取,等待DMA 中斷填充新的有效數(shù)據(jù)。

        圖5 緩沖數(shù)組模擬環(huán)形緩沖區(qū)讀寫示意圖

        4.1 LCD

        ECG 或PPG 波形數(shù)據(jù)在LCD 顯示的時候需要進行刷新作畫,這里選擇波形從右往左的滾動刷新方式。由于軟件模擬SPI 的速率不是太高,為了保證刷新的流暢性,在DMA 中斷里除了滑動平均濾波外,還進行了簡單的平均濾波,即將100 個新的信號點每隔10 個點求平均值,這樣在濾除噪聲且基本保留波形變化趨勢的情況下,LCD 每次需要刷新的點數(shù)就降低到了10 個。每次刷新前類似于滑動窗口的思想,存放屏幕波形數(shù)據(jù)的舊數(shù)組(大小等于屏幕分辨率240)會集體左移10 個位置,新的10 個數(shù)據(jù)被放到數(shù)組最后面產(chǎn)生新的波形數(shù)組。刷新時會從左到右逐點擦除舊的波形點連線,同時每擦除一條連線就在同樣位置畫新數(shù)組2 個信號點的連線,這種方式有利于顯示幀的平滑過渡,即使在刷新幀數(shù)較低時人眼也不會感覺到波形平移的明顯卡頓。LCD 波形監(jiān)測界面如圖6 所示。

        圖6 LCD 波形監(jiān)測界面

        4.2 LabVIEW 上位機

        LabVIEW 上位機的前面板如圖7 所示,程序流程如圖8 所示。程序主體是個狀態(tài)機,本質(zhì)上是包含在while 循環(huán)結(jié)構(gòu)內(nèi)的條件結(jié)構(gòu),通過枚舉類型條件和移位寄存器進行各個狀態(tài)的跳轉(zhuǎn)。程序運行時,首先在“init”分支里對一些變量進行初始化,然后進入最主要的“wait”分支,通過事件結(jié)構(gòu)進行各類事件的檢測,比如檢測到串口操作按鈕開啟時就打開相應的串口,并且將數(shù)據(jù)位、停止位、奇偶校驗進行與STM32 的串口同樣的配置,通過下拉列表選擇相對應的波特率。另外還有保存圖像、退出程序等事件。當“wait”分支沒有檢測到事件時就會跳轉(zhuǎn)“send”分支,如果“開始采集”按鈕開啟即上位機處于采集狀態(tài)且布爾型變量“處理完成標志位”為真表明當前數(shù)據(jù)已處理顯示完畢,此時會向STM32 發(fā)送一個特定命令字節(jié),表示準備好接收下一批數(shù)據(jù),STM32 的串口中斷檢測到命令后就會讀取環(huán)形緩沖區(qū)中的有效數(shù)據(jù)并發(fā)送給上位機;如果不滿足條件,程序就會跳回“wait”分支繼續(xù)進行事件檢測。

        圖7 LabVIEW 上位機波形監(jiān)測界面

        圖8 LabVIEW 上位機程序流程圖

        在成功向STM32 串口發(fā)送了讀取命令后程序就會跳轉(zhuǎn)到“getdata”分支,對串口接收的字節(jié)數(shù)進行判斷,如果數(shù)量達到規(guī)定的數(shù)據(jù)包字節(jié)數(shù)就表示接收完畢,進入下個分支“deal”進行數(shù)據(jù)處理顯示,否則回到“wait”分支繼續(xù)進行等待。在“deal”分支中,首先是根據(jù)協(xié)議對接收的數(shù)據(jù)包進行字節(jié)的拆分與合并,從而提取波形采樣值、心率及其生理參數(shù);其次將這些信息保存為CSV 文件,同時利用波形圖表進行ECG 和PPG 的波形滾動顯示,另外在前面板里還顯示了心率(BPM)和心跳周期(IBI)。

        5 結(jié)論

        人們對日常健康的監(jiān)測需求愈加強烈,而類似STM32 這樣低成本、低功耗的MCU(微控制單元)芯片非常適合用在可穿戴設備或其它醫(yī)療電子設備,能夠使人們隨時隨地監(jiān)測自己的生理狀態(tài)。本文提出了一種基于STM32 的ECG 和PPG 監(jiān)測方案,能夠方便實時地監(jiān)測ECG 或PPG 波形,另外除了LCD 式的便攜監(jiān)測方案外,還演示了使用PC 等大屏設備進行多個波形及波形細節(jié)與生理特征的監(jiān)視,為類似醫(yī)院的心電圖機、血氧儀等設備提供了一種簡便的替代思路。最后,本文對方案的整體流程及具體算法都進行了詳細討論,為此類裝置從理論向?qū)嵺`的轉(zhuǎn)化提供了一個較好的示例。

        猜你喜歡
        數(shù)組緩沖區(qū)寄存器
        嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設計與實現(xiàn)
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        JAVA玩轉(zhuǎn)數(shù)學之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        Lite寄存器模型的設計與實現(xiàn)
        計算機應用(2020年5期)2020-06-07 07:06:44
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        尋找勾股數(shù)組的歷程
        關鍵鏈技術緩沖區(qū)的確定方法研究
        地理信息系統(tǒng)繪圖緩沖區(qū)技術設計與實現(xiàn)
        AVS標準中的視頻碼流緩沖區(qū)校驗模型分析
        電視技術(2012年1期)2012-06-06 08:13:58
        VB數(shù)組在for循環(huán)中的應用
        考試周刊(2012年88期)2012-04-29 04:36:47
        亚洲男人综合久久综合天堂| 国产精品视频一区日韩丝袜| 精品亚洲不卡一区二区| 东风日产车是不是国产的| 亚洲人成网网址在线看| 久久久久亚洲av无码专区桃色| 国产在视频线精品视频二代| 青青久久精品一本一区人人| 国产精品亚洲色婷婷99久久精品| av蓝导航精品导航| 日本色偷偷| 久久国产精品美女厕所尿尿av| 无码一区二区三区中文字幕| 国产av无码专区亚洲av| 久久久调教亚洲| 亚洲女av中文字幕一区二区| 欧美另类人妖| 9999毛片免费看| 成人一区二区三区蜜桃| 国产黑丝美腿在线观看| 大肉大捧一进一出好爽视色大师| 国精品无码一区二区三区在线看 | 国产又爽又黄又不遮挡视频| 国产激情一区二区三区不卡av| 婷婷射精av这里只有精品| 99精品电影一区二区免费看| 日韩狼人精品在线观看| 亚洲人成在久久综合网站| 中文字幕一区在线观看视频| 精品国产91久久综合| 成人大片在线观看视频| 久久久免费精品re6| 成人三级在线| 美腿丝袜一区在线观看| 免费人成在线观看视频高潮| 少妇白浆高潮无码免费区| 国产aⅴ丝袜旗袍无码麻豆| 人妻熟女翘屁股中文字幕| 中文字幕久久精品一二三区| 国产一区二区丰满熟女人妻| 国产性色av一区二区|