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

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 利用SPI總線擴串口的方法(06-100)

          利用SPI總線擴串口的方法(06-100)

          —— 利用SPI總線擴串口的方法
          作者:成都國騰微電子有限公司 劉毓梅時間:2008-04-02來源:收藏

            概述

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

            隨著電子技術的發展,各類電子設備已不再滿足于某一單一功能,而是朝著多功能集成的方向發展,隨著功能的增加,一個系統就不僅僅需要一個主機,還需要與多個外設配合工作以實現附加功能,因此主機與外設就必然需要進行數據傳輸,而這種傳輸一般會采用的方式以節約IO資源和增加傳輸距離。而普通單片機控制器只提供1個,遠不能滿足多外設通訊的需求,因此擴展成為系統常常需要解決的問題。串口擴展的方案比較多,但開發工作量、硬件成本、可靠性、指標存在一定差異。

            鑒于速度、通用性及成本的考慮,的應用非常廣泛,因此利用SPI接口進行串口擴展也不失為實現串口擴展的一個好方式。成都微電子有限公司的GM814X芯片正是針對SPI擴串口的需求而設計開發的串口擴展專用芯片,可以幫助系統設計工程師輕松通過MCU的SPI接口實現擴串口的功能。
            
            擴串口方案

            

            是由摩托羅拉公司提出的一種同步串行外圍設備接口總線,主要用于微控制器和外圍設備之間的串行傳輸。SPI也能在多主設備系統中進行處理器的通信。外圍設備可以是簡單普通的TTL移位寄存器,也可以是復雜完整的從系統,如LCD顯示驅動器、模數轉換器系統等。

            SPI總線包含四條線:串行時鐘(SCK),主輸出從輸入(MOSI),主輸入從輸出(MISO),從設備選擇(SS)。

            總線系統中所有的SCK、MOSI、MISO引腳要連在一起。系統中只有一個SPI設備可作主設備,其他連在總線上的SPI設備就成了從設備。主設備將它的SCK和MOSI、MISO分別連到從設備的SCK和MOSI、MISO端。

            SPI串行接口主要用于短距離的主機與從機的數據傳送,具有連接電路簡單、使用方便等優點,可為實現主機和從機及從外圍設備的通信提供了一種簡單、易行的方案。

            GM814X

            GM814X芯片可以將一個標準SPI接口擴展成2個(GM8141)或4個(GM8142)標準的UART, 所有擴展串口能以各自獨立設置的波特率,幀長和校驗方式,同時和SPI接口進行數據收發。一次SPI傳輸的數據為16bit,其中高8bit為子串口地址以及其它附加命令和狀態信息,低8bit為實際收發的數據。

            芯片的工作模式由軟件方式進行設置,SPI接口為從機方式,各子串口的工作波特率、數據幀長等各種通信設置都可由軟件對各子串口的設置寄存器獨立設置,減少了外部MCU的IO需求。芯片的功耗低,具備多種掉電操作。

          模數轉換器相關文章:模數轉換器工作原理



          上一頁 1 2 3 4 下一頁

          關鍵詞: 國騰 SPI總線 串口

          評論


          相關推薦

          技術專區

          關閉
          看屁屁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); })();