關於 STM32 SPI 從機模式的問題
阿新 • • 發佈:2019-01-27
你再尋找 關於SPI 作為從機時 而且還沒有NSS 訊號 而出現數據接收錯誤的煩惱吧
最近給客戶做一個專案 使用到了SPI 從機 在網上找答案 但是沒有找到自己滿意的 現在來說 都沒有 將SPI 通訊接收錯誤的根本原因說明白
網上有很多關於STM32 作為從機來使用 的 問題 主要還是 從機接收資料錯誤
1 關於主從機的 時鐘懸空配置 可以肯定的說 主機與從機的時鐘懸空一定要配成一樣的
這點STM 的官方手冊說的很明白
2 從機的波特率 只與 主機提供的 CLK 訊號有關
3 通訊失敗 或者 資料接收錯誤 問題就出在從機對SPI 的起始訊號的判斷上面
當使用TI 模式 NSS 訊號由硬體 從機對資料的捕獲 就很容易
若沒有NSS 訊號呢 因為STM32 SPI普通模式 根本就沒有對資料的捕獲 做什麼工作 真的有點糊弄我們
它 只是 當我們把SPI 開啟 他就開始進行捕獲 而不管SCK 此時是閒置的還是忙的 這就造成了 我們讀取的SPI 資料錯誤
解決這個問題也很簡單 只要在軟體中 對 SPI 訊號進行處理 得到SPI 線路是 忙的 還是空閒的
根本就是對 SPI 訊號的 捕獲時機
當我們要進行捕獲前先對匯流排SPI 進行判斷 若匯流排SPI 是空閒的 那麼就開啟SPI 進行資料捕獲
若匯流排SPI 是忙的 就等待 匯流排空閒了 在進行捕獲 經過驗證這個方法通訊成功率 幾乎是沒有問題的
QQ475503748