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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

华大 MCU 之五 SPI 从机 DMA 模式 配置(不能正常接收问题处理)

發布時間:2024/10/14 78 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华大 MCU 之五 SPI 从机 DMA 模式 配置(不能正常接收问题处理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??最近有個需求是需要使用 華大 MCU(HC32F460) 的 SPI 作為從機來接收數據,無奈搞了兩天死活不可用。配置完 SPI 的從機模式后,只要啟動主機端的發送就出現如下圖所示的錯誤:

下面是 SPI 主機發送數據的時序圖(黃色為 CS,綠色為 CLK):

比較特殊的是,SPI 主機要求只發送數據,不進行接收(主機只有數據輸出引腳)! 這就要求在從機 SPI 可以不發送數據,節省一個 MCU 的 IO。正是這一點,導致我在配置從機 SPI 時掉入了坑里(從機 SPI 只配置了接收!!!)。下面我們重點說一說我的經歷,讓大家少進坑。

從機模式

??無論是用了多年的 STM32 系列 ,還是切換后的華大 MCU 系列,SPI 從機模式本次是第一次使用。也因此,我對于從機 SPI 的配置也不是很了解。首先,去手冊中查找從機 SPI 的相關介紹:

  • HC32F460 的 SPI 支持 4 線式 SPI 模式和 3 線式時鐘同步運行模式,這里我需要使用 4 線式 SPI 運行模式。至于 3 線時鐘同步運行模式,感興趣的自行去看手冊。

    標準里的 SPI 3 線制不是指的 MOSI 和 MISO 合并一個么?和華大手冊里的 3 線制不是一個東西啊

  • 從機模式時使用 MOSI 接收,MISO 發送

  • 上圖中紅色圈出來的地方需要注意,根據我的試用,從機模式下也有欠載錯誤檢測。

  • 從機 SPI 配置

    ??在看了手冊的相關介紹之后,接下來就是實際寫代碼進行配置了。SPI 的配置還是比較簡單的,我這里使用了 DMA 進行接收數據。我們直接調用庫函數即可。如下:

  • 在配置 IO 的時候,我這里不配置 MISO,因為我的需求里面不需要從機發送。

  • 配置復用之前,我先把 IO 配成輸入,且帶上拉。這主要是為了保證 IO 的初始電平。這個與硬件設計有關!

    舉個例子:對于串口,協議規定默認的電平為高電平。如果硬件沒有配置上拉,則我們必須先把 IO 配置帶上拉,否則可能導致無法接收數據

  • 注意上面的紅色框中的代碼,這個是用來發送數據的!在一開始配置時,我并沒有配置發送 DMA,因為我一直認為作為從機,我不需要發送數據,自然我也不需要配置 SPI 的發送,所以在最初的配置中沒有上圖中紅色框中的內容。這就導致陷入了文章開始說的誤區。

  • 分析總結

    ??HC32F460 的 SPI 從機模式并沒有只接收這種配置(ST的 SPI 可以配置僅接收),這就意味著,不管我們用不用 SPI 從機發送功能,都必須要配置發送。

    ??如果不使用發送,則可以不去配置 SPI 從機發送引腳(MISO),節省出來的 IO 可以作為普通 IO 去使用。

    ??在不使用發送功能時,配置的發送可以根據需要發送任意一個字節即可。例如,上面我的 DMA 發送中,僅僅就是循環發送一個字節 00。否則將導致本文開篇截圖的欠載錯誤!我的理解是,因為 HC32F460 不能配置單獨接收(對比 STM32 系列的 SPI 可以配置 僅接收、僅發送等模式),所以默認從機是收發都啟用(工作)的狀態。

    ??根據手冊的說明,在產生欠載錯誤后,會主動停止 SPI,因此實際使用中,需要處理欠載錯誤等異常的情況!而且,MCU 并沒有提供關閉這個錯誤檢測的配置項!!!因此,一旦出錯或者說 DMA 停止了發送,這必然導致出現上面的錯誤!!

    參考

  • HC32F460系列用戶手冊Rev1.21.pdf
  • HC32F460 驅動庫示例代碼
  • 總結

    以上是生活随笔為你收集整理的华大 MCU 之五 SPI 从机 DMA 模式 配置(不能正常接收问题处理)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。