面向小型全自動(dòng)生化分析儀的同步可靠的UART通信_(tái)第1頁
面向小型全自動(dòng)生化分析儀的同步可靠的UART通信_(tái)第2頁
面向小型全自動(dòng)生化分析儀的同步可靠的UART通信_(tái)第3頁
面向小型全自動(dòng)生化分析儀的同步可靠的UART通信_(tái)第4頁
面向小型全自動(dòng)生化分析儀的同步可靠的UART通信_(tái)第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    面向小型全自動(dòng)生化分析儀的同步可靠的UART通信        張洪輝1,2, 黎海文1, 高春海1,2, 吳一輝, 宣 明1 時(shí)間:2010年04月21日     字 體: 大 中 小        關(guān)鍵詞:        摘  要:關(guān)鍵詞: 

2、60;  為了提高小型全自動(dòng)生化分析儀的工作效率,其控制系統(tǒng)需采取并行處理的策略,以單個(gè)單片機(jī)為核心的單處理器因其功能的局限性,已不能完成多任務(wù)的并行處理。采用雙單片機(jī)的控制方案可以提高系統(tǒng)的性能,但必須為雙機(jī)通信提供穩(wěn)定可靠的方案。 在傳統(tǒng)的8位、16位及32位處理器中,一般都帶有UART串行口。傳統(tǒng)基于UART的數(shù)據(jù)通信有2種方式:查詢方式和中斷方式。查詢方式下CPU的負(fù)擔(dān)較重,浪費(fèi)了處理器資源,不能夠及時(shí)處理其他事件1;另外,因發(fā)送端與接收端不能同步,當(dāng)數(shù)據(jù)需要接收而接收端未及時(shí)響應(yīng)時(shí),就導(dǎo)致數(shù)據(jù)的丟失,造成通信不可靠。中斷方式可以在接收到或者發(fā)送完數(shù)據(jù)時(shí)產(chǎn)生中斷,在中斷服務(wù)進(jìn)

3、程中完成數(shù)據(jù)存儲(chǔ)與處理。由于中斷方式下CPU利用率較高,也能夠?qū)崿F(xiàn)發(fā)送與接收的同步1,因此在CPU任務(wù)簡(jiǎn)單的系統(tǒng)中,一般采用中斷方式實(shí)現(xiàn)UART數(shù)據(jù)通信。但是小型全自動(dòng)化生化分析儀控制系統(tǒng)需要實(shí)現(xiàn)多電機(jī)位置的閉環(huán)控制、多傳感器的數(shù)據(jù)采集及處理、病人資料的傳輸處理等任務(wù),采用中斷方式的UART通信時(shí),一方面帶來中斷的優(yōu)先級(jí)分配問題,當(dāng)系統(tǒng)處于更高優(yōu)先級(jí)的中斷處理子程序中時(shí),導(dǎo)致串行通信的中斷不能及時(shí)被響應(yīng),造成數(shù)據(jù)丟失;另一方面為協(xié)調(diào)雙處理器間各部件的協(xié)同工作,有時(shí)不允許程序的正常執(zhí)行流程被打斷,禁止中斷響應(yīng)。為了保證串口通信的可靠性與穩(wěn)定性,在設(shè)計(jì)小型全自動(dòng)生化分析儀的控制系統(tǒng)時(shí),采用了基于3

4、次等待握手協(xié)議的同步、可靠的UART通信。本文將分別從物理層、傳輸層與應(yīng)用層介紹等待握手協(xié)議在同步可靠的UART通信中的實(shí)現(xiàn)。1 物理層 物理層實(shí)現(xiàn)通信底層的物理連接,為數(shù)據(jù)端設(shè)備提供傳送數(shù)據(jù)的通路,其作用是確保比特流能在物理信道上傳輸2。物理層的連接由單片機(jī)的異步通信端口(UART串口)實(shí)現(xiàn)。1.1 異步通信簡(jiǎn)介3-4 在異步通信中,數(shù)據(jù)是以字符為單位組成字符幀進(jìn)行傳送的。發(fā)送端與接收端分別按字符幀規(guī)定的格式和波特率來協(xié)調(diào)數(shù)據(jù)的發(fā)送和接收。字符幀和波特率可以由用戶根據(jù)實(shí)際情況選擇。    字符幀由起始位、數(shù)據(jù)位、停止位和空閑位4部分組成,如圖1所示。1.2 C8

5、051F060的UART    C8051F060 是SiLab公司推出的混合信號(hào)系統(tǒng)芯片,是高度集成的片上系統(tǒng),具有高速指令處理能力3。C8051F060有2個(gè)UART口,并沒有分配在固定的I/O端口上,而是需要通過優(yōu)先權(quán)交叉開關(guān)譯碼器進(jìn)行分配。“交叉開關(guān)”按優(yōu)先權(quán)順序?qū)⒍丝?3的引腳分配給器件上的數(shù)字外設(shè)。C8051F060的UART串口與端口的連接有多種形式,靈活可靠。2 傳輸層 傳輸層實(shí)現(xiàn)數(shù)據(jù)流的傳輸,并負(fù)責(zé)傳輸控制,具備流量控制的功能。其目的是為應(yīng)用層提供可靠無誤的數(shù)據(jù)傳輸。傳輸層的服務(wù)要經(jīng)歷傳輸連接建立階段和數(shù)據(jù)傳送階段2。該層由軟硬件結(jié)合實(shí)現(xiàn)。硬件實(shí)

6、現(xiàn)傳輸線路與控制線路的連接,軟件對(duì)其進(jìn)行設(shè)置和控制。2.1 傳輸層的硬件電路設(shè)置 傳輸層的數(shù)據(jù)傳輸線路為物理層的UART串口,其傳輸連接的建立、傳輸流量的控制則通過單片機(jī)的另外2個(gè)獨(dú)立I/O口,用于實(shí)現(xiàn)3次等待握手協(xié)議。電路設(shè)計(jì)的原理為:發(fā)送端單片機(jī)UART口的TX0和RX0分別連接到接收端單片機(jī)的UART口的RX0和TX0。在每1個(gè)單片機(jī)上分別使用2個(gè)I/O端口用于握手信號(hào)的發(fā)送和接收。其電氣連接如圖2所示。2.2 傳輸層的軟件設(shè)計(jì)原理    為實(shí)現(xiàn)數(shù)據(jù)通信的同步和提高通信的可靠性,傳輸層采用3次等待握手協(xié)議實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步通信。協(xié)議的原理如圖3所示。 協(xié)議的

7、原理如下:    (1)當(dāng)發(fā)送端要發(fā)送數(shù)據(jù)時(shí),發(fā)出第1次握手信號(hào),通知接收端,第1次握手信號(hào)始終有效,直到收到接收端對(duì)第1次握手信號(hào)的應(yīng)答信號(hào),即第2次握手信號(hào)。當(dāng)發(fā)送端接收到第2次握手信號(hào)后,使第1次握手信號(hào)無效,發(fā)出對(duì)第2次握手信號(hào)的應(yīng)答信號(hào),即第3次握手信號(hào),并隨即發(fā)送數(shù)據(jù)。至此,3次握手協(xié)議完成,發(fā)送端與接收端實(shí)現(xiàn)了數(shù)據(jù)的同步傳輸。 (2)當(dāng)接收端要接收數(shù)據(jù)時(shí),首先等待發(fā)送端發(fā)出的第1次握手信號(hào),當(dāng)發(fā)送端發(fā)送第1次握手信號(hào)后,表明發(fā)送端已經(jīng)準(zhǔn)備好要發(fā)送數(shù)據(jù),接收端將第2次握手信號(hào)持續(xù)一段時(shí)間后清除,等待第3次握手信號(hào)。檢測(cè)到第3次握手信號(hào)后,隨即開始接收數(shù)

8、據(jù)。至此,3次握手協(xié)議完成,發(fā)送端與接收端實(shí)現(xiàn)了數(shù)據(jù)的同步傳輸。2.3 傳輸層的軟件實(shí)現(xiàn) 傳輸層的軟件與硬件電路密切相關(guān),傳輸層的軟件質(zhì)量的好壞決定了最終應(yīng)用層軟件的質(zhì)量。在傳輸層的軟件實(shí)現(xiàn)中,與硬件相關(guān)的系統(tǒng)初始化尤為重要。系統(tǒng)上電后,首先要進(jìn)行的就是初始化,初始化包括系統(tǒng)時(shí)鐘初始化、EMIF初始化、定時(shí)器初始化、端口初始化以及交叉開關(guān)的配置等??梢酝ㄟ^設(shè)置相應(yīng)的特殊功能寄存器(SFR)來進(jìn)行。由于篇幅所限,這里主要介紹關(guān)鍵初始化模塊:端口初始化與UART初始化。系統(tǒng)的初始化分為主機(jī)的初始化與從機(jī)的初始化部分。 端口初始化的關(guān)鍵是合理地分配C8051F060的數(shù)字外設(shè),使其依據(jù)硬件電路的設(shè)計(jì)

9、,對(duì)交叉開關(guān)進(jìn)行配置,并設(shè)置相應(yīng)的端口輸入輸出類型。主機(jī)端口初始化中交叉開關(guān)配置部分的程序如下:void  MasterPORTInit (void)            OldSFRPAGE = SFRPAGE;       SFRPAGE = CONFIG_PAGE;             

10、   /切換頁面地址       XBR0 = 0x02;                                    /SPI0連接到端口     

11、                          /腳P0.0P0.3       XBR1  = 0x00;       XBR2  = 0x44;       &#

12、160;                          /弱上拉全局禁止,交叉                              

13、0;                              /開關(guān)使能, UART連接到P0.4P0.5       SFRPAGE = OldSFRPAGE;         

14、0;     /恢復(fù)頁面地址   從機(jī)的端口初始化與主機(jī)的端口初始化原理相同,這里不再累述。    UART初始化主要包括時(shí)鐘源的選擇、工作方式的選擇,邏輯電平的選擇及處理中斷的方式等,其中主機(jī)的UART初始化程序如下:void  MasterUARTInit(void)    OldSFRPAGE = SFRPAGE;    SFRPAGE = UART_PAGE;     /切換頁面地址 &#

15、160;  SCON1 = 0x40;                      /波特率可編程的8位UART,                                        

16、;        /停止位的邏輯電平被忽略,                                           

17、    /禁止接收,清空發(fā)送及接收中斷標(biāo)志    SFRPAGE = OldSFRPAGE;            /恢復(fù)頁面地址    傳輸層數(shù)據(jù)傳輸軟件實(shí)現(xiàn)元數(shù)據(jù)傳輸?shù)墓δ?,在這里實(shí)現(xiàn)傳輸層的3次握手協(xié)議。依據(jù)3次握手協(xié)議的設(shè)計(jì)原理,主機(jī)發(fā)送軟件的實(shí)現(xiàn)如下:    while(P0_6=1)         

18、60;  /等待第2次握手信號(hào)    P0_7=0;                      /發(fā)出第1次握手信號(hào)    Delay1us(1);      /延時(shí)1 ?滋s    P0_7=1;       /發(fā)送第3次握手信

19、號(hào)    工作時(shí)序?yàn)椋寒?dāng)主機(jī)需要發(fā)送數(shù)據(jù)時(shí),首先將P0_7設(shè)置為低,即為第1次握手信號(hào),從機(jī)檢測(cè)到該信號(hào)后,知道主機(jī)將發(fā)送數(shù)據(jù),于是發(fā)出第2次握手信號(hào),將與主機(jī)P0_6相連的引腳置低。主機(jī)檢測(cè)到P0_6為低電平,即第2次握手信號(hào)后,將發(fā)出第3次握手信號(hào),即把P0_7設(shè)置為高電平,并隨即發(fā)送數(shù)據(jù)。    從機(jī)接收數(shù)據(jù)時(shí)的軟件實(shí)現(xiàn)如下:    while(P5_5=1)             

20、60;   /等待的第1次握手信號(hào)    P5_4=1;       P5_4=0;                           /發(fā)出第2次握手信號(hào)    Delay1us(1);   &#

21、160;P5_4=1;        從機(jī)的P5_4、P5_5分別連接主機(jī)的P0_6、P0_7。當(dāng)從機(jī)接收數(shù)據(jù)時(shí),首先等待主機(jī)發(fā)送的第1次握手信號(hào),即主機(jī)的P0_7端口(從機(jī)的P5_5端口)為低電平。若檢測(cè)到第1次握手信號(hào),則發(fā)送第2次握手信號(hào)(即將P5_4置低),隨即將P5_4拉高,檢測(cè)到第3次握手信號(hào)后開始接收數(shù)據(jù)。為實(shí)現(xiàn)軟件的簡(jiǎn)便性,減少編程出錯(cuò)的概率,本文定義了2個(gè)宏來完成上述握手的過程。宏定義如下:    #define Send while(P0_6=1)P0_7=0;  

22、  Delay1us(1); P0_7=1;          /主機(jī)發(fā)送的宏定義    #define Receive  OldSFRPAGE=SFRPAGE;    SFRPAGE=CONFIG_PAGE;while(P5_5=1)P5_4=1;    P5_4=0;Delay1us(1);P5_4=1;    SFRPAGE=OldSFRPAGE;  

23、         /從機(jī)接收的宏定義    主機(jī)發(fā)送與從機(jī)接收元數(shù)據(jù)的函數(shù)分別如下:void  MasterSendUART (Uchar sdata)        Send;                       

24、60;                           /完成握手協(xié)議        OldSFRPAGE = SFRPAGE;               /寄存器頁面切換       

25、; SFRPAGE = UART_PAGE;        TI1 = 0;                                            /清除發(fā)送完成中斷標(biāo)志     &#

26、160;  SBUF1 = sdata;                                  /發(fā)送數(shù)據(jù)        while(TI1=0);     

27、                             /等待發(fā)送完成        TI1 = 0;             

28、                               /清空發(fā)送完成標(biāo)志        SFRPAGE = OldSFRPAGE;         Uchar Slaver

29、ReceiveUART(void)        Receive;                                       

30、60;    /完成握手協(xié)議        OldSFRPAGE = SFRPAGE;        SFRPAGE = UART_PAGE;                /寄存器頁面切換        SCON1 = 0x50;

31、0;                                 /允許接收,清空接收完標(biāo)志        while(SCON1&0x01)=0);             &

32、#160;     /等待接收完成        ReData = SBUF1;                                 /接收數(shù)據(jù)        SCON

33、1 = 0x40;                                   /清空接收及發(fā)送完成標(biāo)志位        SFRPAGE = OldSFRPAGE;        return ReData;                                 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論