STM32通訊介面(三)硬體SPI

2021-08-19 16:13:35 字數 2471 閱讀 8635

spi是序列外設介面(serial peripheral inte***ce)的縮寫。spi,是一種高速的,全雙工,同步的通訊匯流排,

是motorola最先在其的mc68hcxx晶元上使用,

並且在晶元的管腳上只占用四根線,節約了晶元的管腳,同時為pcb的布局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的晶元整合了這種通訊協議。

spi介面主要應用在實時時鐘、e2prom、flash、ad轉換器還有數字訊號處理器和數碼訊號解碼器之間,它的用途相當廣泛。而且其傳輸速度較快一般可以達到10m以上。

二、基本原理

由圖可知spi一般由四條線組成:miso(主機輸入從機輸出)、mosi(主機輸出從機輸入)、sclk(時鐘線)、cs(片選訊號)

四線模式的spi支援全雙工,如果把miso和mosi合為一條資料線,就變成了三線spi,只支援半雙工。

主機的資料通過移位暫存器傳輸給從機時,從機的資料也會通過它的移位暫存器傳輸給主機

示例:(從最低位開始)

主機                        從機

00000000                11111111

第乙個時鐘週期      00000001                11111110

第二個時鐘週期      00000011

11111100

......

第八個時鐘週期      11111111                00000000

所以說每次的資料傳輸就相當於主機從機的資料進行交換

由此,如果要傳輸資料給從機,主機只要忽略掉從從機接收到的資料即可,如果要從從機讀取資料,就可以傳送無意義的資料給從機(如0x00)

注意:大多數情況下傳送和接收並不會同時進行。

三、stm32上的spi

stm32 上的spi介面提供倆個功能,支援spi協議和i2s音訊協議,預設情況下,選擇的是spi功能。可通過軟體將介面從spi切換到i2s。

stm32上spi的特性如下

spi的框圖如下:

這個框圖並不複雜,主要要關注的就是miso和mosi那裡。

資料匯流排中的資料寫入傳送緩衝區,通過移位暫存器一位一位的從mosi傳送,同時從機返回的資料從miso進入移位暫存器,進入接收緩衝區。

下面的部分就是波特率發生器,主控制邏輯以及通訊控制。

注意:

cpol(時鐘極性)決定spi介面傳輸時時鐘空閒狀態的電平(1,高電平;0,低電平)

cpha(時鐘相位)控制在時鐘的第乙個還是第二個邊沿被採集(1,第二個邊沿,0,第乙個邊沿)

四、stm32 上spi的實現流程

1、配置相關引腳的復用功能,使能spi時鐘

2、設定spi的工作模式

3、使能spi

**如下:

初始化函式

void spi1_init(void)

這裡對spi1進行初始化,首先使能io口的時鐘,初始化io口味復用功能,復用為spi1,。首先先復位spi1,設定為全雙工模式,軟體從器件管理,內部從器件選擇,作為主機,八位資料格式,空閒狀態高電平,第二個時間邊沿開始取樣,設定波特率256分頻,從最高位開始傳輸,使能spi。

再選擇spi模式(i2scfgr暫存器的第11位)

傳送乙個位元組啟動傳輸

傳輸速度設定函式

//spi1速度設定函式

//speedset:0~7

//spi速度=fapb2/2^(speedset+1)

//fapb2時鐘一般為84mhz

void spi1_setspeed(u8 speedset)

通過改變分頻係數來設定spi的傳輸速度

讀寫乙個位元組

//spi1 讀寫乙個位元組

//txdata:要寫入的位元組

//返回值:讀取到的位元組

u8 spi1_readwritebyte(u8 txdata)

txdate為要傳送的位元組,函式的返回值為接收到的位元組

五、使用spi

在使用spi時先將片選訊號拉低選中從器件,然後傳送或者接收資料,完成後,拉高片選。

隨後的部落格會通過w25q128的使用來介紹spi的使用。

STM32 硬體SPI主從通訊

本例子基於stm32f103zet6晶元,實現spi1與spi2的主從通訊。其中spi1配置為主機,spi2配置為從機,均配置為全雙工模式。硬體連線圖 其中,我們需要注意的是,spi的從機不能主動傳送資料,只能應答資料。本例子的資料互動過程 主機使用查詢方式傳送資料給從機。從機使用中斷接收方式接收資...

STM32之間SPI通訊

這幾天實驗室比較忙,所以部落格這邊停了一下,繼續吧。繼串列埠中斷後,大家可以嘗試微控制器間串列埠通訊,這裡就不再多贅述。串列埠完了之後,我接著學的就是spi通訊了,作為hello moto公司推出的這種4線全雙工通訊,很節約pcb布局空間,但缺點就是沒有指定的流控制,沒有應答機制來確定訊號收到與否,...

STM32通訊介面(二)IIC 軟體模擬

一 概述 iic 即inter integrated circuit 積體電路匯流排 這種匯流排型別是由 飛利浦半導體公司在八十年代初設計出來的一種簡單 雙向 二線制 同步序列匯流排,主要是用來連線整體電路 ics iic是一種多向 控制匯流排 也就是說多個晶元可以連線到同一 匯流排結構 下,同時每...