《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于國產(chǎn)CPU的嵌入式醫(yī)療電子無線網(wǎng)絡(luò)設(shè)計
基于國產(chǎn)CPU的嵌入式醫(yī)療電子無線網(wǎng)絡(luò)設(shè)計
來源:互聯(lián)網(wǎng)
摘要: 傳統(tǒng)的醫(yī)療電子設(shè)備并不具備無線功能,不能實現(xiàn)隨時隨地的醫(yī)療監(jiān)控。文中提出一個基于IPV6 的用于醫(yī)療電子無線網(wǎng)絡(luò)的路由協(xié)議,并基于國產(chǎn)CK610 CPU 和TI 公司的CC2520射頻芯片實現(xiàn)了基本無線通信,并在PC 上通過圖形界面顯示出醫(yī)療檢驗結(jié)果。
Abstract:
Key words :

   摘要: 傳統(tǒng)的醫(yī)療電子設(shè)備并不具備無線功能,不能實現(xiàn)隨時隨地的醫(yī)療監(jiān)控。文中提出一個基于IPV6 的用于醫(yī)療電子無線網(wǎng)絡(luò)的路由協(xié)議,并基于國產(chǎn)CK610 CPU 和TI 公司的CC2520射頻芯片實現(xiàn)了基本無線通信,并在PC 上通過圖形界面顯示出醫(yī)療檢驗結(jié)果。

  0 引言

  醫(yī)療電子領(lǐng)域中,在嵌入式處理器方面,目前使用最廣泛和主流的象ARM.MIPS 都是國外廠商生產(chǎn)的CPU,而國內(nèi)的具有自主知識產(chǎn)權(quán)的CPU 卻很少被人注意。

  此外,隨著無線技術(shù)的進步和無線設(shè)備成本的降低,醫(yī)療電子無線化必將是未來發(fā)展的趨勢。目前已經(jīng)有一些企業(yè)和團體在醫(yī)療電子無線化的方向上作出了研究和開發(fā),但是目前的無線醫(yī)療電子使用的網(wǎng)絡(luò)協(xié)議基本都是基于IPV4 的,將更加先進的IPV6 網(wǎng)絡(luò)運用到無線醫(yī)療電子是未來發(fā)展必須面臨的問題。

  本文主要為醫(yī)療電子設(shè)計了一個基于IPV6 的網(wǎng)絡(luò)協(xié)議,為實現(xiàn)該協(xié)議編寫了路由協(xié)議程序和射頻適配程序,實現(xiàn)了醫(yī)療電子的無線功能。

  1 系統(tǒng)概述

  主要系統(tǒng)架構(gòu)如圖1 所示: 單個節(jié)點由CK610開發(fā)板與醫(yī)療電子板和CC2520 射頻芯片組成,控制器為普通節(jié)點與PC 相連接.Linux 用作CK610 的操作系統(tǒng),CK610 通過操作FPGA IP 核模擬的SPI 來控制CC2520,CC2591 由CC2520 的管腳控制。

  

  在整個醫(yī)療電子應(yīng)用的網(wǎng)絡(luò)系統(tǒng)中,可以有多個節(jié)點,但是只有一個控制器。所有節(jié)點數(shù)據(jù)發(fā)送的終點是控制器,距離較遠的節(jié)點可以通過其他節(jié)點轉(zhuǎn)發(fā)來傳輸數(shù)據(jù)。

  2 網(wǎng)絡(luò)協(xié)議設(shè)計

  為了實現(xiàn)圖1 的系統(tǒng)架構(gòu),需要為系統(tǒng)設(shè)計一個基于IPV6 的網(wǎng)絡(luò)協(xié)議。

  2. 1 路由算法設(shè)計

  建立和維護無線網(wǎng)絡(luò),必須要發(fā)送和處理三種形式的數(shù)據(jù)包,分別是路由請求包。路由廣播包和路由匯報包。

  網(wǎng)絡(luò)中的每個節(jié)點都維護一個路由表,路由表的每項都是與本節(jié)點相鄰的節(jié)點。一個典型節(jié)點路由表內(nèi)容如表1所示。

  

  每個節(jié)點會對路由表中的每項根據(jù)總鏈路代價進行排序,總鏈路代價最小的對應(yīng)的節(jié)點會被選為默認路由,只要節(jié)點有數(shù)據(jù)要發(fā)送或者轉(zhuǎn)發(fā),都會將數(shù)據(jù)發(fā)往默認路由。

  總鏈路代價表示的是這條鏈路信道的質(zhì)量,該值越小越好,它是本地鏈路代價和前驅(qū)節(jié)點鏈路代價兩者之和。前驅(qū)節(jié)點鏈路代價是從本節(jié)點定期發(fā)送的路由廣播包中獲取的。如果前驅(qū)節(jié)點是控制器,那么前驅(qū)節(jié)點鏈路代價是0.本地鏈路代價指的是自身節(jié)點同前驅(qū)節(jié)點之間信道的鏈路代價,表示的是通信信道質(zhì)量,該值越小越好。為了計算本地鏈路代價,必須要維護長期發(fā)送數(shù)據(jù)包總數(shù)LT.長期發(fā)送數(shù)據(jù)包成功數(shù)LS.近期發(fā)送數(shù)據(jù)包總數(shù)ST 和近期發(fā)送數(shù)據(jù)包成功數(shù)SS 這四個數(shù)據(jù)。

  ST 和SS 從零開始計數(shù),節(jié)點每發(fā)送一次數(shù)據(jù)( 包括重傳) ,近期發(fā)送數(shù)據(jù)包總數(shù)ST 就會加1,而近期發(fā)送數(shù)據(jù)包成功數(shù)SS 則是每成功發(fā)送一次數(shù)據(jù)就加1.這兩個值會在RTIMER 定時器到期之時更新完長期發(fā)送數(shù)據(jù)包總數(shù)LT 和長期發(fā)送數(shù)據(jù)包成功數(shù)LS 之后清零。長期發(fā)送數(shù)據(jù)包總數(shù)LT 和長期發(fā)送數(shù)據(jù)包成功數(shù)LS 在RTIMER 定時器到期之時更新,更新的規(guī)則是將當前長期發(fā)送數(shù)據(jù)包總數(shù)LT 加上近期發(fā)送數(shù)據(jù)包總數(shù)ST 作為新的長期發(fā)送數(shù)據(jù)包總數(shù)LT,將長期發(fā)送數(shù)據(jù)包成功數(shù)LS加上近期發(fā)送數(shù)據(jù)包成功數(shù)SS 作為新的長期發(fā)送數(shù)據(jù)包成功數(shù)LS,如果此時長期發(fā)送數(shù)據(jù)包總數(shù)LT 大于0XF000,那么將長期發(fā)送數(shù)據(jù)包總數(shù)LT 和長期發(fā)送數(shù)據(jù)包成功數(shù)LS 右移一位。這樣做有兩個好處:

 ?。?1) 避免長期發(fā)送數(shù)據(jù)包總數(shù)LT 和長期發(fā)送數(shù)據(jù)包成功數(shù)LS 無限增大到無法存儲。

 ?。?2) 離當前時間越遠的統(tǒng)計值對計算鏈路代價的影響越小,符合自然規(guī)律。

  本地鏈路代價的計算公式如下:

  

  節(jié)點會在收到鄰居節(jié)點的路由廣播包和RTIMER定時器到期的時候更新路由表鏈路代價信息。

  2. 2 網(wǎng)絡(luò)節(jié)點的加入

  當節(jié)點1 要加入網(wǎng)絡(luò)中時首先要發(fā)送一個路由請求包,申請加入無線網(wǎng)絡(luò)??刂破鹘邮盏竭@個請求之后,向節(jié)點1 發(fā)送一個路由廣播包。節(jié)點1 接收到該路由廣播包之后,將網(wǎng)絡(luò)地址前綴加上自己的節(jié)點ID 組成自己的網(wǎng)絡(luò)地址,并且將控制器加入自己的路由表。此時節(jié)點1 的默認路由是控制器。

  同時,節(jié)點1 會立即啟動TTIMER 和RTIMER 兩個定時器,當TTIMER 到期時,節(jié)點1 就會向控制器發(fā)送路由匯報包,控制器收到該包及時更新網(wǎng)絡(luò)拓撲。

  而控制器的RTIMER 到期之時,也會給節(jié)點1 發(fā)送路由廣播,節(jié)點1 立即更新路由表。

  網(wǎng)絡(luò)運行的過程中,有新的節(jié)點要加入這個網(wǎng)絡(luò),且該節(jié)點能夠直接同控制器通信,此時的情況比第一個節(jié)點加入網(wǎng)絡(luò)的情況復(fù)雜些。節(jié)點2 啟動時,首先發(fā)送一個路由請求包,控制器和節(jié)點1 接收到該包后會先后發(fā)送路由廣播包,節(jié)點2 收到這些包之后修改自己的網(wǎng)絡(luò)地址,并且將控制器和節(jié)點1 都加入自己的路由表中。當RTIMER 定時器到期時,會發(fā)送路由匯報包給控制器,經(jīng)過一段時間穩(wěn)定之后,路由匯報包的內(nèi)容應(yīng)該包括節(jié)點1 和控制器。

  之后節(jié)點1 的RTIMER 定時器到期,發(fā)送路由廣播包,控制器和節(jié)點2 都能收到,節(jié)點2 更新其路由表,節(jié)點2 的RTIMER 定時器到期也會發(fā)送路由廣播包,此時節(jié)點1 將節(jié)點2 加入自己的路由表。

  如果新加入的節(jié)點無法直接同控制器通信,即節(jié)點1 已經(jīng)存在于網(wǎng)絡(luò)中,節(jié)點2 無法同控制器通信。節(jié)點2 啟動的時候也會發(fā)送路由請求包,這個包只有節(jié)點1 可以收到,于是節(jié)點1 給節(jié)點2 回復(fù)一個路由廣播包,節(jié)點2 和控制器都可以收到。節(jié)點2 收到這個包之后,會設(shè)置好自己的網(wǎng)絡(luò)地址,同時將節(jié)點1 加入自己的路由表中。此時節(jié)點2 的路由表只有節(jié)點1 這一項,因此節(jié)點2 的默認路由是節(jié)點1.節(jié)點2 的TTIMER 定時器到期時會向默認路由,即節(jié)點1 發(fā)送路由匯報包,節(jié)點1 收到路由匯報包之后將其轉(zhuǎn)發(fā)給控制器。節(jié)點1 的RTIMER 定時器到期,發(fā)送路由廣播包,節(jié)點2 更新其路由表。

  節(jié)點2 的RTIMER 定時器到期之時發(fā)送路由廣播包,節(jié)點1 接收到該包之時更新路由表。

  2. 3 網(wǎng)絡(luò)的維護與更新

  網(wǎng)絡(luò)運行過程中,信道都是隨時變化的。為了使整個網(wǎng)絡(luò)工作正常,必須要及時更新網(wǎng)絡(luò)參數(shù)。

  網(wǎng)絡(luò)的維護和更新是通過每個節(jié)點的RTIMER 定時器實現(xiàn)的,每當該定時器到期,節(jié)點都會廣播路由廣播包,所有接收到該廣播包的節(jié)點都會更新自己的路由表信息,這樣整個網(wǎng)絡(luò)的信道信息得到了更新。


  3 軟件和硬件設(shè)計

  3. 1 硬件結(jié)構(gòu)

  圖1 中的硬件主要包括CK610 開發(fā)板.CC2591和

  CK610 為杭州中天微系統(tǒng)有限公司生產(chǎn)的CPU,主要特性有: 八級流水線; 雙發(fā)射超標量流水線技術(shù),提升性能近50%; 非阻塞指令發(fā)射。投機執(zhí)行和按序退休; 返回地址預(yù)測( 4 – entry returnstack) ; 哈佛結(jié)構(gòu)數(shù)據(jù)/指令Cache 和SPM,大小可配置; 數(shù)據(jù)Cache Write – back /Write – through 動態(tài)可配置; 內(nèi)部雙通用數(shù)據(jù)總線; AHB /AXI 總線接口,和可擴展的協(xié)處理器接口。

  CC2520 為TI 公司生產(chǎn)的一款低功耗射頻芯片,主要特性有: 發(fā)射功率可達到5dBm; 數(shù)據(jù)傳輸速率最大可達250kbps; 工作在2. 4GHz ISM 頻段;4 – 線SPI; 6 個可配置

  CC2591 為TI 公司生產(chǎn)的一款高性能低成本前端,適用于如ZigBee 網(wǎng)絡(luò)等2. 4GHz 無線系統(tǒng),可以改善RF 性能。

  CC2520 與CC2591 結(jié)合使用可以使得輸出功率范圍擴大到- 24dBm ~ 22dBm,接收靈敏度增加到- 90dBm,傳輸距離可達到幾百米甚至上千米。

  3. 2 網(wǎng)絡(luò)系統(tǒng)架構(gòu)

  為了實現(xiàn)在第3 節(jié)中定義的網(wǎng)絡(luò)協(xié)議,需要在Linux 之上編寫一個應(yīng)用程序,該程序需要實現(xiàn)網(wǎng)絡(luò)協(xié)議中的規(guī)則。除此以外,還需要根據(jù)協(xié)議,選擇合適的路由,該程序稱為路由協(xié)議程序。此外,為了使IPV6 運行在CC2520 射頻芯片上,移植了6LoWPAN協(xié)議到Linux 系統(tǒng)中,大大減小了包頭的字節(jié),減少了能量消耗。

  在用戶應(yīng)用程序中,當有數(shù)據(jù)要發(fā)送時,Linux內(nèi)核會查找內(nèi)核路由表,找到下一跳的地址,然后將數(shù)據(jù)交給相應(yīng)的設(shè)備以發(fā)送數(shù)據(jù)。系統(tǒng)所用的網(wǎng)絡(luò)設(shè)備是CC2520 射頻芯片,但是Linux 并沒用為CC2520 開發(fā)對應(yīng)的網(wǎng)絡(luò)驅(qū)動,因此可以虛擬一個網(wǎng)絡(luò)設(shè)備tun,將網(wǎng)絡(luò)層傳過來的數(shù)據(jù)都交給tun,讀取tun 接口便能夠得到要發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)。射頻適配層得到該數(shù)據(jù)之后,經(jīng)過適配層6LoWPAN 協(xié)議的壓縮之后,然后再通過SPI 操作CC2520 芯片發(fā)送數(shù)據(jù)。對應(yīng)從底層來的數(shù)據(jù),其處理過程跟上述方式類似。

  3. 3 射頻適配程序的設(shè)計

  當內(nèi)核有數(shù)據(jù)要發(fā)送之時,要使用正確的方法驅(qū)動CC2520 芯片無線發(fā)送出去,負責這部分內(nèi)容的程序稱為射頻適配程序。

  在實現(xiàn)過程中,使用CC2520 芯片作為無線網(wǎng)絡(luò)收發(fā)設(shè)備。在Linux 內(nèi)核中,并無CC2520 作為網(wǎng)絡(luò)設(shè)備的驅(qū)動。為了實現(xiàn)使用CC2520 收發(fā)數(shù)據(jù)的功能,可以建立一個虛擬網(wǎng)絡(luò)設(shè)備tun.字符設(shè)備tun 是內(nèi)核空間和用戶空間的數(shù)據(jù)接口,內(nèi)核將數(shù)據(jù)包發(fā)送到虛擬網(wǎng)絡(luò)設(shè)備上,數(shù)據(jù)包會被保存到設(shè)備的隊列中,此時用戶空間可以通過打開字符設(shè)備tun 并調(diào)用read 函數(shù)讀取其中的數(shù)據(jù),此時數(shù)據(jù)傳遞到了用戶空間,程序可以對這些數(shù)據(jù)進行處理。

  同樣,用戶空間程序可以通過write 函數(shù)將收到的數(shù)據(jù)包交給內(nèi)核。這樣就可以在上層有數(shù)據(jù)來的時候先經(jīng)過6LoWPAN 的處理壓縮,再通過驅(qū)動CC2520發(fā)送數(shù)據(jù),在CC2520 收到數(shù)據(jù)的時候,將數(shù)據(jù)經(jīng)過6LoWPAN 還原之后交給Linux 內(nèi)核,實現(xiàn)無線收發(fā)數(shù)據(jù)包的功能。

  4 系統(tǒng)測試

  整個系統(tǒng)的工作流程為: 醫(yī)療板首先采集醫(yī)療檢驗結(jié)果,將其傳遞給CK610 開發(fā)板,開發(fā)板通過操作CC2520 進行無線發(fā)送。而當CC2520 接收到數(shù)據(jù)時,通過讀取CC2520 SO 管腳獲得收到的數(shù)據(jù),通過UART 輸出給PC,PC 運行C#編寫的圖形界面將檢驗結(jié)果顯示出來,如圖2 所示。

  

  5 結(jié)束語

  本文主要提出了一種基于國產(chǎn)CPU 的SOC 醫(yī)療電子無線網(wǎng)絡(luò)的路由協(xié)議以及整個平臺的軟件架構(gòu)和射頻適配程序,并實現(xiàn)了醫(yī)療電子板的點對點無線通信,實驗結(jié)果證明,系統(tǒng)運行正常,達到預(yù)期效果。在后期工作中,將加入更多節(jié)點來驗證系統(tǒng)性能.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。