分享乙個大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到人工智慧的隊伍中來!
我的**:
我的知乎:
」獲取更多資訊。
主機: 訪問密碼 7bb6
從機: 訪問密碼 fd5a
訪問密碼 ca90
測試原理及現象:主機間隔500ms傳送10個字元(0-9),從機開啟spi中斷接收資料,接收滿10位元組資料,置標誌位gspi_flagover有效,並變化led,通過串列埠列印接收到的資料。
一、rcc時鐘配置
該函式位於在bsp.c檔案下面;
使能rcc時鐘:rcc_apb2periph_spi1
二、引腳配置
該函式位於在spi.c檔案下面;
這裡是對spi所使用引腳進行配置。
注意
:spi作為從機,mosi作為從機接收而不是miso,「今天的重點」我還會強調這點。
三、spi配置
該函式位於在spi.c檔案下面;
對spi進行配置。
配置的每一條語句都有注釋,請看源**.
強調一點:spi_cpol_low時鐘空閒為低,這個引腳容易受干擾導致通訊故障。
四、spi中斷控制器配置
該函式位於在bsp.c檔案下面;
因為開啟了中斷接收資料,這裡必須配置中斷控制器。
五、spi中斷處理
該函式位於在stm32f10x_it.c檔案下面;
六、主函式應用
該函式位於在main.c檔案下面;
這就是文章開頭「測試原理及現象」的描述,就不多說了。
六、
今天的重點提示
a.主從連線方式:
這裡對於開始學習的朋友來說,有點不理解(因為基本上都知道串列埠的通訊,主機tx對應從機rx),還以為「主機的mosi」連線的是「從機的miso」,其實這裡是和串列埠的區別之一(當然還有其他,這裡不講解)。具體請看參考手冊。
b.常見問題
之前有寫過關於spi主從通訊的例項。但是,我今天專門找了兩套板子來測試,剛開始,通訊始終有問題(從機不停地在接收0x00資料),結果發現兩板子之間沒有共地,找了根線接上,資料沒有不停地接收了。
但新的問題又來了,開始接收的資料正確,一旦出錯了一位,後面接收到的資料都不對了。我是不停的檢視**,開始始終懷疑**有問題,但把**該了無數次(不知道好多次)之後,手冊看了幾遍,上網也查了很久,還是一樣的現象,結果,我用示波器測試了一下通訊的時鐘(sck),頻率有幾m, 波形間隔大概只有100ns,我就懷疑問題出在通訊的線上,線太長了(估計有四五十厘公尺),果不然,使用短點的通訊線,問題就好了。
說實話,乙個不起眼的問題,可能會耗掉你無數的時間,這裡我將我走過的彎路告訴大家,希望不要走這條彎路,今後的分享中我也會將一些容易出錯的地方拿到這裡講解。
我的**:
STM32 SPI傳送波形
三 實測波形總結 根據spi協議,stm32傳送的波形有四種可能,如圖所示,主要分為兩種時鐘相位 cpha 和時鐘極性 cpol 關於時鐘極性,也有很多人把它理解為第乙個邊沿,第二個邊沿 也有人覺得cpha 0時,時鐘是從第乙個邊沿啟動,這樣理解不是很準確。其實還有第二種理解方式,那就是它們都是 第...
STM32 硬體SPI主從通訊
本例子基於stm32f103zet6晶元,實現spi1與spi2的主從通訊。其中spi1配置為主機,spi2配置為從機,均配置為全雙工模式。硬體連線圖 其中,我們需要注意的是,spi的從機不能主動傳送資料,只能應答資料。本例子的資料互動過程 主機使用查詢方式傳送資料給從機。從機使用中斷接收方式接收資...
stm32 spi 疑惑解疑 1
傳送時,可以通過檢測spi sr中的txe位,當資料暫存器裡有資料時,txe位是0,當資料全部從資料暫存器的傳送緩衝區傳輸到移位暫存器時txe位被置1,這時候可以再往資料暫存器裡寫入資料。可以通過 while spi i2s getflagstatus spi1,spi i2s flag txe r...