日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 SPI架构

發(fā)布時間:2025/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 SPI架构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

STM32 芯片集成了專門用于 SPI 協(xié)議通訊的外設(shè)。

通訊引腳:SPI 硬件架構(gòu)從 MOSI、MISO、SCK 及 NSS 線展開;STM32 芯片有多個 SPI 外設(shè),它們的 SPI 通訊信號引出到不同的 GPIO 引腳上,使用時必須配置到這些指定的引腳。

SPI1是APB2上的設(shè)備,最高通信速率36Mbtis/s,SPI2、SPI3 是 APB1上的設(shè)備,最高通信速率18Mbits/s。

SPI3 用到了下載接口的引腳,這幾個引腳默認功能是下載,如果想使用 SPI3 接口,則程序必須禁用這幾個IO 口的下載功能。

了解stm32 SPI架構(gòu),主要了解的是寄存器之間運作的聯(lián)系

控制寄存器(CR1/CR2)

整體控制邏輯負責協(xié)調(diào)整個SPI 外設(shè),控制邏輯的工作模式通過控制寄存器(CR1/CR2)的參數(shù)改變,基本的控制參數(shù)包括SPI 模式、波特率、LSB 先行、主從模式、單雙向模式等。數(shù)據(jù)幀長度可以通過控制寄存器 CR1的DFF 位配置 成 8 位及 16 位模式。

通過配置控制寄存器CR的CPOL 位、CPHA位,可以把 SPI 設(shè)置成4 種 SPI 模式之一。

SCK 線的時鐘信號,由波特率發(fā)生器根據(jù)控制寄存器 CR1中的 BR[0:2]位控制,該位是對 fpclk時鐘的分頻因子,對 fpclk的分頻結(jié)果就是 SCK 引腳的輸出時鐘頻率。 fpclk頻率是指 SPI 所在的 APB 總線頻率,APB1 為 fpclk1,APB2 為 fpckl2。

數(shù)據(jù)寄存器(DR):寫 SPI 的數(shù)據(jù)寄存器 DR,可以把數(shù)據(jù)填充到發(fā)送緩沖區(qū);讀數(shù)據(jù)寄存器DR,可以獲取接收緩沖區(qū)中的內(nèi)容。

數(shù)據(jù)移位寄存器

SPI 的 MOSI 及 MISO 都連接到數(shù)據(jù)移位寄存器上。

當向外發(fā)送數(shù)據(jù)的時候,數(shù)據(jù)移位寄存器以發(fā)送緩沖區(qū)為數(shù)據(jù)源,把數(shù)據(jù)一位一位地通過數(shù)據(jù)線發(fā)送出去。

當從外部接收數(shù)據(jù)的時候, 數(shù)據(jù)移位寄存器把數(shù)據(jù)線采樣到的數(shù)據(jù)一位一位地存儲到接收緩沖區(qū)中。

狀態(tài)寄存器(SR):在外設(shè)工作時,控制邏輯會根據(jù)外設(shè)的工作狀態(tài)修改狀態(tài)寄存器(SR),只要讀取狀態(tài)寄存器相關(guān)的寄存器位,就可以了解 SPI 的工作狀態(tài)。控制邏輯還根據(jù)要求,負責控制產(chǎn)生 SPI 中斷信號、DMA 請求及控制 NSS 信號線。實際應(yīng)用中,一般不使用 STM32 SPI 外設(shè)的標準NSS 信號線,而是使用普通的 GPIO,軟件控制它的電平輸出,從而產(chǎn)生通訊起始和停止信號。


下面是CPOL=1、CPPHA=1時的主模式示例(雙線全雙工),CPOL=1 時, SCK 在空閑狀態(tài)時為高電平;CPHA=1 時,數(shù)據(jù)信號在 SCK 的偶數(shù)邊沿被采樣。(配置控制寄存器CR的CPOL 位、CPHA位)

首先控制 NSS 信號線,產(chǎn)生起始信號;

把要發(fā)送的數(shù)據(jù)寫入到數(shù)據(jù)寄存器DR中,該數(shù)據(jù)會被存儲到發(fā)送緩沖區(qū);

數(shù)據(jù)移位寄存器:通訊開始,SCK 時鐘開始運行。MOSI 把發(fā)送緩沖區(qū)中的數(shù)據(jù)一位一位地傳輸出去;MISO 則把數(shù)據(jù)一位一位地存儲進接收緩沖區(qū)中。

狀態(tài)寄存器 SR中有TXE標志位、RXNE標志位)

TEX標志:TXE標志位置 1,表示傳輸完一幀,發(fā)送緩沖區(qū)已空。TXE 標志位為 1 時,若還要繼續(xù)發(fā)送數(shù)據(jù),則再次往數(shù)據(jù)寄存器DR寫入數(shù)據(jù)即可。

RXNE標志:RXNE 標志位被置 1,表示當接收完一幀數(shù)據(jù),接收緩沖區(qū)非空。RXNE標志位為1時,通過讀取數(shù)據(jù)寄存器 DR可以獲取接收緩沖區(qū)中的內(nèi)容。

假如使能了 TXE 或 RXNE 中斷,TXE 或 RXNE 置 1 時會產(chǎn)生 SPI 中斷信號,進入同一個中斷服務(wù)函數(shù)。可通過檢查寄存器位來了解是哪一個事件,再分別進行處理。也可以使用 DMA 方式收發(fā)數(shù)據(jù)寄存器 DR中的數(shù)據(jù)。

總結(jié)

以上是生活随笔為你收集整理的stm32 SPI架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。