1前言
SPI(Serial Peripheral Interface)是串行外設(shè)接口的縮寫,SPI是一種高速、主從模式、全雙工、同步的串行通信總線,由摩托羅拉公司(Motorola)于 20 世紀(jì) 80 年代提出,主要用于短距離內(nèi)的芯片間通信,廣泛應(yīng)用于傳感器、存儲(chǔ)器、顯示屏、ADC/DAC 等外設(shè)與微控制器(MCU)的連接。
2SPI協(xié)議的基本特點(diǎn)
串行通信:一次發(fā)送1bit數(shù)據(jù)。
同步通信:通過時(shí)鐘信號(hào)(SCLK)同步數(shù)據(jù)傳輸,發(fā)送方和接收方基于同一時(shí)鐘工作。
全雙工通信:數(shù)據(jù)可以同時(shí)雙向傳輸(主設(shè)備發(fā)送的同時(shí)接收,從設(shè)備接收的同時(shí)發(fā)送)。
單主多從架構(gòu):通常由一個(gè)主設(shè)備(如 MCU)控制多個(gè)從設(shè)備(如傳感器),從設(shè)備不能主動(dòng)發(fā)起通信。
無地址機(jī)制:通過片選信號(hào)(CS/NSS)選擇目標(biāo)從設(shè)備,而非通過地址識(shí)別。
靈活的數(shù)據(jù)長(zhǎng)度:數(shù)據(jù)傳輸位數(shù)可自定義(常見 8 位,也支持 16 位、32 位等)。
高速傳輸:速率通??蛇_(dá)幾 Mbps 到幾十 Mbps,具體取決于器件支持的最大時(shí)鐘頻率。
3SPI的信號(hào)線組成
SPI從器件一般需要4根線(也有3根線的,單工,只有接收或者只有發(fā)送),分別是MISO(主設(shè)備輸入從設(shè)備輸出)、MOSI(主設(shè)備輸出從設(shè)備輸入)、SCLK(時(shí)鐘)、CS(片選)。
4SPI尋址方式
當(dāng)主設(shè)備要和某個(gè)從設(shè)備進(jìn)行通信時(shí),主設(shè)備需要先向?qū)?yīng)從設(shè)備的片選線上發(fā)送使能信號(hào)(高電平或者低電平,根據(jù)從機(jī)而定)表示選中該從設(shè)備。
5SPI的通信過程
SPI總線在進(jìn)行數(shù)據(jù)傳送時(shí),先傳送高位,后傳送低位;數(shù)據(jù)線為高電平表示邏輯"1",低電平表示邏輯"0";一個(gè)字節(jié)傳送完成后無需應(yīng)答即可開始下一個(gè)字節(jié)的傳送;SPI總線采用同步方式工作,時(shí)鐘線在上升沿或下降沿時(shí)發(fā)送器向數(shù)據(jù)線上發(fā)送數(shù)據(jù),在緊接著的下降沿或者上升沿時(shí)接收器從數(shù)據(jù)線上讀取數(shù)據(jù),完成一位數(shù)據(jù)傳送,八個(gè)時(shí)鐘周期即可完成一個(gè)字節(jié)數(shù)據(jù)的傳送。
如果參考了上面圖片還不能明白SPI傳輸過程,可以繼續(xù)參考如下動(dòng)圖:
6SPI的極性和相位
SPI總線有四種不同的工作模式,取決于時(shí)鐘的極性(CPOL,Clock Polarity)和相位(CPHA,Clock Phase)這兩個(gè)因素。
CPOL表示SCLK空閑時(shí)的狀態(tài):
CPOL=0,空閑時(shí)SCLK為低電平;
CPOL=1,空閑時(shí)SCLK為高電平;
CPHA表示采樣時(shí)刻:
CPHA=0,每個(gè)周期的第一個(gè)時(shí)鐘沿采樣;
CPHA=1,每個(gè)周期的第二個(gè)時(shí)鐘沿采樣;
1 CPOL=0, CPHA=0
空閑時(shí)SCLK為低電平;每個(gè)周期的第一個(gè)時(shí)鐘沿采樣,也就是上升沿。
注:*MSB表示前一幀的MSB。
2 CPOL=0, CPHA=1
空閑時(shí)SCLK為低電平;每個(gè)周期的第二個(gè)時(shí)鐘沿采樣。
注:LSB*表示下一幀的LSB。
3.3 CPOL=1, CPHA=0
空閑時(shí)SCLK為高電平;每個(gè)周期的第一個(gè)時(shí)鐘沿采樣。
注:*MSB表示前一幀的MSB。
4 CPOL=1, CPHA=1
空閑時(shí)SCLK為高電平;每個(gè)周期的第二個(gè)時(shí)鐘沿采樣。
注:LSB*表示下一幀的LSB。
需要說明的是,對(duì)于一個(gè)特定的從設(shè)備來說,一般在出廠時(shí)就會(huì)將其設(shè)計(jì)為某種特定的工作模式;我們?cè)谑褂迷撛O(shè)備時(shí)就必須保證主設(shè)備的工作模式和該從設(shè)備保持一致,否則是無法進(jìn)行通信的;所以一般我們需要對(duì)主設(shè)備的CPOL和CPHA進(jìn)行配置。
7I2C和SPI的異同
相同點(diǎn):
均采用串行、同步的方式
均采用TTL電平,傳輸距離和應(yīng)用場(chǎng)景類似
均采用主從方式工作
不同點(diǎn):
I2C為半雙工,SPI為全雙工
I2C有應(yīng)答機(jī)制,SPI無應(yīng)答機(jī)制
I2C通過向總線廣播從機(jī)地址來尋址,SPI通過向?qū)?yīng)從機(jī)發(fā)送使能信號(hào)來尋址
I2C的時(shí)鐘極性和時(shí)鐘相位固定,SPI的時(shí)鐘極性和時(shí)鐘相位可調(diào)
I2C速度慢,引腳少,SPI速度快,引腳多
-
FPGA
+關(guān)注
關(guān)注
1650文章
22204瀏覽量
626659 -
mcu
+關(guān)注
關(guān)注
147文章
18372瀏覽量
378539 -
數(shù)字電壓表
+關(guān)注
關(guān)注
4文章
197瀏覽量
33869 -
SPI協(xié)議
+關(guān)注
關(guān)注
0文章
22瀏覽量
8728
原文標(biāo)題:04-基于FPGA和LTC2308的數(shù)字電壓表設(shè)計(jì)-SPI協(xié)議詳解
文章出處:【微信號(hào):友晶FPGA,微信公眾號(hào):友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)
數(shù)字電壓表
數(shù)字電壓表的VHDL設(shè)計(jì)與實(shí)現(xiàn)

數(shù)字電壓表的設(shè)計(jì)

電壓表protues仿真 基于51數(shù)字電壓表仿真設(shè)計(jì) 電壓表程序
數(shù)字電壓表的設(shè)計(jì)方案匯總(六款數(shù)字電壓表的設(shè)計(jì)原理圖詳解)

評(píng)論