通訊專欄 三 SPI通訊 32微控制器

2021-10-02 09:16:52 字數 2160 閱讀 3059

通俗易懂,看這篇就夠了!

spi 介面主要應用在 eeprom, flash,實時時鐘, ad 轉換器,還有數字訊號處理器和數碼訊號解碼器之間。spi,是一種高速的,全雙工,同步的通訊匯流排,並且在晶元的管腳上只占用四根線,這四根引腳分別是:

spi根據時鐘極性(cpol)和時鐘相位(cpha)配置的不同,分為4種spi模式。

時鐘極性:當spi通訊裝置處於空閒時(也可以認為是spi通訊開始時,即片選訊號ss被拉低時),sck訊號線的電平訊號。cpol=0時,sck在空閒狀態時為低電平,cpol=1時,sck為高電平。

時鐘相位:指資料取樣的時刻。資料取樣可以時傳送,也可以是接收。當cpha=0時,mosi或miso資料線上的訊號將會在sck時鐘線的奇數邊沿被取樣。當cpha=1時,資料線在sck偶數邊沿取樣。

這選擇主機四種模式時要看從機的模式,因為按照spi通訊的協議,主從雙方使用的spi模式應該一致,而並不是所有的從機裝置都支援spi的四種通訊模式,可能只能支援其中的兩種,這時選擇模式時就要注意了。

首先應該拉低我們要進行通訊的從機裝置片選訊號ss,這個就不必多說了。

然後,以時鐘極性cpol為0,時鐘相位cpha為0時(即初始時鐘為低電平,在第奇數個時鐘跳變訊號,即上公升沿時傳送資料)為例:

資料(不論是傳送的資料還是要接收的)在跳變訊號到來前準備好,在時鐘跳變時(上圖為時鐘上公升沿)將資料傳送出去,並開始準備新的資料。

因此,我們可以通過三個標誌位完全監控spi通訊的狀態:

傳送緩衝器空閒標誌(txe):

此標誌為1時表明傳送緩衝器為空,可以寫入下乙個待傳送的資料。

接收緩衝期非空(rxne):

此標誌位為1時表明在接收緩衝器中包含有效的接收資料。

忙(busy)標誌:

busy標誌有硬體設定與清除(寫入此位無效果)。

這時我們便可以理解下面函式內容了:

其中,spi_i2s_getflagstatus();函式為檢測標誌位的庫函式,spi_i2s_senddata();和spi_i2s_receivedata();為接收和傳送資料的庫函式。

spi初始化

上述程式實現了接收和傳送乙個位元組。

上圖為spi初始化函式。

1:1處我們看出,我們可以用此spi與多種裝置進行通訊。如果我們想用乙個spi介面同時連線這三個裝置,並分別與之通訊,就如本文第一張圖所畫那樣。就需要三個片選訊號線,但從下圖可看出spi1介面規定的只有乙個片選訊號線nss。但其實沒有關係,我們可以通過軟體設定乙個引腳拉低拉高就可以了。

2:在2處初始化了3個引腳分別為spi1_sck,spi1_miso,spi1_mosi。

3:3處即為spi介面初始化,結構體如圖:

理解了spi如何與裝置傳送資料後,我們常常還需要編寫從裝置的驅動程式。我們首先要知道裝置使用的是什麼通訊協議,如有的裝置使用的i2c通訊方式,有的則是spi通訊方式。

而不同的裝置都會有不同的指令。這些指令也不過是主機按照基本的spi通訊協議傳送的資料,只是其對從裝置有特殊的意義,我們便是依靠通訊來傳送指令進而操作從裝置的。

例如我們對從裝置傳送寫指令,隨後我們傳送的資料便將寫入從裝置之中。從裝置的指令集,往往有廠家給出,有時還會附帶裝置驅動案例。

51微控制器 主從機模擬 spi通訊

51微控制器 主從機模擬 spi通訊 困惑我的問題 1.sck頻率的設定問題。2.提取ad資料的時機問題。spi基本知識。雙全工同步序列介面 1.工作模式 cpol 0 低電平空閒狀態 cpol 1 高電平空閒狀態 cpha 0 第乙個邊沿採集資料 第二個邊沿輸出資料 cpha 1 第二個邊沿採集資...

微控制器串列埠通訊

微控制器串列埠通訊 通常的usb序列通訊方式為全雙工,即兩條資料線 rxd和txd,一條用於傳送資料,一條用於接收資料。在序列通訊前,需要對序列通訊進行配置。對於微控制器 ri為接受中斷標誌位,未通訊時ri 0 當電腦傳送第乙個位元組幀a0到微控制器時,sbuf a0,中斷標誌位ri 1,微控制器呼...

微控制器 紅外通訊

人的眼睛能看到的可見光按波長從長到短排列,依次為紅 橙 黃 綠 青 藍 紫。其中紅光的波長範圍為0.62 0.76 m 紫光的波長範圍為0.38 0.46 m。比紫光波長還短的光叫紫外線,比紅光波長還長的光叫紅外線.紅外線遙控就是利用波長為0.76 1.5 m之間的近紅外線來傳送控制訊號的。紅外線遙...