CTS

清除發送英文縮寫

CTS:Clear to send,在計算機UART引腳中定義表示為允許發送,在計算機中常與RTS( request to send, 請求發送信號 )一起被提到,是UART通訊過程中flow control的兩個引腳,是成對出現的。

簡介


CTS:Clear to send,在計算機UART引腳中定義表示為允許發送,很多文章翻譯成清除發送,是不正確的。

詳細信息


RTS和CTS用於硬體流控
很久很久以前,計算機還沒有出現,那時就已經存在了(計算機)史前的串口設備(電傳打字機,工控測量設備,通信數據機),為了連接這些串口EIA制定了RS232標準,採用DB25接插件,支持同步和非同步串口,D型的介面可以有效防止插反。標準化給使用帶來了便利。
時光荏苒,個人計算機出現了,這些已有的串口設備毫無疑問地成為了最初的外設,自然而然地RS232標準被個人計算機採納。但是設備製造商傾向於體積更小,成本更低的介面,因此,將DB25中未使用的和支持同步模式的引腳去掉,形成DB9。最初的情況相當混亂,因為DB9隻定義了信號,卻沒有指定信號和引腳的對應關係,各個製造商只能自行定義。幸運的是,IBM的PC成了工業標準,DB9逐漸統一到IBM的定義上來。
DB9隻有9根線,遵循RS232標準。定義如下:
DTR,DSR------DTE設備準備好/DCE設備準備好。主流控信號。
RTS,CTS------請求發送/清除發送。用於半雙工時,收發切換。屬於輔助流控信號。半雙工的意思是說,發的時候不收,收的時候不發。那麼怎麼區分收發呢?預設時是DCE向DTE發送數據,當DTE決定向DCE發數據時,先有效RTS,表示DTE希望向DCE發送,一般DCE不能馬上轉換收髮狀態,DTE就通過監測CTS是否有效來判斷可否發送,這樣避免了DTE在DCE未準備好時發送所導致的數據丟失。
全雙工時,這兩個信號一直有效即可。
隨著計算機的日益普及,很多非RS232的串口也要接入PC機,如果為每一種新出現的串口都增加一個新的I/O口顯然不現實,因為PC後面板位置有限,因此,將RS232串口和非RS232串口都通過RS232口接入是最佳方案。UART的U(通用)指的就是這個意思。早期ROM BIOS和DOS里的通信軟體都是為RS232設計的,在沒有檢測到DCD有效前不會發送數據,因此,就連發送一個字元這樣樸素的應用也要給出DCD、DTR、DSR等控制信號。因此,串口接頭上要將一些控制線短接,或者乾脆繞過系統軟體自己寫通信程序。
到此,UART的涵義就總結為:通用的 非同步 (串列) I/O口。
就在UART冠以通用二字,準備一統江湖的時候,製造商們不滿於它的速度、體積和靈活性(軟體可配置),推出了USB和1394串口。目前,筆記本上的 UART串口有被取消的趨勢,因而有網友發出了“沒有串口,吾誰與歸”的慨嘆,古今多少事,都付笑談中,USB取代UART是后話,暫且不表。
話說自從賀氏(Hayes)公司推出了聰明貓(SmartModem),他們制定的MODEM介面就成了業界標準,自此以後,所有公司製造的兼容貓都符合賀氏標準(連AT指令也兼容,大家一起抄他唄)。
細觀賀氏制定的MODEM串口,與RS232標準大不相同。DTR在整個通信過程中一直保持有效,DSR在MODEM上電后/可以撥號前有效(取決於軟體對DSR的理解),在通信過程的任意時刻,只要DTR/DSR無效,通信過程立即終止。在某種意義上,這也可以算是流控,但肯定不是RS232所指的那種主流控。如果拘泥於RS232,你是不會理解DTR和DSR的用途的。
賀氏不但改了DTR和DSR,竟然連RTS和CTS的涵義也重新定義了。因此,RTS和CTS已經不具有最開始的意義了。從字面理解RTS和CTS,是用於半雙工通信的,當DTE想從收模式改為發模式時,就有效RTS請求發送,DCE收到RTS請求后不能立即完成轉換,需要一段時間,然後有效CTS通知DTE:DCE已經轉到發模式,DTE可以開始發送了。在全雙工時,RTS和CTS都預設置為有效即可。然而,在賀氏的MODEM串口定義中,RTS和CTS用於硬體流控,和什麼勞什子的全雙工/半雙工一點關係也沒有。
注意,硬體流控是靠軟體實現的,之所以強調“硬體”二字,僅僅是因為硬體流控提供了用於流量情況指示的硬體連線,並不是說,你只要把線連上,硬體就能自己流控。如果軟體不支持,光連上RTS和CTS是沒有用的。
RTS和CTS硬體流控的軟體演演算法如下:(RTS有效表示PC機可以收,CTS有效表示MODEM可以收,這兩個信號互相獨立,分別指示一個方向的流量情況。)
dengm 發表於 2005-1-14 07:52 侃單片機
PC端處理:
發. 當 發現(不一定及時發現) CTS (-3v to -15v)無效時,停止發送,
當 發現(不一定及時發現) CTS (3v to 15v)有效時,恢複發送;
收. 0
當接收buffers中的bytes
當接收buffers中的bytes>N 時,給 RTS 無效信號(-3v to -15v);
MODEM端處理:
同上,但RTS與CTS交換。
你迷惑的原因是因為你學習的是RS232標準,卻使用賀氏標準的貓,兩個標準風馬牛不相及。
  • 目錄