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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32H743+CubeMX-计算FDCAN2上的MessageRAMOffset(使两路FDCAN正常工作)

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32H743+CubeMX-计算FDCAN2上的MessageRAMOffset(使两路FDCAN正常工作) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一. 前言
  • 二. 消息RAM
  • 三. “錯誤”配置之同時使用兩路FDCAN
    • 3.1 FDCAN1
    • 3.2 FDCAN2
    • 3.3 消息RAM的分布
  • 四. “正確”配置之同時使用兩路FDCAN
    • 4.1 FDCAN1
    • 4.2 FDCAN2
    • 4.3 消息RAM的分布
  • 五. 計算FDCAN2的Message RAM Offset
    • 5.1 SRAMCAN_BASE
    • 5.2 hfdcan1.msgRam.EndAddress
    • 計算過程

一. 前言

要在STM32H7上使用FDCAN控制器,需要配置很多參數。例如,波特率,CAN模式,工作模式,TXFIFO,RXFIFO,Message RAM Offset等等。今天我想聊聊Message RAM Offset這個“大坑”,這個”坑“只有當你需要同時使用兩路FDCAN控制器的時候才會出現。所以,想讓STM32H7上的兩路FDCAN同時正常工作的話,理解Message RAM Offset是很必要的。

二. 消息RAM

在《STM32H7x3編程參考手冊》上,有介紹FDCAN1與FDCAN2都共用同一塊RAM。

《STM32H7x3編程參考手冊》也強調這一塊RAM配置的重要性,而且系統也不會幫你檢查。

三. “錯誤”配置之同時使用兩路FDCAN

3.1 FDCAN1

3.2 FDCAN2

3.3 消息RAM的分布


在STM32CubeMX上,FDCAN1與FDCAN2的Message RAM Offset都設置為0。這樣的話,FDCAN1的消息RAM與FDCAN2的消息RAM重疊在一起了。最終,會導致FDCAN2無法正常接收報文。

四. “正確”配置之同時使用兩路FDCAN

4.1 FDCAN1

4.2 FDCAN2

4.3 消息RAM的分布


按照這樣去設置兩路FDCAN的Message RAM Offset的話,就能正常工作了。FDCAN1與FDCAN2各有自己的消息RAM了。
這里還有一個疑問,FDCAN2的Message RAM Offset為什么要設置0x214呢?依據是什么?接著,就要從SRAMCAN_BASE與hfdcan1.msgRam.EndAddress入手了。

五. 計算FDCAN2的Message RAM Offset

5.1 SRAMCAN_BASE

SRAMCAN_BASE的值是0x4000AC00,在《STM32H7x3編程參考手冊》的第103頁能找到。

在HAL庫也能找到。

5.2 hfdcan1.msgRam.EndAddress

hfdcan1.msgRam.EndAddress需要用MDK或者IAR在DEBUG模式下才能看到具體的值,因為hfdcan1.msgRam.EndAddress的值跟FDCAN1的配置參數有關,如果改變FDCAN1的配置參數的話,那么hfdcan1.msgRam.EndAddress也很可能變化。

計算過程

FDCAN2的Message RAM Offset = hfdcan1.msgRam.EndAddress - SRAMCAN_BASE , = 0x4000AE14 - 0x4000AC00 , = 0x214.
直接用代碼編寫公式也是不錯的方法。

總結

以上是生活随笔為你收集整理的STM32H743+CubeMX-计算FDCAN2上的MessageRAMOffset(使两路FDCAN正常工作)的全部內容,希望文章能夠幫你解決所遇到的問題。

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