• 資料介紹
    • 前言
    • 問題分析
    • 解決方法
    • 總結
  • 資料預覽
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1340 STM32H5讀取溫度傳感器校準值時進HardFault的原因分析

03/22 14:47
600
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1340 STM32H5讀取溫度傳感器校準值時進HardFault的原因分析

448.96 KB

前言

有客戶反饋,在使用 STM32H5 讀取溫度傳感器校準值地址時,會進入 HardFault,而在其他系列芯片中讀取這個參數(shù)時并沒有此現(xiàn)象。在 NUCLEO-H563ZI 開發(fā)板上去復現(xiàn)此問題,發(fā)現(xiàn)只有開啟 ICACHE 后才會復現(xiàn),初步驗證說明進入 HardFault 與 ICACHE 相關,如果直接關閉ICACHE 雖然可以解決進入 HardFault 的問題,但勢必會影響代碼執(zhí)行的效率。所以,我們希望能找到一種更好的方式去處理此問題。

問題分析

經(jīng) Datasheet 查詢,兩個溫度傳感器校準值 TS_CAL1 和 TS_CAL2 的地址分別為 0x08FFF814-0x08FF F815 和 0x08FF F818-0x08FF F819。

解決方法

經(jīng)上述分析后,我們只需要把[0x08FF F000-0x08FF FFFF]這段地址區(qū)域設置為 nonecacheable,通過 CubeMX 進行配置。

總結

溫度傳感器校準值及 UID 等一些信息在 H5 中屬于只讀區(qū)域,而這個區(qū)域在 AHB 訪問時,默認內(nèi)存屬性為 cacheable,需要通過 MPU 把這些區(qū)域設置為 none-cacheable,才能正常訪問。每個系列的芯片架構都或多或少有差別,當按以往經(jīng)驗操作不能實現(xiàn)功能時,不妨對照相應芯片的數(shù)據(jù)手冊、參考手冊、應用筆記、甚至勘誤手冊,也許就能發(fā)現(xiàn)問題所在。

資料預覽

相關推薦