stm32f4,spi主從機通信


stm32f4的SPI主從機通信怎么做的可靠:

Android做主機,stm32f4做從機,spi,16bit,主機mode3,從機mode0,發送和接收都用dma;

主機設置從機的參數,參數大於2個字節:

發送一個命令字節,16bit=8bit主命令+8bit子命令,忽略返回數據

根據實際情況設置一個或多個參數,忽略返回數據(發送數據填充0xffff)

主機設置從機的參數,參數大於1個字節:

發送一個命令字節,16bit=8bit主命令+8bit數據

 

主機獲取從機參數:

發送一個命令字節,16bit=8bit主命令+8bit子命令,忽略返回數據

根據實際情況獲取一個或多個參數,忽略發送數據(發送數據填充0xffff)

 

TIP

stm32f4,spi+dma發送大批量數據時會丟數據,但基本上只會丟最會幾個數,Txdma會一直等待,導致新的命令響應不了,現在的做法是,主機結尾多采集10個數據。這時候速率很快,Receive_DMA中斷,可能響應不及時,IRQ中會報OV溢出錯誤,讓spi的管理狀態復位,spi就響應不了了,因此需要在IRQ中注釋掉溢出錯誤的處理。

 

Android發送10個自己以內,或2048個數據都可以,但是2047或4096這樣的就發送失敗,安卓IO報錯。

 


免責聲明!

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



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