在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32H750和RT-Thread的CANFD通信實現的記錄

RT-Thread官方賬號 ? 2024-12-10 01:01 ? 次閱讀

1 背景


本人汽車電子行業從業多年,最近兩年主要從事CAN,LIN,ETH的功能開發。前幾日與測試小伙伴溝通的時候談到,雖然目前在前期功能驗證的時候,Vector公司提供的基于CANOE軟件和CAPL腳本的測試環境可以完全模擬各類汽車通信網絡的上的任意節點的任意功能,但是由于價格極其昂貴,所以在項目預算吃緊的情況下,無法做到license完全人手一份。那么在這樣的前提下,是否能夠做一些替代的方案。因此我想到了一些可以做的嘗試:

購入市面上較為便宜的CAN盒,LIN盒,ETH轉T1的盒子等,然后通過python等腳本語言來完成節點的行為模擬

使用STM32GD32等價格親民的片子來自己做一個模擬的物理節點,應用ETH,CAN,LIN等協議棧,通過開源的項目來完成節點的行為模擬

通過一段時間的研究,我發現方案2會更加具有挑戰且對軟硬件的掌控更加自如,因此我打算基于網絡上全開源的項目來完成我的這個設想。

2 目的


如圖所示,我的初期目標還是相對比較簡單的,由于CAN網絡是汽車通訊網絡中最常見也最常用的,并且考慮到單片機的外設io資源,性能等,我打算采用兩路CANFD和一路ETH來做幾個以下比較常規的功能。

節點作為支持CANFD的Node,可以完成對CANFD的報文收發,報文過濾,報文重發等功能

節點作為支持Router的Node,對DoCAN->DoCAN, Doip->DoCAN的診斷路由以及CANFD->CANFD的直接路由

節點作為支持UDS的Node,可以完成對診斷服務的響應。

節點需要支持CAN

通信框架

4187d074-b64f-11ef-8084-92fbcf53809c.png

3 環境


3.1 硬件

初步選型了STM32H750VBT6,網絡上的板子價格相對都比較便宜,并且性能不弱,必要時甚至可以擴充ROM,此外自帶兩路FDCAN,再加上ETH的支持,所以性價比很高。

硬件拓撲如下

419bab9e-b64f-11ef-8084-92fbcf53809c.png

3.2 軟件

軟件么,就毋庸置疑了,哈哈,之前就接觸過rt-thread,沒有真正的使用過,正好接這個機會來更加深入的了解下rt-thread。

4 當前實現的工作


由于我在標題標記了(1),說明STM32H750在CANFD部分的工作需要多個part來描述,因此本文內容僅描述了如何在沒有使能硬件過濾功能的前提下實現基于HAL-FDCAN和TJA1042收發器對CAN FD Frame,CAN Frame的收發實現。硬件過濾的部分需要其他的工作來做更進一步的描述。

4.1 創建工程以及配置

由于我更習慣CLI的工作方式,因此完成下述步驟之后就算基本完成了工程的配置

直接使用studio創建如下工程,創建完成之后不再使用,后續編譯使用cmake + gcc, 調試使用pyocd + daplink

后續使用ENV環境來配置

41aa03ba-b64f-11ef-8084-92fbcf53809c.png

編譯完成后可以直接燒錄并且在串口輸出

41c8ec80-b64f-11ef-8084-92fbcf53809c.png

4.2 時鐘配置

Note:計算CANFD的沖裁域以及數據域的波特率和采樣率的源頭來自于與FDCAN的時鐘頻率,其實根據實際板子配置之后,可以將FDCAN的時鐘配置為常見的20MHZ,40MHZ,80MHZ中的一個,我當前選擇了40 MHz

41da06a0-b64f-11ef-8084-92fbcf53809c.png

4.3 使能CAN的配置

4.3.1

ENV

RT-Thread Components -> Device Drivers ->

[* ] **Using CAN device drivers***

[ ] Enable CAN hardware filter

[*] **Enable CANFD support**

保存配置之后

41f7080e-b64f-11ef-8084-92fbcf53809c.png

4.3.2 CubeMx

4.3.2.1 使能FDCAN1和FDCAN2

420020f6-b64f-11ef-8084-92fbcf53809c.png

4.3.2.2 生成代碼的使用

根據選擇方式的不同,代碼生成位置也會不同,只需要保證drv在調用HAL驅動的時候可以被正確call到即可,具體細節不再贅述,論壇文章頗多。

4.4 完善CANFD的設備驅動

4.4.1 添加宏

在 board.h中添加宏

/*#define BSP_USING_ON_CHIP_FLASH*/

#define BSP_USING_FDCAN

#define BSP_USING_FDCAN1

#define BSP_USING_FDCAN2

4.4.2 添加drv_fdcan.c

根據rtthread的驅動模型,kernel在can.c中提供了can設備各類操作的抽象,但是對CAN控制器的具體操作需要一個設備驅動來完成,而在5.1.0的軟件中只有drv_can.c且里面只支持CAN_HAL。在一番搜索之后發現ARTPI官方例子中有drv_fdcan.c的文件,可以支持FDCAN_HAL。然而這個驅動存在以下幾個小問題,導致其只能發送can幀,而不能發送canfd幀

只支持仲裁域配置,無數據域配置

只支持配置成classic模式,沒有配置成FD模式的接口

沒有提供一個類似于drv_can.c里面提供的在不同時鐘頻率下的不同波特率和采樣率的數據設置集合

沒有提供對Txfifo, txbuffer等方式的靈活設置的接口

不支持數據長度大于8的發送和接收,且沒有提供Length與DLC之間的轉換接口。

等等其他

4.4.3 完成對drv_fdcan.c的一些改進之后,一些重要的配置項如下

時間參數設置的規則

1波特率 = (1 / (n + tseg1 + tseg2)) * fclk

如果配置為40Mhz, 仲裁段500K -80%采樣率,數據段2000K-70%采樣率

/* 位時序配置:

************************

位時序參數 | Normal | Data

--------------------------|--------------|----------------

CAN子系統內核時鐘輸入 | 40 MHz | 40 MHz

時間常量 | 25 ns | 25 ns

相位段1 | 63 tq | 13 tq

相位段2 | 16 tq | 6 tq

同步跳轉寬度 | 16 tq | 6 tq

位長度 | 40 tq = 1 us | 40 tq = 1 us

位速率 | 500k | 2 MBit/s

4.4.4 總線初始化

當完成配置,編譯燒錄之后,啟動系統會自動初始化fdcan1和fdcan2

4.5 測試

4.5.1 測試結果

完成驅動之后,使用FINISH接口編寫了一個FDCAN的測試接口,測試代碼如下

421b1096-b64f-11ef-8084-92fbcf53809c.png

測試結果 ->如圖所示,分別發送了如下命令

422c06a8-b64f-11ef-8084-92fbcf53809c.png

4.5.2 測試結論

可以通過APP層的參數控制,并且由于CANFD對CAN是完全兼容的特性,可以實現在STM32H750+TJA1042的組合上發送

長度為1-8的CAN Frame

長度為1-64的CAN FD Frame

5 未完成的工作


對HDR過濾器的配置,目前FDCAN的過濾配置有多種模式,需要從can. -> drv.fdcan.c 的鏈路上優化配置HDR的方式

對canfd的高數據下的鏈路性能以及壓力測試

文檔中的一些設置描述比較粗略,會再補充細節的。

版權聲明:本文為RT-Thread論壇用戶「Woshizhapuren」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://club.rt-thread.org/ask/article/221a0238569f6f40.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2754

    瀏覽量

    463697
  • 通信
    +關注

    關注

    18

    文章

    6032

    瀏覽量

    135990
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    355983
  • RT-Thread
    +關注

    關注

    31

    文章

    1289

    瀏覽量

    40124
收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(一、版本開發環境及配合CubeMX)

    RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-T
    的頭像 發表于 06-20 00:28 ?5239次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>記錄</b>(一、版本開發環境及配合CubeMX)

    RT-Thread Studio上配置rtthread CANFD驅動來控制M3508電機

    本文旨在RT-Thread Studio上配置rtthread CANFD驅動來控制M3508電機,不涉及任何原理 開發環境:RT-Thread Studio v2.2.6
    發表于 10-08 11:44 ?1322次閱讀
    在<b class='flag-5'>RT-Thread</b> Studio上配置rtthread <b class='flag-5'>CANFD</b>驅動來控制M3508電機

    請問STM32H750(ART-Pi) + LAN8720速率為什么達不到100Mbps?

    **我最近使用ART-Pi(STM32H750)開發板+LAN8720A與PC通信通信協議是TCP。STM32H750是client,PC是server。
    發表于 04-18 09:25

    基于RT-Thread+STM32H750的運動手表設計資料推薦

    1、基于RT-Thread+STM32H750的運動手表設計  該運動手表實現功能如下:  時間日期星期顯示;  網絡時間獲取;  天氣獲取并顯示;  溫度(HTS221),濕度(HTS221
    發表于 08-31 16:10

    RT-Thread studio stm32h750程序大于128KB無法下載怎么辦?

    rt thread studio stm32h750程序大于128KB無法下載
    發表于 02-16 10:55

    STM32H750資料手冊

    STM32H750資料手冊免費下載。
    發表于 05-18 10:38 ?91次下載

    記錄——基于 RT-Thread 實現 USB 虛擬串口

    記錄——基于 RT-Thread 實現 USB 虛擬串口記錄一下我在正點原子 F429 阿波羅開發板上實現 USB 虛擬串口的過程,希望可以
    發表于 12-02 17:21 ?6次下載
    <b class='flag-5'>記錄</b>——基于 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>實現</b> USB 虛擬串口

    RT-Thread STM32 配置系統時鐘(使用外部晶振)

    RT-Thread STM32 配置系統時鐘開發環境芯片:STM32F103RCT6RT-Thread Studio: V1.0.6(現在已經更新到1.1.3,由于本人使用RTT開發已經有一段時間了
    發表于 12-14 18:45 ?14次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>STM32</b> 配置系統時鐘(使用外部晶振)

    Rt-ThreadSTM32輸出PWM

    主要記錄Rt-ThreadSTM32 輸出PWM配置過程,通過設置不同頻率PWM使蜂鳴器發出不同音調
    發表于 12-16 16:57 ?17次下載
    【<b class='flag-5'>Rt-Thread</b>】<b class='flag-5'>STM32</b>輸出PWM

    STM32H750 iap固件升級

    之前寫STM32F4的IAP升級的時候就想寫篇博客記錄一下,但因為懶就一直沒有實施,這次項目用到了STM32H750的IAP升級,所以就趁這次機會記錄一下
    發表于 12-24 19:33 ?15次下載
    <b class='flag-5'>STM32H750</b> iap固件升級

    RT-Thread Studio驅動SD卡

    總結前言硬件平臺:RT-Thread ART-Pi STM32H750XBH6開發板 H750開發板開發軟件:RT-Thread Studio參考博客:
    發表于 12-27 19:13 ?20次下載
    <b class='flag-5'>RT-Thread</b> Studio驅動SD卡

    STM32H750】玩轉ART-Pi(一)——使用STM32CUBMX生成TouchGFX工程

    QSPI-FLASH燒錄算法在ART-Pi H750上移植TouchGFX(三)——移植TouchGFX到RT-Thread系統在ART-Pi H750上移植TouchGFX(四)——使用RT
    發表于 12-28 19:20 ?10次下載
    【<b class='flag-5'>STM32H750</b>】玩轉ART-Pi(一)——使用<b class='flag-5'>STM32</b>CUBMX生成TouchGFX工程

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 <b class='flag-5'>STM32</b>L475 上手指南

    采用 STM32H750 實現電機控制節點維護設備設計

    采用 STM32H750 實現電機控制節點維護設備設計
    的頭像 發表于 10-24 15:33 ?967次閱讀
    采用 <b class='flag-5'>STM32H750</b> <b class='flag-5'>實現</b>電機控制節點維護設備設計

    基于rt-thread的socket通信設計

    最近再研究 rt-thread通信 ,想設計出 eps8266(多個) rt-thread(作為中控) 服務器的通信框架,使用的開發板是 潘多拉
    的頭像 發表于 10-13 15:02 ?1367次閱讀
    基于<b class='flag-5'>rt-thread</b>的socket<b class='flag-5'>通信</b>設計
    主站蜘蛛池模板: 天天操91| 伊人网综合在线视频 | 五月天色婷婷丁香 | 四虎精品视频 | 色婷婷亚洲综合五月 | 国产hs免费高清在线观看 | 国产精品乱码高清在线观看 | 国产精品美女视频 | 中文字幕欧美成人免费 | 偷窥自拍亚洲色图 | 久久精品亚洲一级毛片 | 综合五月天婷婷丁香 | 黄a毛片| 成人午夜亚洲影视在线观看 | 日日操免费视频 | 天天操天天曰 | 天天好比网 | 天天影视欧美综合在线观看 | 一区二区在线看 | 欧美色图一区 | 国产白白白在线永久播放 | 天天干天天做天天射 | 男女视频在线观看免费高清观看 | 亚洲综合激情网 | 四虎国产在线 | 国产精品欧美一区二区三区不卡 | 欧美色a电影精品aaaa | 午夜视频在线免费观看 | 中文字幕网资源站永久资源 | 38pao强力打造永久免费高清视频 | 高h乱肉辣文辣书阁 | 欧美伊人网 | 欧美一级视频免费 | 色综合婷婷 | 久久免费视频2 | 午夜精品视频任你躁 | 中国一级特黄特级毛片 | 青草青草视频2免费观看 | 国产色司机在线视频免费观看 | 韩国成人毛片aaa黄 韩国床戏合集三小时hd中字 | 欧美成人看片一区二区三区 |