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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 同步串行外設(shè)接口總線(SPI)的簡(jiǎn)介

          同步串行外設(shè)接口總線(SPI)的簡(jiǎn)介

          作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
          SPI庫(kù)
          這個(gè)庫(kù)可以讓你將Arduino作為主設(shè)備,其他外圍設(shè)備作為從設(shè)備與主設(shè)備以串行方式進(jìn)行通信及交換信息。
          同步串行外設(shè)接口總線(SPI)的簡(jiǎn)介
          同步串行外設(shè)接口總線(SPI)是用于MCU(微控制器)與一個(gè)或多個(gè)外圍設(shè)備進(jìn)行短距離快速通訊的同步串行數(shù)據(jù)協(xié)議。它也可以用于兩個(gè)微控制器之間的通信。 SPI的連接始終是由一個(gè)主設(shè)備(通常是一個(gè)微控制器)來控制外圍設(shè)備來進(jìn)行。通常在所有設(shè)備上都有三條線,
          Master In Slave Out (MISO) -主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出,
          Master Out Slave In (MOSI) -主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入,
          Serial Clock(SCK)-串行時(shí)鐘,數(shù)據(jù)傳輸?shù)臅r(shí)鐘基于主處理器產(chǎn)生的時(shí)鐘脈沖,
          Slave Select(SS) -從屬選擇,從設(shè)備的管腳控制信號(hào)線,由主設(shè)備進(jìn)行使能控制。當(dāng)從設(shè)備的SS引腳置為低電平時(shí),它與主設(shè)備進(jìn)行通信。當(dāng)從設(shè)備的SS引腳置為高電平時(shí),斷開與主設(shè)備的通信。因此,SPI允許一個(gè)主設(shè)備和多個(gè)從設(shè)備進(jìn)行通信,主設(shè)備通過不同的SS信號(hào)線選擇不同的從設(shè)備進(jìn)行通信。
          給一個(gè)新的SPI設(shè)備寫程序,你需要注意以下幾點(diǎn):
          串行數(shù)據(jù)傳輸時(shí),是先傳輸高位(MSB)還是先傳輸?shù)臀唬↙SB),這是由 SPI.setBitOrder()函數(shù)來控制的。
          數(shù)據(jù)時(shí)鐘SCK在空閑時(shí),是高電平還是低電平?
          采樣時(shí),是在時(shí)鐘脈沖的上升沿還是下降沿?這是由 SPI.setDataMode() 函數(shù)來控制的
          SPI是在怎樣速度下運(yùn)行的,即SCLK提供多大的時(shí)鐘脈沖使SPI運(yùn)行?這是由 SPI.setClockDivider() 函數(shù)來控制的。
          SPI標(biāo)準(zhǔn)是不嚴(yán)格的,所以每個(gè)設(shè)備實(shí)現(xiàn)功能時(shí)稍有不同。這意味著當(dāng)你寫代碼時(shí),要特別注意設(shè)備的數(shù)據(jù)表。一般來說,有三種傳輸模式。這些模式控制著數(shù)據(jù)是在SCK的上升沿采樣,還是在SCK的下降沿采樣(稱為時(shí)鐘相位),時(shí)鐘信號(hào)在空閑時(shí),是高電平還是低電平(稱為時(shí)鐘極性)。由相位和極性組合得到三種模式。SPI.setDataMode() 函數(shù)用于控制時(shí)鐘極性和相位,根據(jù)此表:
          模式 時(shí)鐘極性(CPOL) 時(shí)鐘相位 (CPHA)
          0 0 0
          1 0 1
          2 1 0
          3 1 1
          當(dāng)你的SPI參數(shù)設(shè)置正確,你只需要選擇好需要的函數(shù)去控制你的設(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引腳,必須將它的模式設(shè)置為輸出;否則,SPI系統(tǒng)將會(huì)認(rèn)為有一個(gè)外部主機(jī)將自己選擇為從設(shè)備(從屬模式),從而使庫(kù)文件的控制失效。
          它有可能使用其他腳比10腳,作為從機(jī)選擇引腳SS。例如,Arduino的以太網(wǎng)擴(kuò)展板使用引腳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()


          評(píng)論


          技術(shù)專區(qū)

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