最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

UART通訊中硬件流控RTS/CTS,DTR/DSR

2023-07-30 10:01 作者:菜的要扣腳  | 我要投稿

如果UART只有RX、TX兩個(gè)信號(hào),要流控的話只能是軟流控;

如果有RX,TX,CTS,RTS 四個(gè)信號(hào),則多半是支持硬流控的UART;

如果有 RX,TX,CTS ,RTS ,DTR,DSR 六個(gè)信號(hào)的話,RS232標(biāo)準(zhǔn)的可能性比較大。

在這里插入圖片描述


計(jì)算機(jī)和非貓的連接(null modem connection),非貓?jiān)O(shè)備包括開發(fā)板,MCU(STM32,PIC,ARM…)

在這里插入圖片描述

RTS與CTS的含義

一、RS232標(biāo)準(zhǔn)中的RTS與CTS
RTS,CTS------請(qǐng)求發(fā)送/清除發(fā)送,用于半雙工時(shí)的收發(fā)切換,屬于輔助流控信號(hào)。半雙工的意思是說,發(fā)的時(shí)候不收,收的時(shí)候不發(fā)。那么怎么區(qū)分收發(fā)呢?缺省時(shí)是DCE向DTE發(fā)送數(shù)據(jù),當(dāng)DTE決定向DCE發(fā)數(shù)據(jù)時(shí),先有效RTS,表示DTE希望向DCE發(fā)送。一般DCE不能馬上轉(zhuǎn)換收發(fā)狀態(tài),DTE就通過監(jiān)測(cè)CTS是否有效來判斷可否發(fā)送,這樣避免了DTE在DCE未準(zhǔn)備好時(shí)發(fā)送所導(dǎo)致的數(shù)據(jù)丟失。
二、MODEM硬件流控中的RTS與CTS
按照SIMCOM公司的解釋,RTS和CTS是獨(dú)立,
1.RTS是模塊的輸入端,用于MCU通知模塊,MCU是否準(zhǔn)備好,模塊是否可向MCU發(fā)送信息,RTS的有效電平為低。
2.CTS是模塊的輸出端,用于模塊通知MCU,模塊是否準(zhǔn)備好,MCU是否可向模塊發(fā)送信息,CTS的有效電平為低
從文字看,RTS和CTS是獨(dú)立的,不存在每次單向數(shù)據(jù)傳輸?shù)陌l(fā)起者問題。如果主機(jī)輸出RTS有效,那么模塊有數(shù)據(jù)就會(huì)發(fā)往主機(jī);如果模塊輸出CTS有效,那么主機(jī)就可以將數(shù)據(jù)送達(dá)模塊接收。
三、通信協(xié)議中的RTS與CTS
RTS/CTS協(xié)議即請(qǐng)求發(fā)送/允許發(fā)送協(xié)議,相當(dāng)于一種握手協(xié)議,主要用來解決"隱藏終端"問題?!半[藏終端”(Hidden Stations)是指,基站A向基站B發(fā)送信息,基站C未偵測(cè)到A也向B發(fā)送,故A和C同時(shí)將信號(hào)發(fā)送至B,引起信號(hào)沖突,最終導(dǎo)致發(fā)送至B的信號(hào)都丟失了。“隱藏終端"多發(fā)生在大型單元中(一般在室外環(huán)境),這將帶來效率損失,并且需要錯(cuò)誤恢復(fù)機(jī)制。當(dāng)需要傳送大容量文件時(shí),尤其需要杜絕"隱藏終端"現(xiàn)象的發(fā)生。IEEE802.11提供了如下解決方案。在參數(shù)配置中,若使用RTS/CTS協(xié)議,同時(shí)設(shè)置傳送上限字節(jié)數(shù)----一旦待傳送的數(shù)據(jù)大于此上限值時(shí),即啟動(dòng)RTS/CTS握手協(xié)議:首先,A向B發(fā)送RTS信號(hào),表明A要向B發(fā)送若干數(shù)據(jù),B收到RTS后,向所有基站發(fā)出CTS信號(hào),表明已準(zhǔn)備就緒,A可以發(fā)送,其余基站暫時(shí)"按兵不動(dòng)”,然后,A向B發(fā)送數(shù)據(jù),最后,B接收完數(shù)據(jù)后,即向所有基站廣播ACK確認(rèn)幀,這樣,所有基站又重新可以平等偵聽、競爭信道了。
附:UART串口歷史
很久很久以前,計(jì)算機(jī)還沒有出現(xiàn),那時(shí)就已經(jīng)存在了(計(jì)算機(jī))史前的串口設(shè)備(電傳打字機(jī),工控測(cè)量設(shè)備,通信調(diào)制解調(diào)器),為了連接這些串口,EIA制定了RS232標(biāo)準(zhǔn),采用DB25接插件,支持同步和異步串口,D型的接口可以有效防止插反。標(biāo)準(zhǔn)化給使用帶來了便利。
時(shí)光荏苒,個(gè)人計(jì)算機(jī)出現(xiàn)了,這些已有的串口設(shè)備毫無疑問地成為了最初的外設(shè),自然而然地RS232標(biāo)準(zhǔn)被個(gè)人計(jì)算機(jī)采納。但是設(shè)備制造商傾向于體積更小,成本更低的接口,因此,將DB25中未使用的和支持同步模式的引腳去掉,形成DB9。最初的情況相當(dāng)混亂,因?yàn)镈B9只定義了信號(hào),卻沒有指定信號(hào)和引腳的對(duì)應(yīng)關(guān)系,各個(gè)制造商只能自行定義。幸運(yùn)的是,IBM的PC成了工業(yè)標(biāo)準(zhǔn),DB9逐漸統(tǒng)一到IBM的定義上來。
DB9只有9根線,遵循RS232標(biāo)準(zhǔn)。定義如下:
DTR,DSR------DTE設(shè)備準(zhǔn)備好/DCE設(shè)備準(zhǔn)備好。主流控信號(hào)。
RTS,CTS------請(qǐng)求發(fā)送/清除發(fā)送。用于半雙工時(shí),收發(fā)切換。屬于輔助流控信號(hào)。半雙工的意思是說,發(fā)的時(shí)候不收,收的時(shí)候不發(fā)。那么怎么區(qū)分收發(fā)呢?缺省時(shí)是DCE向DTE發(fā)送數(shù)據(jù),當(dāng)DTE決定向DCE發(fā)數(shù)據(jù)時(shí),先有效RTS,表示DTE希望向DCE發(fā)送,一般DCE不能馬上轉(zhuǎn)換收發(fā)狀態(tài),DTE就通過監(jiān)測(cè)CTS是否有效來判斷可否發(fā)送,這樣避免了DTE在DCE未準(zhǔn)備好時(shí)發(fā)送所導(dǎo)致的數(shù)據(jù)丟失。全雙工時(shí),這兩個(gè)信號(hào)一直有效即可。
隨著計(jì)算機(jī)的日益普及,很多非RS232的串口也要接入PC機(jī),如果為每一種新出現(xiàn)的串口都增加一個(gè)新的I/O口顯然不現(xiàn)實(shí),因?yàn)镻C后面板位置有限,因此,將RS232串口和非RS232串口都通過RS232口接入是最佳方案。UART的U(通用)指的就是這個(gè)意思。早期ROM?BIOS和DOS里的通信軟件都是為RS232設(shè)計(jì)的,在沒有檢測(cè)到DCD有效前不會(huì)發(fā)送數(shù)據(jù),因此,就連發(fā)送一個(gè)字符這樣樸素的應(yīng)用也要給出DCD、DTR、DSR等控制信號(hào)。因此,串口接頭上要將一些控制線短接,或者干脆繞過系統(tǒng)軟件自己寫通信程序。
到此,UART的涵義就總結(jié)為:通用的 異步 (串行) I/O口。
就在UART冠以通用二字,準(zhǔn)備一統(tǒng)江湖的時(shí)候,制造商們不滿于它的速度、體積和靈活性(軟件可配置),推出了USB和1394串口。目前,筆記本上的UART串口有被取消的趨勢(shì),USB取代UART是后話,暫且不表。
話說自從賀氏(Hayes)公司推出了聰明貓(SmartModem),他們制定的MODEM接口就成了業(yè)界標(biāo)準(zhǔn),自此以后,所有公司制造的兼容貓都符合賀氏標(biāo)準(zhǔn)(連AT指令也兼容)。
細(xì)觀賀氏制定的MODEM串口,與RS232標(biāo)準(zhǔn)大不相同。DTR在整個(gè)通信過程中一直保持有效,DSR在MODEM上電后/可以撥號(hào)前有效(取決于軟件對(duì)DSR的理解),在通信過程的任意時(shí)刻,只要DTR/DSR無效,通信過程立即終止。在某種意義上,這也可以算是流控,但肯定不是RS232所指的那種主流控。如果拘泥于RS232,你是不會(huì)理解DTR和DSR的用途的。
賀氏不但改了DTR和DSR,竟然連RTS和CTS的涵義也重新定義了。因此,RTS和CTS已經(jīng)不具有最開始的意義了。從字面理解RTS和CTS,是用于半雙工通信的,當(dāng)DTE想從收模式改為發(fā)模式時(shí),就有效RTS請(qǐng)求發(fā)送,DCE收到RTS請(qǐng)求后不能立即完成轉(zhuǎn)換,需要一段時(shí)間,然后有效CTS通知DTE:DCE已經(jīng)轉(zhuǎn)到發(fā)模式,DTE可以開始發(fā)送了。在全雙工時(shí),RTS和CTS都缺省置為有效即可。然而,在賀氏的MODEM串口定義中,RTS和CTS用于硬件流控,和什么全雙工/半雙工一點(diǎn)關(guān)系也沒有。 注意,硬件流控是靠軟件實(shí)現(xiàn)的,之所以強(qiáng)調(diào)“硬件”二字,僅僅是因?yàn)橛布骺靥峁┝擞糜诹髁壳闆r指示的硬件連線,并不是說,你只要把線連上,硬件就能自己流控。如果軟件不支持,光連上RTS和CTS是沒有用的。
RTS和CTS硬件流控的軟件算法如下:(RTS有效表示PC機(jī)可以收,CTS有效表示MODEM可以收,這兩個(gè)信號(hào)互相獨(dú)立,分別指示一個(gè)方向的流量情況。)
PC端處理:
   發(fā).   當(dāng)發(fā)現(xiàn)(不一定及時(shí)發(fā)現(xiàn)) CTS (-3v to -15v)無效時(shí),停止發(fā)送,
       當(dāng)發(fā)現(xiàn)(不一定及時(shí)發(fā)現(xiàn)) CTS (3v to 15v)有效時(shí),恢復(fù)發(fā)送;
   收.    當(dāng)接收buffers中的bytes當(dāng)接收buffers中的bytes>N 時(shí),給 RTS 無效信號(hào)(-3v to -15v);
MODEM端處理:
同上,但RTS與CTS交換。
在RS232中本來CTS 與RTS 有明確的意義,但自從賀氏(HAYES ) 推出了聰明貓(SmartModem)后就有點(diǎn)混淆了。在RS232中RTS 與CTS 是用來半雙工模式下的方向切換;HAYES Modem中的RTS ,CTS 是用來進(jìn) 行硬件流控的。通常UART的RTC、CTS 的含義指后者,即用來做硬流控的。
硬流控的RTS 、CTS :RTS (Require To Send,發(fā)送請(qǐng)求)為輸出信號(hào),用于指示本設(shè)備準(zhǔn)備好可接收;CTS(Clear To Send,發(fā)送清除)為輸入信號(hào),有效時(shí)停止發(fā)送。假定A、B兩設(shè)備通信,A設(shè)備的RTS 連接B設(shè)備的CTS ;A設(shè)備的CTS 連接B設(shè)備 的RTS 。 前一路信號(hào)控制B設(shè)備的發(fā)送,后一路信號(hào)控制A設(shè)備的發(fā)送。對(duì)B設(shè)備的發(fā)送(A設(shè)備接收)來說,如果A設(shè)備接收緩沖快滿的時(shí)發(fā)出RTS 信號(hào)(意思 通知B設(shè)備停止發(fā)送),B設(shè)備通過CTS 檢測(cè)到該信號(hào),停止發(fā)送;一段時(shí)間后A設(shè)備接收緩沖有了空余,發(fā)出RTS 信號(hào),指示B設(shè)備開始發(fā)送數(shù)據(jù)。A設(shè)備發(fā)(B設(shè)備接收) 類似。上述功能也能在數(shù)據(jù)流中插入Xoff(特殊字符)和Xon(另一個(gè)特殊字符)信號(hào)來實(shí)現(xiàn)。A設(shè)備一旦接收到B設(shè)備發(fā)送過來的Xoff,立刻停止發(fā) 送;反之,如接收到B設(shè)備發(fā)送過來的Xon,則恢復(fù)發(fā)送數(shù)據(jù)給B設(shè)備。同理,B設(shè)備也類似,從而實(shí)現(xiàn)收發(fā)雙方的速度匹配。
半雙工的方向切換:RS232中使用DTR(Date Terminal Ready,數(shù)據(jù)終端準(zhǔn)備)與DSR(Data Set Ready ,數(shù)據(jù)設(shè)備準(zhǔn)備好)進(jìn)行主流控,類似上述的RTS 與CTS 。對(duì)半雙工的通信的DTE(Date Terminal Equipment,數(shù)據(jù)終端設(shè)備)與DCE(Data circuit Equipment )來說,默認(rèn)的方向是DTE接收,DCE發(fā)送。如果DTE要發(fā)送數(shù)據(jù),必須發(fā)出RTS 信號(hào),請(qǐng)求發(fā)送數(shù)據(jù)。DCE收到后如果 空閑則發(fā)出CTS 回 應(yīng)RTS 信 號(hào),表示響應(yīng)請(qǐng)求,這樣通信方向就變?yōu)镈TE->TCE,同時(shí)RTS 與CTS 信號(hào)必須一直保持。從這里可以看出,CTS ,TRS雖 然也有點(diǎn)流控的意思(如CTS 沒有發(fā)出,DTE也不能發(fā)送數(shù)據(jù)),但主要是用來進(jìn)行方向切換的。
如果UART只有RX、TX兩個(gè)信號(hào),要流控的話只能是軟流控;如果有RX,TX,CTS ,RTS 四個(gè)信號(hào),則多半是支持硬流控的UART;如果有 RX,TX,CTS ,RTS ,DTR,DSR 六個(gè)信號(hào)的話,RS232標(biāo)準(zhǔn)的可能性比較大。
順便提一下:
DCD( Data Carrier Detect, 數(shù)據(jù)載波檢測(cè)):DCE向DTE指示,線路上檢測(cè)到載波。
RI(Ring Indicator,振鈴指示):DCE向DTE指示,有呼叫接入。


UART通訊中硬件流控RTS/CTS,DTR/DSR的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
泗阳县| 崇州市| 唐海县| 革吉县| 永安市| 泸定县| 克拉玛依市| 疏勒县| 鹤山市| 屏东市| 临沭县| 湛江市| 缙云县| 淅川县| 博白县| 天等县| 榆社县| 长乐市| 诏安县| 南昌市| 华容县| 墨竹工卡县| 黄冈市| 治县。| 罗江县| 达拉特旗| 兴国县| 定西市| 宝鸡市| 武义县| 阳山县| 建阳市| 闽侯县| 灌云县| 满城县| 汝阳县| 义马市| 准格尔旗| 枞阳县| 邮箱| 松潘县|