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

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

評論