關於 UART 的 RTS 和 CTS

2021-06-07 08:38:36 字數 3247 閱讀 3938

rts (request to send) 請求傳送,output

談這個問題之前我們先介紹另乙個概念,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 的應答.input

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那樣。

二、近距離通訊:

當通訊距離較近時,可不需要modem,通訊雙方可以直接連線,這種情況下,只需使用少數幾根訊號線。最簡單的情況,在通訊中根本不需要rs-232c的控制聯絡訊號,只需三根線(傳送線、接收線、訊號地線)便可實現全雙工非同步序列通訊,即是這裡要討論的第一種情況。

無modem時,最大通訊距離按如下方式計算:

rs-232c標準規定:當誤位元速率小於4%時,要求導線的電容值應小於2500pf。對於普通導線,其電容值約為170pf/m。則允許距離l=2500pf/(170pf/m)=15m

這一距離的計算,是偏於保守的,實際應用中,當使用9600bps,普通雙絞遮蔽線時,距離可達30~35公尺。

1、零modem 的最簡連線(3線制)

圖3是零modem方式的最簡單連線(即三線連線),圖中的2號線與3號線交叉連線是因為在直連方式時,把通訊雙方都當作資料終端裝置看待,雙方都可發也可收。在這種方式下,通訊雙方的任何一方,只要請求傳送rts有效和資料終端準備好dtr有效就能開始傳送和接收。

(1)rts與cts互聯:只要請求傳送,立即得到允許

(2)dtr與dsr互聯:只要本端準備好,認為本端立即可以接收(dsr、數傳機準備好)。

2、零modem標準連線:

如果想在直接連線時,而又考慮到rs-232c的聯絡控制訊號,則採用零modem方式的標準連線方法,其通訊雙方訊號線安排如下1-2-3-4-5順序所演示的那樣。

無modem的標準聯線(7線制)如圖所示:

從中可以看出,rs-232c介面標準定義的所有訊號線都用到了,並且是按照dte和dce之間資訊交換協議的要求進行連線的,只不過是把dte自己發出的訊號線送過來,當作對方dce發來的訊號,因此,又把這種連線稱為雙叉環迴介面。

雙方的握手訊號關係如下(注:甲方乙方並未在圖中標出):

(1)當甲方的dte準備好,發出dtr訊號,該訊號直接聯至乙方的ri(振鈴訊號)和dsr(數傳機準備好)。即只要甲方準備好,乙方立即產生呼叫(ri)有效,並同時準備好(dsr)。儘管此時乙方並不存在dce(數傳機)。

(2)甲方的rts和cts相連,並與乙方的dcd互連。即:一旦甲方請求傳送(rts),便立即得到允許(cts),同時,使乙方的dcd有效,即檢測到載波訊號。

(3)甲方的txd與乙方的rxd相連,一發一收。

UART通訊中流控RTS和CTS的理解

一 流控,顧名思義就是流量控制的意思。目的是協調收發雙方,使資料不會丟失。二 很多人用了串列埠很久都不知道這回事,這是因為很多場合確實沒有必要。收發雙方波特率固定,並且接受陣列足夠大,這時不會出現接收方接受陣列溢位導致資料丟失的情況,所以,以我的理解,使用流控的主要目的就是在資料量大,有可能出現接受...

UART中的硬體流控RTS與CTS

5 23 2013 5 13 04 pm at rock chips inshenzhen 最近太忙了,沒時間寫對ucos ii的移植,先將工作中容易搞錯的乙個知識點記錄下來,關於cts與rts的。在rs232中本來cts 與rts 有明確的意義,但自從賀氏 hayes 推出了聰明貓 smartmo...

關於定位和流量統計的CTS問題

2.關於流量統計的cts case 1 預設情況下,流量統計功能是關閉,只需要將對應的開關開啟即可 2 開啟開關的方法 a 配置編譯環境,選擇產品 b 進入原始碼根目錄,輸入make kernelconfig命令 c 在彈出的視覺化選單中依次選擇device drivers misc devices...