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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 同步串行外設接口總線(SPI)的簡介

          同步串行外設接口總線(SPI)的簡介

          作者: 時間:2016-12-15 來源:網(wǎng)絡 收藏
          SPI
          這個庫可以讓你將Arduino作為主設備,其他外圍設備作為從設備與主設備以串行方式進行通信及交換信息。
          同步串行外設接口總線(SPI)的簡介
          同步串行外設接口總線(SPI)是用于MCU(微控制器)與一個或多個外圍設備進行短距離快速通訊的同步串行數(shù)據(jù)協(xié)議。它也可以用于兩個微控制器之間的通信。 SPI的連接始終是由一個主設備(通常是一個微控制器)來控制外圍設備來進行。通常在所有設備上都有三條線,
          Master In Slave Out (MISO) -主設備數(shù)據(jù)輸入,從設備數(shù)據(jù)輸出,
          Master Out Slave In (MOSI) -主設備數(shù)據(jù)輸出,從設備數(shù)據(jù)輸入,
          Serial Clock(SCK)-串行時鐘,數(shù)據(jù)傳輸?shù)臅r鐘基于主處理器產(chǎn)生的時鐘脈沖,
          Slave Select(SS) -從屬選擇,從設備的管腳控制信號線,由主設備進行使能控制。當從設備的SS引腳置為低電平時,它與主設備進行通信。當從設備的SS引腳置為高電平時,斷開與主設備的通信。因此,SPI允許一個主設備和多個從設備進行通信,主設備通過不同的SS信號線選擇不同的從設備進行通信。
          給一個新的SPI設備寫程序,你需要注意以下幾點:
          串行數(shù)據(jù)傳輸時,是先傳輸高位(MSB)還是先傳輸?shù)臀唬↙SB),這是由 SPI.setBitOrder()函數(shù)來控制的。
          數(shù)據(jù)時鐘SCK在空閑時,是高電平還是低電平?
          采樣時,是在時鐘脈沖的上升沿還是下降沿?這是由 SPI.setDataMode() 函數(shù)來控制的
          SPI是在怎樣速度下運行的,即SCLK提供多大的時鐘脈沖使SPI運行?這是由 SPI.setClockDivider() 函數(shù)來控制的。
          SPI標準是不嚴格的,所以每個設備實現(xiàn)功能時稍有不同。這意味著當你寫代碼時,要特別注意設備的數(shù)據(jù)表。一般來說,有三種傳輸模式。這些模式控制著數(shù)據(jù)是在SCK的上升沿采樣,還是在SCK的下降沿采樣(稱為時鐘相位),時鐘信號在空閑時,是高電平還是低電平(稱為時鐘極性)。由相位和極性組合得到三種模式。SPI.setDataMode() 函數(shù)用于控制時鐘極性和相位,根據(jù)此表:
          模式 時鐘極性(CPOL) 時鐘相位 (CPHA)
          0 0 0
          1 0 1
          2 1 0
          3 1 1
          當你的SPI參數(shù)設置正確,你只需要選擇好需要的函數(shù)去控制你的設備,然后開始你的作品制作。這將被解釋為您的設備數(shù)據(jù)表。
          連接
          在Arduino Duemilanove和其他基于ATmega168 / 328的板子上,SPI總線使用引腳10(SS),引腳11(MOSI),引腳12(MISO)和引腳13(SCK)。而在Arduino Mega板上,使用的是引腳50(MISO),引腳51(MOSI),引腳52(SCK)和引腳53(SS)。需要注意的是,即使你不使用SS引腳,必須將它的模式設置為輸出;否則,SPI系統(tǒng)將會認為有一個外部主機將自己選擇為從設備(從屬模式),從而使庫文件的控制失效。
          它有可能使用其他腳比10腳,作為從機選擇引腳SS。例如,Arduino的以太網(wǎng)擴展板使用引腳4來控制的SPI連接到主板上的SD卡,用引腳10來控制連接到以太網(wǎng)控制器。
          函數(shù)
          begin()
          end()
          setBitOrder()
          setClockDivider()
          setDataMode()
          transfer()
          例子
          BarometricPressureSensor: Read air pressure and temperature from a sensor using SPI
          SPIDigitalPot: Control a digital potentiometer using SPI
          參見
          shiftOut()
          shiftIn()


          評論


          技術專區(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); })();