專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

關于arduino與SPI

作者:李俊軒   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年07月18日   【字體:

SPI的英文全稱是:“Serial Peripheral Interface”,翻譯成中文的意思是串口通信外圍設備接口技術。也就是把數(shù)據(jù)用串口傳輸方式進行交換。它有一個主控制器,一般我們采用微處理器,比如常用的單片機,以及一些其它的外圍設置,比如數(shù)碼管,液晶顯示頻,SD卡等外圍設備。

它一般是由5根線組成的:分別是MOSI,MISO,SCK, SS以及地線,電源線。
MOSI:是由主機向設備發(fā)出數(shù)據(jù)的。
MISO:是由設備向主機發(fā)送數(shù)據(jù)的。
SCK:是起到一個控制數(shù)據(jù)傳輸?shù)男,根?jù)arduino官方的說法,好像還具備有對數(shù)據(jù)全能的控制作用。
SS線是用于一根使能線,特別是接多個外圍設備的時候,可以通過控制SS線,對不同的外圍設備進行通信。
寫一個程序關于SPI必須注意的問題有:
1.       字節(jié)的傳輸是從最高位(MSB)傳輸,還是從最低位(LSB)傳輸呢?這是由SPI.setBitOrder()函數(shù)進行設置的。
2.       當數(shù)據(jù)不傳輸時,時鐘線是高還是低?
3.       觸發(fā)方式是上升沿觸發(fā)還是下降沿觸發(fā)呢這個由SPI.setDataMode()函數(shù)進行設置。
4.       SPI運行的速度是多快呢?這個由SPI.setClockDivider()函數(shù)進行設置。
arduino2009板上,10腳是SS,11腳是MOSI, 12腳是MISO,13腳是時鐘引腳。當然在同時用這幾根引腳控制多個外圍設備的時候,SS引腳可以是其它引腳,比如arduinoEhthernet模塊,利用第4個引腳去控制SD卡的SS端。第10引腳控制Enthernet模塊的SS端,下面是三種不同的硬件接法示意圖:

 

這是auduino
只控制一個外圍設備的接法。

 


 

這是數(shù)據(jù)傳輸?shù)臅r序圖。


 

這是第三種方法,主機控制多個外圍設備的接法。上文提到的控制網(wǎng)絡模塊與SD
卡兩個外圍設備用的電路http://www.torrancerestoration.com/mcu/2014.html 就是這種電路。

 
這是另外一種接法,也是同時控制多個外圍設備,但是這種占用到主機的引腳相對于第二種來說會少一點。
下面再補充幾個上文沒有說到的關于SPI的函數(shù):
SPI.begin()
作用是初始化SPI總線。設備SCK, MOSI,SS為輸出。把SCKMOSI拉低,把SS線進行拉高。
SPI.end()
作用是結束SPI傳輸,或者準確地說是禁止SPI總線工作。
SPI.transfer(val)
作用是傳輸一個字節(jié),這里要指出來的是val只能是字節(jié)。

關閉窗口

相關文章