前言
讓我們回顧一下,我們學習了串口通訊(優點是全雙工,缺點是只能點對點通訊)
另外還學習了IIC通訊(優點是一主多從通訊,缺點是半雙工)
技巧:看一個總線是半雙工還是全雙工就看有幾根數據線
那有沒有總線是以全雙工,并且還是一主多從的方式通訊呢?
答案是有的,那就是用SPI通訊
寫數據
先來看看設備之間如何使用SPI方式來通訊
可以看出設備之間有4根線連接(SCK、MOSI、MISO、SS),下面來細說每根線的作用
SS為片選信號線(用來選擇哪個設備)
MOSI (master output , slave input)主機輸出,從機輸入
MISO(master input , slave output )主機輸入,從機輸出
SCK為時鐘信號線(用來提供基準時鐘信號)
下面以控制EEPROM為例(圖中型號為93C46的是EEPROM)
假設EEPROM里面有128個內存地址(用一個字節就可以尋址完)
這SPI的數據格式
無論是寫操作還是讀操作,起始位都為1,但操作碼01是寫操作,操作碼10是讀操作
當地址碼寫入EEPROM中寄存器的地址,這時就選中了這個地址,相當于打通了直達該地址的通道
緊接著寫入數據,這樣數據被保存下來了
用電平表示是這樣的
那是不是直接發送給被控設備就行了?
當然是不行的
因為SPI是串行同步通訊的,所以需要數據線和時鐘線兩根線才能傳輸數據
而且SPI發送數據是當時鐘線處于跳變沿時才能被發送的(具體是處于什么跳變沿,取決于該設備)這里以上升沿為例
在SS(片選信號)被選中期間,當SCK(時鐘信號)發生上升沿,數據就被確定下來
以上面的數據為例
根據時鐘信號線空閑狀態是高電平還是低電平,又因為每種狀態可以分為上升沿和下降沿觸發
共計有4種狀態
讀數據
讀操作也是同樣的操作
現在要把EEPROM里的數據讀出來
根據SPI的數據格式
現在需要MOSI寫入1 10 0000001
MISO后半段就可以讀取數據了(上面EEPROM存儲的為0000 1111)
總結
SPI是全雙工,一主多從
SPI是當發生跳變沿時,傳輸數據
SPI本質是移位寄存器
-
SPI
+關注
關注
17文章
1706瀏覽量
91581 -
通訊
+關注
關注
9文章
903瀏覽量
34907
原文標題:秒懂SPI
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論