SPI簡介
- 大容量的SPI接口支持I2S,默認為SPI
- 全雙工,半雙工,同步和串行通信四種方式
- 主模式為從設備提供時鐘
SPI主要特點
- 3線全雙工
- 2線單工
- 8位和16位幀格式
- 主模式OR從模式
- 預分頻
- 可編程時鐘極性和相位
- 可編程數據順序
- 發送和接收的中斷,忙狀態
- 硬件CRC
- 故障,過載和CRC錯誤標志
- 支持DMA,單字節收發緩沖,并產生中斷
SPI的功能描述
概述
- 引腳,4PIN,MI,MO,SCK,NSS,NSS為輸出時,片選,做輸入時,如果拉低,則強制主模式進入從狀態,該引腳可不用。
- 兩種模式:
- 軟件NSS模式,引腳作為它用,要設置引腳時可以寫寄存器。
- 硬件NSS模式,使能后拉低NSS,其他設備進入從模式。如果不能拉低,表示總線忙,返回失效。
- 時鐘信號的相位和極性CPOL和CPHA
- CPOL,閑置時時鐘電平。
- CPHA,1:第二個邊沿進行采樣。0:第一個邊沿采樣。
配置為從模式
略
配置為主模式
- 設置波特率
- 設置極性和相位
- 數據格式為8位還是16位
- 設置高位還是低位在前
- 設置NSS引腳
-
設置主從和使能
1.png
上面為串行12864的通信時序,CPOL=1,CPHA=1,我們可以設置為雙線單工通信。
配置為單工通信
- 單工有兩種,1時鐘+1雙向線或者1時鐘+1單向
- 只發送時只用到SCK和MO引腳,不需要處理接收緩沖
發送和接收過程
主模式下,有四種方式:
- 全雙工
- 單向只接收
- 雙向模式時,發送時不接受
- 只接收不發送
主模式全雙工流程如下:單向只發送同這種模式
- 使能SPI模塊
- 寫入發送的數據
- 等待TXE=1,發送完畢,如果要接收,等待RXNE=1,然后讀出
- 發送完畢后,檢查BSY=0后關閉SPI
雙面液晶的通信流程如下:
- 使能
- 寫入要發送的數據
- 等待發送完,讀取TXE
- 寫入第二個……,讀取TXE
- 讀BSY=0后,關閉
CRC計算
- CRC計算可選擇需要的多項式
- 使能以后,將在通信的最后,自動再發送CRC
- 接收的時候可以再計算一遍,然后和接收到的CRC進行對比
狀態標志
- 發送完成 TXE
- 接收完成 RXNE
- 忙 BSY
關閉SPI
主模式全雙工通信時,等待發送完最后一個數據TXE=1后,讀BSY=0后,關閉SPI
利用DMA
TXE=1時觸發DMA,DMA將數據寫入DR后清除TXE,如果只發送,則只使能DMA發送通道
中斷
可設置TXE和RXNE中斷