SPI傳輸更快,最大可達80MHz,而I2C最大只有3.4MHz。輸入輸出是分開的,可以同時輸出輸入。是同步全雙工。僅支持一主多從。SS是從機選擇線。每個從機一根。SPI無應答機制的設計。
注意:所有設備需要共地,時鐘線主機輸出,從機輸入。MOSI主機輸出,從機輸入。MOSO相反。主機的SS線輸出,從機輸入。SS線低電平有效。主機跟哪個從機通信就把那個從機的SS線置低電平。當從機的SS為高電平,他的MOSI引腳必須切換為高阻態。
注意:移位寄存器都是向左進行移位的。主機提供的波特率發生器時鐘的上升沿,移位寄存器向左移一位,移出去的位放到引腳上,波特率發生器時鐘的下降沿,引腳上的位采樣移動寄存器的最低位。連續移8次就完成了一個數據的移位。
模式一:
模式一:
模式二:
注意每個芯片對SPI時序字節流功能的定義不一樣。此處以W25Q64舉例:
SPI不同于I2C,是指令碼加讀寫數據的模型。起始條件開始后,發送指令,控制讀寫功能。具體參考SPI的指令集。指令加上+在哪讀+讀什么。
此處以寫使能舉例,SPI模式0:
1.空閑狀態下,SS高電平,SCK低電平,MOSI和MOSO的默認電平沒有嚴格規定。
2.SS產生下降沿,時序開始。
3.SCK高電平,數據采樣,從機采樣輸入得到0,主機采樣輸入得到1,發送完0x60。
4.拉高SS
指令+地址24位(3個字節)+發送內容
1.空閑狀態下,SS高電平,SCK低電平,MOSI高電平。
2.SS產生下降沿,時序開始。
3.SCK高電平,數據采樣,先發送指令,再發送地址,再發送內容
4.拉高SS和MOSI
具體步驟參考上面的指定地址寫。