關於arduino與SPI

參考:html

 

 

做者:李俊軒   來源:本站原創   點擊數:x  更新時間:2013年07月18日   【字體: 網絡

 

SPI的英文全稱是:「Serial Peripheral Interface」,翻譯成中文的意思是串口通訊外圍設備接口技術。也就是把數據用串口傳輸方式進行交換。它有一個主控制器,通常咱們採用微處理器,好比經常使用的單片機,以及一些其它的外圍設置,好比數碼管,液晶顯示頻,SD卡等外圍設備。ide

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

 

 

 
這是數據傳輸的時序圖。
 
這是第三種方法,主機控制多個外圍設備的接法。上文提到的控制網絡模塊與SD 卡兩個外圍設備用的電路http://www.51hei.com/mcu/2014.html 就是這種電路。
 
這是另一種接法,也是同時控制多個外圍設備,可是這種佔用到主機的引腳相對於第二種來講會少一點。
下面再補充幾個上文沒有說到的關於 SPI 的函數:
SPI.begin()
做用是初始化 SPI 總線。設備 SCK, MOSI, SS 爲輸出。把 SCK MOSI 拉低,把 SS 線進行拉高。
SPI.end()
做用是結束SPI傳輸,或者準確地說是禁止SPI總線工做。
SPI.transfer(val)
做用是傳輸一個字節,這裏要指出來的是val只能是字節。
相關文章
相關標籤/搜索