UART通訊流控制方法

2021-09-30 08:24:11 字數 2076 閱讀 8812

談 這個問題之前我們先介紹另乙個概念,dce(data communication equipment資料通訊裝置)速度。它是指兩個modem之間即**線之間的傳輸速度,我們所說的56k指的就是這個速度。而dte(data terminal equipment資料終端裝置)速度是指從本地計算機到modem的傳輸速度,如果**線傳輸速率(dce速度)為56000bps,modem在接收 到資料後按v.42 bis協議解壓縮56000×4=115200bps,然後以此速率傳送給計算機,由此可見56k貓(使用v.42bis)的dte速度在理想狀態下都應 達到115200bps。

可用cts/rts或xon/xoff流量控制(flow control)

從上邊的介紹我們已 經了解到dte與dce速度之間存在很大差異,這樣在資料的傳送與接收過程當中很可能出現收方來不及接收的情況,這時就需要對發方進行控制,以免資料丟 失,這個過程就是所謂的流量控制。控制的方式有兩種,xon/xoff和cts/rts。前者由軟體產生控制碼,並將控制碼加入到資料流中,xoff表示 停止傳送,xon表示繼續傳送,此種方法通常用於2400bps左右的低速貓。cts(clear to send)/rts(request to send)則是通過計算機與modem之間的訊號線傳送控制訊號來實現流量控制的,即硬體方式。請求傳送訊號(rts)由計算機產生,通知modem可以 傳送資料,清除傳送訊號(cts)由modem產生,通知計算機可以傳送資料.由於硬體控制的反應速度要比軟體快,所以多用於高速modem。在使用 mnp,v.42以及傳真時也應使用硬體方式。

cts (clear to send) 允許傳送, 很多文章翻譯成清除傳送, 是不正確的.

cts 是對rts 的應答.

a向b傳送rts訊號,表明a要向b傳送若干資料,b收到rts後,向所有基站發出cts訊號,表明已準備就緒,a可以傳送

cts和rts是序列通訊中流控制的兩個管腳,本身成對出現。一般連線方式如下圖所示:

圖2 uart流控制示意圖。

具體地說,就是當接收方(uart2)認為可以接受uart資料時,將rts置為 有效位。傳送方(uart1)的cts管腳接收到此訊號後,才將資料進行傳送。一般來說,當uart資料接收快取大於兩個位元組空餘時,就可以將rts置為 有效接收。當然,od2101的uart接收緩衝區具有64位的位元組,使用者可以按照自己資料流量的需求定義rts。

一、遠距離通訊

第1和第2中情況是屬於遠距離通訊(傳輸距離大於15m的通訊)的例子,故一般要加數據機modem,因此使用的訊號線較多。注意:在以下各圖中,dte訊號為rs-232-c訊號,dte與計算機間的電平轉換電路未畫出。

1、採用modem(dce)和**網通訊時的訊號連線:

若在雙方modem之間採用普通**交換線進行通訊,除了需要2~8號訊號線外還要增加ri(22號)和dtr(20號)兩個訊號線進行聯絡,如圖1所示:

圖1dsr、dtr:數傳機(dce)準備好、資料終端(dte)準備好,只表示裝置本身可用。

首先,通過**機拔號呼叫對方,**交換台向對方發出拔號呼叫訊號,當對方dce收到該訊號後,使ri(振鈴訊號)有效,通知dte,已被呼叫。當對方「摘機」後,兩方建立了通訊鏈路。

若計算機要傳送資料至對方,首先通過介面電路(dte)發出rts(請求傳送)訊號。此時,若dce(modem)允許 傳送,則向dte回答cts(允許傳送)訊號。一般可直接將rts/cts接高電平,即只要通訊鏈路已建立,就可傳送訊號。(rts/cts可只用於半雙 工系統中作傳送方式和接收方式的切換。

當dte獲得cts訊號後,通過txd線向dce發出序列訊號,dce(modem)將這些數碼訊號調製成模擬訊號(又稱載波訊號),傳向對方。

計算機向dte「資料輸出暫存器」傳送新的資料前,應檢查modem狀態和資料輸出暫存器為空。當對方的dce收到載波 訊號後,向對方的dte發出dcd訊號(資料載波檢出),通知其dte準備接收,同時,將載波訊號解調為資料訊號,從rxd線上送給dte,dte通過串 行接收移位暫存器對接收到的位流進行移位,當收到1個字元的全部位流後,把該字元的資料位送到資料輸入暫存器,cpu可以從資料輸入暫存器讀取字元。

2、採用專用**線通訊:在通訊雙方的modem之間採用**線進行通訊,則只要使用2~8號訊號線進行聯絡與控制。不需要**機、振鈴訊號ri和dtr訊號,其訊號線的連線如圖2那樣。

串列埠通訊流控制

我們在序列通訊處理中,常常看到rts cts和xon xoff這兩個選項,這就是兩個流控制的選項,目前流控制主要應用於modem的資料通訊中,但對普通rs 232程式設計,了解一點這方面的知識是有好處的.那麼,流控制在序列通訊中有何作用,在編制序列通訊程式怎樣應用呢?這裡我們就來談談這個問題。流控制...

串列埠通訊流控制

在序列通訊處理中,常常看到rts cts和xon xoff這兩個選項,這就是兩個流控制的選項,目前流控制主要應用於數據機的資料通訊中,但對普通rs232程式設計,了解一點這方面的知識是有好處的。那麼,流控制在序列通訊中有何作用,在編制序列通訊程式怎樣應用呢?1.流控制在序列通訊中的作用 這裡講到的 ...

UART通訊收發

在使用串列埠時,只需掌握zigbee協議棧提供的串列埠操作相關的三個函式即可。uint8 haluartopen uint8 port,haluartcfg t config uint16 haluartread uint8 port,uint8 buf,uint16 len uint16 halu...