SPI通訊協議學習總結

2021-08-03 13:11:08 字數 2519 閱讀 8369

spi通訊

1.簡介

這裡介紹stm32通過spi實現對外部spiflash的讀寫功能,其中,spi作為主裝置,spiflash作為從裝置。為了驗證spi flash收到的資料是否是stm32通過spi傳送給它的資料,我們將spiflash讀取的資料顯示在螢幕上(tftlcd)。

1.1 spi簡介

spi就是序列外圍裝置介面,它是一種高速的,全雙工,同步的通訊匯流排,並且在晶元的管腳上只占用四根線,這四根線的定義分別是:

miso:主裝置資料輸入,從裝置資料輸出;

mosi:主裝置資料輸出,從裝置資料輸入;

sclk:時鐘訊號,由主裝置產生;

cs:從裝置片選訊號,由主裝置控制;

spi為了和外設進行資料交換,根據外設工作要求,其輸出序列同步時鐘極性和相位可以進行配置,時鐘極性(cpol)對傳輸協議沒有重大的影響。如果cpol=0,序列同步時鐘的空閒狀態為低電平;如果cpol=1,序列同步時鐘的空閒狀態為高電平。時鐘相位(cpha)能夠配置用於選擇兩種不同的傳輸協議之一進行資料傳輸。如果cpha=0,在序列同步時鐘的第乙個跳變沿(上公升或下降)資料被取樣;如果cpha=1,在序列同步時鐘的第二個跳變沿(上公升或下降)資料被取樣。spi匯流排資料傳輸時序圖如下圖:

資料傳輸過程如下:sck的第乙個時鐘週期在時鐘的前沿取樣資料(上公升沿,第乙個時鐘沿鐘沿),在時鐘的後沿輸出資料(下降沿,第二個時鐘沿)。首先來看主器件,主器件的輸出口mosi輸出的資料,在時鐘的前沿被從器件取樣,那主器件是在何時刻輸出資料的呢?資料的輸出時刻實際上在sck訊號有效以前,比sck的上公升沿還要早半個時鐘週期。資料的輸出時刻與ssel訊號沒有關係。再來看從器件,主器件的輸入口miso同樣是在時鐘的前沿取樣從器件輸出的資料,那從器件又是在何時刻輸出資料的呢? 從器件是在ssel訊號有效後,立即輸出資料,儘管此時sck訊號還沒有起效。

1.2 spi flash簡介

spi flash以w25q64為例進行介紹,w25q64將8m的容量分為128個塊(block ),每個塊大小為64k位元組,每個塊又分為16個扇區(sector),每個扇區4k個位元組。w25q64 的最少擦除單位為乙個扇區,也就是每次必須擦除4k個位元組。這樣我們需要給w25q64 開闢乙個至少4k的快取區。

spi flash的寫入資料基本過程是:先獲得首位址(writeaddr)所在的扇區,並計算在扇區內的偏移,然後判斷要寫入的資料長度是否超過本扇區所剩下的長度,如果不超過,再先看看是否要擦除,如果不要,則直接寫入資料即可,如果要則讀出整個扇區,在偏移處開始寫入指定長度的資料,然後擦除這個扇區,再一次性寫入。當所需要寫入的資料長度超過乙個扇區的長度的時候,我們先按照前面的步驟把扇區剩餘部分寫完,再在新扇區內執行同樣的操作,如此迴圈,直到寫入結束。

2. 硬體設計

我們利用stm32自帶的spi和spiflash通訊,通訊過程中spi是主裝置,spiflash是從裝置,硬體設計如下圖所示:

3. 軟體設計

3.1 spi軟體設計

(1)使能spi時鐘,且定義相關引腳的復用功能;

使能spi時鐘,且配置spi占用的幾個gpio引腳的功能為復用功能;spi和stm32共用乙個時鐘,可以對spi頻率進行設定,spi時鐘通過apb2進行分頻,分頻係數可以是2、4、8等,最低是256分頻。

(2)設定spi工作引數

主要對spi以下幾個工作引數進行設定:

設定spi的通訊方式,可以是全雙工、半雙工等方式;

設定spi的主從模式;

設定spi傳輸方式:8位傳輸還是16位傳輸;

設定spi的時鐘極性;

設定spi的時鐘相位;

設定spi的分頻係數;

設定spi的crc校驗多項式;

(3)使能spi外設;

(4)spi傳送接收資料;

(5)檢視spi傳輸狀態;

3.2 spi flash軟體設計

(1)spiflash讀出資料;讀取資料過程:由於w25q64 支援以任意位址(但是不能超過w25q64的位址範圍)開始讀取資料,在傳送24 位位址之後,程式就可以開始迴圈讀資料了,其位址會自動增加的,不過要注意,不能讀的資料超過了w25q64的位址範圍。

(2)spiflash寫入資料;寫入資料基本過程:先獲得首位址(writeaddr)所在的扇區,並計算在扇區內的偏移,然後判斷要寫入的資料長度是否超過本扇區所剩下的長度,如果不超過,再先看看是否要擦除,如果不要,則直接寫入資料即可,如果要則讀出整個扇區,在偏移處開始寫入指定長度的資料,然後擦除這個扇區,再一次性寫入。當所需要寫入的資料長度超過乙個扇區的長度的時候,我們先按照前面的步驟把扇區剩餘部分寫完,再在新扇區內執行同樣的操作,如此迴圈,直到寫入結束。

SPI通訊協議總結

資料 於網上,不足之處歡迎指正,技術無邊,多多交流 1 什麼是spi?spi是序列外設介面 serial peripheral inte ce 的縮寫。是 motorola 公司推出的一種同步序列接 術,是一種高速的,全雙工,同步的通訊匯流排。2 spi優點 支援全雙工通訊 通訊簡單 資料傳輸速率塊...

SPI通訊協議(SPI匯流排)學習

spi是序列外設介面 seria 種同步序列接 術,是一種高速的,全雙工,同步的通訊匯流排。2 spi優點 支援全雙工通訊 通訊簡單 資料傳輸速率塊 3 缺點 沒有指定的流控制,沒有應答機制確認是否接收到資料,所以跟iic匯流排協議比較在數 據 可靠性上有一定的缺陷。4 特點 1 高速 同步 全雙工...

SPI通訊協議(SPI匯流排)學習

spi是序列外設介面 seria 2 spi優點 支援全雙工通訊 通訊簡單 資料傳輸速率塊 3 缺點 沒有指定的流控制,沒有應答機制確認是否接收到資料,所以跟iic匯流排協議比較在資料 可靠性上有一定的缺陷。4 特點 1 高速 同步 全雙工 非差分 匯流排式 2 主從機通訊模式 5 協議通訊時序詳解...