面向小型全自動生化分析儀的同步可靠的UART通信_第1頁
面向小型全自動生化分析儀的同步可靠的UART通信_第2頁
面向小型全自動生化分析儀的同步可靠的UART通信_第3頁
面向小型全自動生化分析儀的同步可靠的UART通信_第4頁
面向小型全自動生化分析儀的同步可靠的UART通信_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、程中完成數據存儲與處理。由于中斷方式下CPU利用率較高,也能夠實現發送與接收的同步1,因此在CPU任務簡單的系統中,一般采用中斷方式實現UART數據通信。但是小型全自動化生化分析儀控制系統需要實現多電機位置的閉環控制、多傳感器的數據采集及處理、病人資料的傳輸處理等任務,采用中斷方式的UART通信時,一方面帶來中斷的優先級分配問題,當系統處于更高優先級的中斷處理子程序中時,導致串行通信的中斷不能及時被響應,造成數據丟失;另一方面為協調雙處理器間各部件的協同工作,有時不允許程序的正常執行流程被打斷,禁止中斷響應。為了保證串口通信的可靠性與穩定性,在設計小型全自動生化分析儀的控制系統時,采用了基于3

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

5、051F060的UART    C8051F060 是SiLab公司推出的混合信號系統芯片,是高度集成的片上系統,具有高速指令處理能力3。C8051F060有2個UART口,并沒有分配在固定的I/O端口上,而是需要通過優先權交叉開關譯碼器進行分配。“交叉開關”按優先權順序將端口03的引腳分配給器件上的數字外設。C8051F060的UART串口與端口的連接有多種形式,靈活可靠。2 傳輸層 傳輸層實現數據流的傳輸,并負責傳輸控制,具備流量控制的功能。其目的是為應用層提供可靠無誤的數據傳輸。傳輸層的服務要經歷傳輸連接建立階段和數據傳送階段2。該層由軟硬件結合實現。硬件實

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

7、原理如下:    (1)當發送端要發送數據時,發出第1次握手信號,通知接收端,第1次握手信號始終有效,直到收到接收端對第1次握手信號的應答信號,即第2次握手信號。當發送端接收到第2次握手信號后,使第1次握手信號無效,發出對第2次握手信號的應答信號,即第3次握手信號,并隨即發送數據。至此,3次握手協議完成,發送端與接收端實現了數據的同步傳輸。 (2)當接收端要接收數據時,首先等待發送端發出的第1次握手信號,當發送端發送第1次握手信號后,表明發送端已經準備好要發送數據,接收端將第2次握手信號持續一段時間后清除,等待第3次握手信號。檢測到第3次握手信號后,隨即開始接收數

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

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

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

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

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

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

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

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

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

17、    /禁止接收,清空發送及接收中斷標志    SFRPAGE = OldSFRPAGE;            /恢復頁面地址    傳輸層數據傳輸軟件實現元數據傳輸的功能,在這里實現傳輸層的3次握手協議。依據3次握手協議的設計原理,主機發送軟件的實現如下:    while(P0_6=1)         

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

19、號    工作時序為:當主機需要發送數據時,首先將P0_7設置為低,即為第1次握手信號,從機檢測到該信號后,知道主機將發送數據,于是發出第2次握手信號,將與主機P0_6相連的引腳置低。主機檢測到P0_6為低電平,即第2次握手信號后,將發出第3次握手信號,即把P0_7設置為高電平,并隨即發送數據。    從機接收數據時的軟件實現如下:    while(P5_5=1)             

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

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

22、  Delay1us(1); P0_7=1;          /主機發送的宏定義    #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、         /從機接收的宏定義    主機發送與從機接收元數據的函數分別如下:void  MasterSendUART (Uchar sdata)        Send;                       

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

25、; SFRPAGE = UART_PAGE;        TI1 = 0;                                            /清除發送完成中斷標志     &#

26、160;  SBUF1 = sdata;                                  /發送數據        while(TI1=0);     

27、                             /等待發送完成        TI1 = 0;             

28、                               /清空發送完成標志        SFRPAGE = OldSFRPAGE;         Uchar Slaver

29、ReceiveUART(void)        Receive;                                       

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

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

32、#160;     /等待接收完成        ReData = SBUF1;                                 /接收數據        SCON

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

溫馨提示

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

評論

0/150

提交評論