STM32 SPI傳送波形

2021-10-20 19:37:24 字數 1397 閱讀 1560

三、實測波形總結

根據spi協議,stm32傳送的波形有四種可能,如圖所示,主要分為兩種時鐘相位(cpha)和時鐘極性(cpol)。

關於時鐘極性,也有很多人把它理解為第乙個邊沿,第二個邊沿:也有人覺得cpha=0時,時鐘是從第乙個邊沿啟動,這樣理解不是很準確。其實還有第二種理解方式,那就是它們都是 第2

t\cfrac

t2​ 的邊沿訊號,如下圖所示:

我個人感覺這樣比第幾個邊沿好理解一些。

首先,連續傳輸或者不連續傳輸都是針對主裝置(master)而言。連續傳輸就是指傳送完資料後,時鐘沒有空閒,立即進行下一次傳輸。如圖所示。

不連續傳輸和連續傳輸相反,在完成一次傳輸之後,時鐘會有一段空閒。如圖所示。

關於什麼情況下是連續傳輸,什麼情況下是間斷傳輸,官方手冊有這麼一段說明。

大概意思就是,你的軟體執行足夠快,能夠檢測到txe標誌,並且立即將資料寫入spi_dr暫存器,那麼就可以實現連續傳輸,否則,就只有間斷傳輸。

然而實際情況就是,無論你是使用輪詢方式,或者中斷方式,甚至使用暫存器編寫程式,也不可能使用軟體做到連續傳輸,除非你將spi的頻率降得很低。

而想要實現連續傳輸,只要一種方式,那就是使用硬體完成以上操作,也就是使用dma進行傳送資料。

以下波形是使用hal庫,採用輪詢方式傳送三個位元組(0xaa,0x55,0x34)的波形圖。通道1為時鐘訊號,通道2為mosi訊號。可以看到,每傳送乙個位元組的資料,時鐘就會空閒一段時間。

以下波形是使用hal庫,採用dma方式傳送三個位元組的波形圖,可以看到,24個時鐘完全連在一起。

本次實驗的spi配置模式為 cpha = 0, cpol = 0,可以看到,剛開始的半個週期,時鐘出現了一些毛刺,同時mosi引腳的資料變為高,這也說明了在cpha=0時,時間會提前半個週期開始,而不是從第乙個邊沿訊號開始。

STM32 SPI主從通訊

分享乙個大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到人工智慧的隊伍中來!我的 我的知乎 獲取更多資訊。主機 訪問密碼 7bb6 從機 訪問密碼 fd5a 訪問密碼 ca90 測試原理及現象 主機間隔500ms傳送10個字元 0 9 從機開啟spi中斷接收資料,接收滿10...

stm32 spi 疑惑解疑 1

傳送時,可以通過檢測spi sr中的txe位,當資料暫存器裡有資料時,txe位是0,當資料全部從資料暫存器的傳送緩衝區傳輸到移位暫存器時txe位被置1,這時候可以再往資料暫存器裡寫入資料。可以通過 while spi i2s getflagstatus spi1,spi i2s flag txe r...

STM32 SPI方式讀寫SD卡

前段時間在51上模擬spi實現了對sd卡的讀取,效果還算不錯,最近將其移植到stm32上,不過使用硬體spi和使用軟體spi還是有差別的。如下 void user spiinit void spi初始化以後就可以寫spi讀寫函式了,以下兩個函式參照了網上的資料,出處找不到了,但是這兩個函式幫了我大忙...