小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

串行接口的前世今生----RTS和CTS

 我是山芋 2011-08-03

    很久很久以前,計算機(jī)還沒有出現(xiàn),那時就已經(jīng)存在了(計算機(jī))史前的串口設(shè)備(電傳打字機(jī),工控測量設(shè)備,通信調(diào)制解調(diào)器),為了連接這些串口,EIA制定了RS232標(biāo)準(zhǔn),采用DB25接插件,支持同步和異步串口,D型的接口可以有效防止插反。標(biāo)準(zhǔn)化給使用帶來了便利。
    時光荏苒,個人計算機(jī)出現(xiàn)了,這些已有的串口設(shè)備毫無疑問地成為了最初的外設(shè),自然而然地RS232標(biāo)準(zhǔn)被個人計算機(jī)采納。但是設(shè)備制造商傾向于體積更小,成本更低的接口,因此,將DB25中未使用的和支持同步模式的引腳去掉,形成DB9。最初的情況相當(dāng)混亂,因為DB9只定義了信號,卻沒有指定信號和引腳的對應(yīng)關(guān)系,各個制造商只能自行定義。幸運(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)備好。主流控信號。
    RTS,CTS------請求發(fā)送/清除發(fā)送。用于半雙工時,收發(fā)切換。屬于輔助流控信號。半雙工的意思是說,發(fā)的時候不收,收的時候不發(fā)。那么怎么區(qū)分收發(fā)呢?缺省時是DCE向DTE發(fā)送數(shù)據(jù),當(dāng)DTE決定向DCE發(fā)數(shù)據(jù)時,先有效RTS,表示DTE希望向DCE發(fā)送,一般DCE不能馬上轉(zhuǎn)換收發(fā)狀態(tài),DTE就通過監(jiān)測CTS是否有效來判斷可否發(fā)送,這樣避免了DTE在DCE未準(zhǔn)備好時發(fā)送所導(dǎo)致的數(shù)據(jù)丟失。
    全雙工時,這兩個信號一直有效即可。
    
    隨著計算機(jī)的日益普及,很多非RS232的串口也要接入PC機(jī),如果為每一種新出現(xiàn)的串口都增加一個新的I/O口顯然不現(xiàn)實,因為PC后面板位置有限,因此,將RS232串口和非RS232串口都通過RS232口接入是最佳方案。UART的U(通用)指的就是這個意思。早期ROM BIOS和DOS里的通信軟件都是為RS232設(shè)計的,在沒有檢測到DCD有效前不會發(fā)送數(shù)據(jù),因此,就連發(fā)送一個字符這樣樸素的應(yīng)用也要給出DCD、DTR、DSR等控制信號。因此,串口接頭上要將一些控制線短接,或者干脆繞過系統(tǒng)軟件自己寫通信程序。
    到此,UART的涵義就總結(jié)為:通用的 異步 (串行) I/O口。
    就在UART冠以通用二字,準(zhǔn)備一統(tǒng)江湖的時候,制造商們不滿于它的速度、體積和靈活性(軟件可配置),推出了USB和1394串口。目前,筆記本上的UART串口有被取消的趨勢,因而有網(wǎng)友發(fā)出了“沒有串口,吾誰與歸”的慨嘆,古今多少事,都付笑談中,USB取代UART是后話,暫且不表。
    話說自從賀氏(HAYES)公司推出了聰明貓(SmartModem),他們制定的MODEM接口就成了業(yè)界標(biāo)準(zhǔn),自此以后,所有公司制造的兼容貓都符合賀氏標(biāo)準(zhǔn)(連AT指令也兼容,大家一起抄他唄)。
    細(xì)觀賀氏制定的MODEM串口,與RS232標(biāo)準(zhǔn)大不相同。DTR在整個通信過程中一直保持有效,DSR在MODEM上電后/可以撥號前有效(取決于軟件對DSR的理解),在通信過程的任意時刻,只要DTR/DSR無效,通信過程立即終止。在某種意義上,這也可以算是流控,但肯定不是RS232所指的那種主流控。如果拘泥于RS232,你是不會理解DTR和DSR的用途的。
    賀氏不但改了DTR和DSR,竟然連RTS和CTS的涵義也重新定義了。因此,RTS和CTS已經(jīng)不具有最開始的意義了。從字面理解RTS和CTS,是用于半雙工通信的,當(dāng)DTE想從收模式改為發(fā)模式時,就有效RTS請求發(fā)送,DCE收到RTS請求后不能立即完成轉(zhuǎn)換,需要一段時間,然后有效CTS通知DTE:DCE已經(jīng)轉(zhuǎn)到發(fā)模式,DTE可以開始發(fā)送了。在全雙工時,RTS和CTS都缺省置為有效即可。然而,在賀氏的MODEM串口定義中,RTS和CTS用于硬件流控,和什么勞什子的全雙工/半雙工一點(diǎn)關(guān)系也沒有。
    注意,硬件流控是靠軟件實現(xiàn)的,之所以強(qiáng)調(diào)“硬件”二字,僅僅是因為硬件流控提供了用于流量情況指示的硬件連線,并不是說,你只要把線連上,硬件就能自己流控。如果軟件不支持,光連上RTS和CTS是沒有用的。
    RTS和CTS硬件流控的軟件算法如下:(RTS有效表示PC機(jī)可以收,CTS有效表示MODEM可以收,這兩個信號互相獨(dú)立,分別指示一個方向的流量情況。)

    dengm 發(fā)表于 2005-1-14 07:52 侃單片機(jī)
    
    PC端處理:
      發(fā). 當(dāng) 發(fā)現(xiàn)(不一定及時發(fā)現(xiàn)) CTS (-3v to -15v)無效時,停止發(fā)送,
          當(dāng) 發(fā)現(xiàn)(不一定及時發(fā)現(xiàn)) CTS (3v to 15v)有效時,恢復(fù)發(fā)送;

      收. 0<M<N<LEN_OF_RX_BUFFERS
          當(dāng)接收buffers中的bytes<M 時,給 RTS 有效信號(+3v to +15v),
          當(dāng)接收buffers中的bytes>N 時,給 RTS 無效信號(-3v to -15v);

    MODEM端處理:
          同上,但RTS與CTS交換。
    
    你迷惑的原因是因為你學(xué)習(xí)的是RS232標(biāo)準(zhǔn),卻使用賀氏標(biāo)準(zhǔn)的貓,兩個標(biāo)準(zhǔn)風(fēng)馬牛不相及。

* - 本貼最后修改時間:2005-3-22 17:05:50 修改者:gdtyy

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多