串口与modem流量控制大全(2)
PC端處理:
????本端發送
??????????當 發現(不一定及時發現) CTS (-3V to -15V)無效時,停止發送,
??????????當 發現(不一定及時發現) CTS (3V to 15V)有效時,恢復發送;
????本端接收
??????????0<M<N<LEN_OF_RX_BUFFERS(不要在處于邊界時才給出指示,否則對端很有可能來不及停發而造成本端接受緩沖區溢出。)
??????????當接收buffers中的bytes<M 時,給 RTS 有效信號(+3v to +15v),
??????????當接收buffers中的bytes>N 時,給 RTS 無效信號(-3v to -15v);
???
????MODEM端處理:
??????????同上,但RTS與CTS交換
????圖1表示DTE向DCE發送數據時的流控過程。DTE和DCE一般都會有一定容量的FIFO(先入先出)緩沖區,例如16字節。DTE以設定的波特率(如115200)向DCE發送數據,當DCE的FIFO緩沖區快滿時,DCE使CTS無效,DTE軟件檢測到此信號后停止發送。同時DCE繼續向電話線上發送數據,一旦發出,DCE的FIFO就變成不滿,CTS恢復有效,允許DTE繼續寫入。串口波特率只是接口速率,不是Modem的實際傳輸速率,一般發送都快于接收,為避免溢出丟失數據,均需要接收端控制發送端發送速度,即流控。
????DCE向DTE發送數據用RTS進行流控,過程與上面講的類似。
????流控在通信里的作用非常重要,它能使發送和接收保持均衡,避免數據因為收發速率不匹配而丟失。例如:在TCP協議里,當數據丟失時,總是假定丟包是由于網絡擁塞引起的,此時采用擁塞避免算法,超時時間加倍,擁塞窗減半,盡管此時信道正常,有數據可以發,但因為擁塞窗減小導致不能發送,而且超時等待時間加倍,TCP的性能將急劇下降,測試報告不會好看。信道上因為誤碼引起的丟包和網絡上因為擁塞造成的丟包都是不可控的,而收發速率不匹配造成的數據丟失完全可以通過流控避免,因此,在接收速率小于/等于發送速率的地方都要使用流控。硬件流控不能跨越設備,軟件流控可以實現端到端控制。
????注意:MODEM是否配置硬件流控可以通過AT指令動態修改。在不支持硬件流控時,這兩個信號在數據傳輸狀態一直有效。此時可以無流控,或者通過ON(0x11)/XOFF(0x13)軟件流控。
???
????RI(RingIndicator振鈴指示)------------這個引腳用于指示是否有90V鈴流信號輸入。如果檢測到振鈴信號,MODEM將周期改變RI引腳電平,變化頻率與振鈴頻率無關,DTE設備檢測RI上的電平變化,并計數,一旦符合規定次數,就發出DTR信號,指示DCE摘機應答。以前的“笨貓”沒有CPU,所以需要DTE幫助判斷是否有撥入,現在的“聰明貓”(HayesSmartmodem)有CPU,完全可以自動應答,我看,這個信號以后就可以省掉了,畢竟RS232是很早以前的標準,已經過時了,不必拘泥于原來的規范。
?????DTE???????????DCE????????AB?????????????????????HJD04D大型程控電話交換機
??---------?????----------??電話線???---------?? ST-BUS -------------ST-BUS------------???E1
??|FIFO緩沖|---->|FIFO緩沖|--------->|SLIC板|<------->|DSN交換網絡|<------>|DTP數字中繼|<----->經匯接局到另一端局的相應電路
??---------?????----------???????????---------?????????-------------????????------------???????????????(左圖逆序)
???????RTS--><--CTS????????????????????^??????????????????|?????^
????????????????????????????????????????|??????????????????|?????|
?????????????????????????公共資源??----------------------------------------------------------
?????????????????????????????????????鈴流源?????????????????|???信號音(撥號/回鈴/忙/催掛音)
???????????????????????????????????????????????????????????V
?????????????????????????????????????????????????????????DTMF雙音多頻收號器
??????????????????????????????????????圖1 硬件流控圖(DTE向DCE發送數據)
????如圖1,MODEM的另一端連接電話線,通過AB線與對端(局端)程控電話交換機SLIC板(用戶線接口電路)相連,需要實現用戶線信令(摘機、掛機、振鈴、撥號音、忙/催掛/回鈴音等),還有用于判斷鏈路通斷的載波檢測。
???
????以上討論的DB9串口是很早以前設計的,隨著技術的發展,MODEM越來越聰明,軟件完全可以取代一些硬件控制連線,甚至重新設計MODEM串口。如果今后遇見不符合現在定義的MODEM接口是不足為奇的。
????****************************************
????* (4) 串口交叉連接方式和MODEM工作時序??*
????****************************************
????交叉連接用于兩個DTE設備互連
????圖略
????(1)最簡連接
????????用于調試目的等非RS232應用,通信軟件不能檢測DSR、DCD、CTS信號
????????(本端)--(對端):??(2)--(3)??(3)--(2)?? (5)--(5)
????????1--4--6--7--8--9懸空
????(2)RS232連接
????????用于屏蔽RS232通信軟件的檢測,早期BIOS和OS通信軟件只能在符合RS232規則的接口線上運行,此種接法可使其只用3根線即可正常工作。
????????短接本端 1--4--6;短接本端 7--8
????????(本端)--(對端):??(2)--(3)??(3)--(2)?? (5)--(5)
????????9懸空
????(3)完全連接
????????忽略DCD和RI,帶硬件流控的交叉連接
????????(本端)--(對端):??(2)--(3)??(3)--(2)??(5)--(5)??(7)--(8)??(8)--(7)??(6)--(4)?? (4)--(6)
????????1和9懸空
????(4)NULL MODEM連接
????????用于模擬兩個DTE之間通過MODEM連接。在PPP開發時,可以節省大量通信費用。
????????(本端連接)--(對端連接):(2)-(3) (3)-(2) (7--8)--(1) (6--9)--(4) (5)--(5)(1)--(7--8) (4)--(6--9) (9--6)--(4)
????MODEM的工作時序:
????????在整個通信過程中,DTR和DSR及DCD必須一直有效,RTS和CTS用于硬件流控(軟件實現的),RTS有效時指示DTE可以收,CTS有效時指示DCE可以收(詳見引腳說明)。
????????當電話打入時,交換機SLIC(用戶線接口電路)板發出90V振鈴信號,MODEM識別后發出RI信號,RI變化頻率與振鈴頻率無關,PC機對RI變化記數,達到觸發值時,PC機發出DTR信號通知MODEM摘機應答。MODEM發出載波后有效DSR,通知PC已摘機。當接收到對端載波后,DCD有效,指示話音通道連通。通信完畢任一方停止載波,導致兩端載波消失,PC檢測到DCD無效,就使DTR無效,MODEM隨后使DSR無效響應之,一次通信過程結束。
????????現在的MODEM一般都可以自動應答,RI信號可忽略。當MODEM識別出振鈴后,摘機應答并發載波,同時有效DSR,通知PC機有撥入,PC隨即有效DTR,允許撥入。當收到對端載波,MODEM有效DCD,指示話音通道連通。通信完畢任一方停止載波,導致兩端載波消失,PC檢測到DCD無效,就使DTR無效,MODEM隨后使DSR無效響應之,一次通信過程結束。
????????PC機撥出時,先有效DTR,指示MODEM摘機撥號,MODEM回應DSR有效,在識別出撥號音后撥號,然后在回鈴音結束后發載波,一旦收到對端載波,MODEM有效DCD,指示話音通路連通。此后,就可以進行PPP協商了。通信完畢任一方停止載波,導致兩端載波消失,PC檢測到DCD無效,就使DTR無效,MODEM隨后使DSR無效響應之,一次通信過程結束。
總結
以上是生活随笔為你收集整理的串口与modem流量控制大全(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股价暴跌9成!滴滴正式申请从纽交所退市
- 下一篇: iOS 16即将登场:又有一批老设备被淘