<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 詳解串口通訊的概念及接口電路

          詳解串口通訊的概念及接口電路

          作者: 時間:2018-08-01 來源:網絡 收藏

          隨著計算機系統(tǒng)的應用和微機網絡的發(fā)展,通信功能越來越顯的重要。這里所說的通信是只計算機與外界的信息交換。因此,通信既包括計算機與外部設備之間,也包括計算機和計算機之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網進行信息傳送,因此,特別適合于遠距離傳輸。對于那些與計算機相距不遠的人-機交換設備和串行存儲的外部設備如終端、打印機、邏輯分析儀、磁盤等,采用串行方式交換數(shù)據(jù)也很普遍。在實時控制和管理方面,采用多臺微機處理機組成分級分布控制系統(tǒng)中,各CPU之間的通信一般都是串行方式。所以串行接口是微機應用系統(tǒng)常用的接口。

          本文引用地址:http://www.ex-cimer.com/article/201808/384885.htm

          許多外設和計算機按串行方式進行通信,這里所說的串行方式,是指外設與之間的信息傳送方式,實際上,CPU與接口之間仍按并行方式工作。

          1 串行通信的

          圖1 串行通信

          所謂串行通信是指外設和計算機間使用一根數(shù)據(jù)信號線(另外需要地線,可能還需要控制線),數(shù)據(jù)在一根數(shù)據(jù)信號線上一位一位地進行傳輸,每一位數(shù)據(jù)都占據(jù)一個固定的時間長度。如圖1-1所示。這種通信方式使用的數(shù)據(jù)線少,在遠距離通信中可以節(jié)約通信成本,當然,其傳輸速度比并行傳輸慢。

          由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有接收移位寄存器(串→并)和發(fā)送移位寄存器(并→串)。典型的串行接口的結構如1-2所示。

          圖2 典型的串行接口結構圖

          在數(shù)據(jù)輸入過程中,數(shù)據(jù)1位1位地從外設進入接口的接收移位寄存器,當接收移位寄存器中已接收完1個字符的各位后,數(shù)據(jù)就從接收移位寄存器進入數(shù)據(jù)輸入寄存器.CPU從數(shù)據(jù)輸入寄存器中讀取接收到的字符。(并行讀取,即D7~D0同時被讀至累加器中)。接收移位寄存器的移位速度由接收時鐘確定。

          在數(shù)據(jù)輸出過程中,CPU把要輸出的字符(并行地)送入數(shù)據(jù)輸出寄存器,數(shù)據(jù)輸出寄存器的內容傳輸?shù)桨l(fā)送移位寄存器,然后由發(fā)送移位寄存器移位,把數(shù)據(jù)1位1位地送到外設。發(fā)送移位寄存器的移位速度由發(fā)送時鐘確定。

          接口中的控制寄存器用來容納CPU送給此接口的各種控制信息,這些控制信息決定接口的工作方式。

          狀態(tài)寄存器的各位稱為狀態(tài)位,每一個狀態(tài)位都可以用來指示數(shù)據(jù)傳輸過程中的狀態(tài)或某種錯誤。例如,用狀態(tài)寄存器的D5位為1表示數(shù)據(jù)輸出寄存器空,用D0位表示數(shù)據(jù)輸入寄存器滿,用D2位表示奇偶檢驗錯等。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();