今天我們學(xué)習(xí)一下W5500使用的通訊接口,SPI協(xié)議。SPI,中文串行外圍設(shè)備接口,SPI總線是在物理上是通過接在外圍設(shè)備微控制單元上的同步串行端口的模塊來實現(xiàn)。他允許MCU以全雙工的同步串行方式,與各種外圍設(shè)備進行高速數(shù)據(jù)通信。
SPI實為高速同步串行口。收發(fā)同步,可同步進行。
SPI在芯片的管腳上只占用四根線,節(jié)約芯片的管腳。
“SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCK(時鐘),CS(片選)。
(1)SDO – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入
(2)SDI – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出
(3)SCLK – 時鐘信號,由主設(shè)備產(chǎn)生
(4)CS – 從設(shè)備使能信號,由主設(shè)備控制
其中CS是控制芯片是否被選中的,也就是說只有片選信號為預(yù)先規(guī)定的使能信號時(高電位或低電位),對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設(shè)備成為可能?!?/p>
SPI是串行傳輸協(xié)議,數(shù)據(jù)是一位一位的傳輸?shù)模_定傳輸位的就是SCK信號,有他來產(chǎn)生脈沖信號,SDI和SDO則是基于這個脈沖完成數(shù)據(jù)傳輸,數(shù)據(jù)的輸出通過SDO線,數(shù)據(jù)在時鐘上升沿或下降沿改變,在緊接著的下降沿或上升沿被讀取。完成一位數(shù)據(jù)傳輸,所以要完成8位數(shù)據(jù)的傳輸,至少8次的時鐘信號改變。但SCK時鐘線只受主設(shè)備控制,從設(shè)備不能控制信號線。與普通的串行通信不同的是,普通的串行通信通訊一次至少8位,而SPI允許一位一位的傳輸,甚至允許暫停。主設(shè)備通過SCK時鐘的控制可以完成對通信的控制。SPI還有一個數(shù)據(jù)交換協(xié)議:因為SPI的數(shù)據(jù)輸入和輸出線獨立,所以允許同時完成數(shù)據(jù)的輸入輸出。在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,所以簡單高效。但是SPI接口沒有指定的流控制,沒有應(yīng)答機制確認是否接收到數(shù)據(jù)。
在對應(yīng)的接口上,
MOSI:主出/從入
MISO:注入/從出
SCK:串行時鐘
SS:叢屬選擇
而SS的引腳數(shù)決定了可連到總線上的器件數(shù)量。
SPI傳輸串行數(shù)據(jù)是首先傳輸最高位,波特率可達到5Mbps
總線包括一根串行同步時鐘信號線以及兩根數(shù)據(jù)線
“SPI模塊為了和外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果 CPOL="0",串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)音時鐘相位和極性應(yīng)該一致”
CPHA = 1,就表示數(shù)據(jù)的輸出是在一個時鐘周期的第一個沿上,至于這個沿是上升沿還是下降沿,這要看CPOL的值而定,CPOL=1那就是下降沿,反之就是上升沿,數(shù)據(jù)的采樣就是在第二個沿上
CPHA = 0,就表示數(shù)據(jù)的采樣是在一個時鐘周期的第一個沿上,那么數(shù)據(jù)的輸出就在第二個沿上了
實際就是時鐘的高有效與低有效。
代碼實現(xiàn)又要待到明日
P.S.做了一周了,中間間斷了一天,但也不是遠離了學(xué)習(xí)。雖然這個可能不用去從軟件協(xié)議棧入手,但是還是覺得去了解之后會有更大的幫助。之前51單片機學(xué)的真的蠻差的,以至于現(xiàn)在在面前的代碼并不能了解他的意思,或者做一些東西很迷。大三了,身邊的人已經(jīng)有大量的代碼經(jīng)驗,自己卻做的太少,哪怕現(xiàn)在轉(zhuǎn)一個工程都要這么費勁。想法很多,實現(xiàn)的能力達不到。眼高手低真的累,希望這兩天能讓我走出迷茫吧...
-
FPGA設(shè)計
+關(guān)注
關(guān)注
9文章
428瀏覽量
27323
發(fā)布評論請先 登錄
51+單片機TCP-IP+協(xié)議棧ZLIP源碼
iic協(xié)議與spi協(xié)議的區(qū)別
ADS1278通過SPI通信協(xié)議讀取轉(zhuǎn)換數(shù)據(jù)時遇到的疑問求解
總線通信協(xié)議解析及應(yīng)用
AUTOSAR通信協(xié)議解析 如何實現(xiàn)AUTOSAR通信
什么是socket編程 socket與tcp/ip協(xié)議的關(guān)系
TCP協(xié)議是什么
PROFINET通信協(xié)議是什么
Linux網(wǎng)絡(luò)協(xié)議棧的實現(xiàn)

SPI通信協(xié)議的基本概念和工作模式
串口服務(wù)器和TCP/IP協(xié)議棧是什么關(guān)系
一文了解TCP/IP協(xié)議

評論