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

一文搞懂SPI通信協(xié)議

SPI協(xié)議,寄存器解讀
一文詳解SPI接口
一文讀懂SPI串行外設(shè)接口
一文讀懂MSP430 SPI總線

AN1245中文手冊之Microchip SPI串行SRAM器件的建議用法

一文介紹SPI串行總線

一文解讀FPGA設(shè)計者的5項基本功及設(shè)計流程資料下載

一文講完SPI通訊,看后不懂來找我

一文看懂SPI協(xié)議

一文搞懂SPI通信協(xié)議
你知道什么是SPI嗎?一文入門,簡單易懂

評論