
基于SMBus傳輸數(shù)據(jù)關(guān)鍵要嚴(yán)格按照他的時序來控制SCL和SDA高低電平,即主器件每產(chǎn)生一個起始條件,都要有一個停止條件與之對應(yīng),并且主器件每發(fā)送一個數(shù)據(jù)或命令給從器件,從器件都要向主器件發(fā)送一個響應(yīng)信號表示數(shù)據(jù)或命令已接收,主器件在收到從器件的應(yīng)答信號后才開始繼續(xù)發(fā)送數(shù)據(jù)。在這個過程中如果有一處電平控制出錯傳輸數(shù)據(jù)都不會成功。
W3100A提供MII接口與RTL8201相連,其中引腳RX_CLK,RXDV,RXD[3:0]以及COL用于數(shù)據(jù)的接收,而TX_CLK,TXE,TXD[3:0]用于數(shù)據(jù)的發(fā)送。
1.4數(shù)據(jù)傳輸
TCP連接分主動連接(TCP客戶機(jī)模式)和被動連接(TCP服務(wù)器模式)。本文主要用到的TCP主動連接,事先必須知道服務(wù)器IP地址和端口號,具體過程如圖4所示。首先要完成芯片的TCP/IP初始化,初始化主要是對必要的寄存器進(jìn)行相應(yīng)的設(shè)置,這些寄存器包括:GAR,SMR,SHAR以及SIPR等。上述寄存器被設(shè)置后通過執(zhí)行控制寄存器C0_CR的0位Sys_init激活芯片,其次設(shè)置相應(yīng)通道(如0通道)的協(xié)議選擇寄存器C0_SOPR為0X01,選擇TCP協(xié)議;執(zhí)行通道0控制寄存器C0_CR中的Socket_Init,同時將C0_TW_PR,C0_TR_PR及C0_TA_PR置成同一值;然后執(zhí)行C0_CR的Connect命令位,到此TCP連接建立。
TCP數(shù)據(jù)傳送和接收要在連接建立后才能進(jìn)行,通過設(shè)置RMSR和TMSR來規(guī)定數(shù)據(jù)緩沖器空間大小。TCP數(shù)據(jù)傳送過程通過使用C0_TW_PR,C0_TA_PR來進(jìn)行,他們的初始值相同,然后MCU根據(jù)要傳送數(shù)據(jù)的多少增加C0_TW_PR的值,最后C0_TW_PR,C0_TA_PR 兩者之差為空閑數(shù)據(jù)緩沖器空間大小,執(zhí)行傳送命令,同時增加C0_TA_PR的值,數(shù)據(jù)傳送完畢后他們的值又相同。
2軟件設(shè)計(jì)
便攜式醫(yī)療監(jiān)護(hù)儀器的工作流程是首先對病人的ECG,NIBP,SpO2,呼吸率和體溫5個生理參數(shù)進(jìn)行采集,其次將信號量化處理后通過Internet傳到醫(yī)療服務(wù)中心的醫(yī)學(xué)通信服務(wù)器[6],同時在LCD上顯示生理參數(shù)的數(shù)據(jù)和波形圖。通信程序可以采用Socket,Email兩種方式編寫。若用Email方式編寫,醫(yī)生需從自己的電子信箱讀取數(shù)據(jù),雖然方便,但是電子信箱容量有限制,等待時間也可能會長一些,這樣會降低醫(yī)生的工作效率。若采用Socket編程,醫(yī)生可以隨時查看新來的數(shù)據(jù),方便醫(yī)生診斷?紤]到以上因素,通信程序基于Socket模式編寫。
W3100A的工作方式類似于Windows的Socket API,因此程序在Cygnal公司的集成開發(fā)環(huán)境下,把儀器作為客戶機(jī),基于Socket API用C語言編寫。對C8051F021而言,由于采用了W3 100A來完成TCP協(xié)議,其程序簡單了許多。通信主程序流程圖如圖5所示,而其子程序流程圖見圖3,圖4。
網(wǎng)絡(luò)配置文件預(yù)先存儲在E2PROM中,儀器的本地IP地址設(shè)置為一個靜態(tài)IP地址,如果家用時沒有一個靜態(tài)IP地址也可以采用動態(tài)主機(jī)配置協(xié)議(DHCP)來動態(tài)獲取一個IP地址。
3結(jié)語
本文提出的網(wǎng)絡(luò)化接口方案利用硬件芯片實(shí)現(xiàn)TCP/IP協(xié)議?梢越鉀Q當(dāng)前應(yīng)用中存在的8位MCU實(shí)現(xiàn)TCP/IP通信協(xié)議的問題。該網(wǎng)絡(luò)化接口應(yīng)用到便攜式醫(yī)療監(jiān)護(hù)儀器上能很好地實(shí)現(xiàn)儀器聯(lián)網(wǎng)功能,符合家庭遠(yuǎn)程醫(yī)療系統(tǒng)需求,有較大實(shí)用價值。