[STM32F4xx 學習] SPI小結


一、STM32F4xx系列的SPI特點:

1. 支持全雙工的3線SPI模式(即SCK, MISO, MOSI)

2. 支持單工2線傳輸,同時數據線可以設置成單向或者雙向模式

3. 8-bit, 16-bit可選的數據長度

4. 可選主從模式,並且支持多主模式

5. 主模式8種波特率選擇(最高波特率fPCLK/2),從模式最高頻率為fPCLK/2

6. 主從模式下,片選線(NSS)可以設置為硬件控制或軟件控制,同時支持主/從操作下的動態轉換

7. 時鍾線的極性和相位可以通過寄存器設置

8. 移位寄存器可以設置成高位先出(MSB-first)或者低位先出(LSB-fisrt)

9. 具有SPI 總線忙碌(bus busy)標志位

10. 支持 SPI TI 模式

11. 支持硬件CRC

  • 可以在數據流后傳輸CRC(發送模式)
  • 自動校驗校驗CRC(接收模式)

12.具有主模式錯誤標志位,溢出標志位,CRC錯誤校驗標志位,同時可觸發中斷

13. 1-byte發送/接受緩存,並且支持DMA請求。

 

二、傳輸過程中的狀態標志位(BSY, TXE, RXNE)

1. 全雙工主模式連續傳輸

 圖1. 全雙工主模式連續傳輸時序圖

  • BSY 在傳輸時硬件置1,傳輸完成后硬件清0,圖1方框①所示
  • 當Tx緩存器無數據時,TXE置1;對DR(數據寄存器,下同)進行寫操作將使TXE清0,圖1方框②所示
  • 當SPI接收到完整的數據后(Rx 緩存器不為0),RXNE將置1;對DR進行讀操作將使RXNE清0,圖1方框③所示

 

2. 全雙工從模式連續傳輸

圖2.  全雙工從模式連續傳輸

  • BSY在傳輸期間硬件置1,在下一次傳輸的第一個SPI時鍾周期硬件清0,然后再由硬件置1,圖2方框①所示
  • 當Tx緩存器無數據時,TXE置1;對DR進行寫操作將使TXE清0,圖2方框②所示
  • 當SPI接收到完整的數據后(Rx 緩存器不為0),RXNE將置1;對DR進行讀操作將使RXNE清0,圖2方框③所示

 

3. 單工發送主模式連續傳輸

圖3. 單工發送主模式連續傳輸時序圖 

  • BSY在傳輸期間硬件置1,在傳輸完成后硬件清0,圖3方框①所示
  • 當Tx緩存器無數據時,TXE置1;對DR進行寫操作將使TXE清0,圖3方框②所示

 

4. 單工發送從模式連續傳輸

圖4. 只發送從模式連續傳輸時序圖

  • BSY在傳輸期間硬件置1,在下一次傳輸的第一個SPI時鍾周期硬件清0,然后再由硬件置1,圖4方框①所示
  • 當Tx緩存器無數據時,TXE置1;對DR進行寫操作將使TXE清0,圖4方框②所示

 

5. 單工接收模式連續傳輸

圖5. 單工接收模式連續傳輸時序圖

  • 當SPI接收到完整的數據后(Rx 緩存器不為0),RXNE將置1;對DR進行讀操作將使RXNE清0,圖5方框①所示

 

6. 非連續傳輸

圖6. 非連續傳輸時序圖

  • BSY 在傳輸期間硬件置1,在每次傳輸完成后置0,如圖6方框①所示
  • 當Tx緩存器無數據時,TXE置1;對DR進行寫操作將使TXE清0,圖6方框②所示

 

三、連續傳輸與非連續傳輸的定義

      主模式下,假如程序能很快地檢測TXE的上升沿或TXE中斷(即發送緩存器為空),在當前數據還未發送完成時(即移位寄存器還有數據尚未發送完),對DR寄存器進行寫操作,這種情況稱作連續傳輸,傳輸過程中SPI CLK是連續的,如圖1~圖5所示。

      反之,假如在對DR寄存器進行寫操作時,上一次的數據已發送完(即移位寄存器為空),這種情況稱為非連續傳輸,傳輸過程中SPI CLK是斷續的,如圖6所示。

 

/×××××××××××××××××××××××××××××××××××××××× THE END××××××××××××××××××××××××××××××××××××××××××××/

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM