国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內(nèi)不再提示

玩轉先楫CANFD外設系列之一:輕松搞起CANFD

先楫半導體HPMicro ? 2023-08-02 08:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

先楫的CANFD外設,有兩個CANFD的IP,其中HPM6700系列,HPM6400系列、HPM6300系列使用的是CAN,包括了經(jīng)典CAN和CANFD。而HPM6200系列則使用的MCAN系列,同樣也包括了經(jīng)典CAN和CANFD。兩個CANFD有所差異,hpm_sdk也分為了兩個驅動文件,但基本的操作接口保持一致。


本文闡述HPM6700系列,HPM6400系列、HPM6300系列的CAN,這里就統(tǒng)稱為CAN。MCAN部分后續(xù)文章闡述。


先楫的CAN外設功能比較豐富,比如涉及到各種CAN模式、CAN錯誤警告提示、時間戳等等。可以看看手冊CAN特征描述。


69eb1e24-30ca-11ee-bbcf-dac502259ad0.png

本文主要介紹CAN的基礎配置(引腳時鐘初始化,波特率設置,正常模式下的收發(fā)流程),其他的功能可參考hpm_sdk,后續(xù)根據(jù)需要也會進行文章闡述。


本文以hpm_sdk的操作接口API為例子,進而介紹CAN的相關知識。

關于更多的CAN/CANFD知識可以訪問CIA官網(wǎng),spec文檔可以參考ISO11898-1-2015。本文部分闡述都是基于CIA和ISO的描述參考。

二、實現(xiàn)流程

hpm_sdk中,關于can的例子在samples/drivers/can。使用的板子為hpm6750evk2.


(一)引腳初始化和功能時鐘初始化

對于CAN的引腳初始化,極其簡單,只需要把引腳復用為CAN功能即可。參考hpm6750evk2的board中的CAN初始化。參考board_init_can API

6a2b703c-30ca-11ee-bbcf-dac502259ad0.png

對于CAN功能時鐘的開啟,在hpm6750手冊中,默認時鐘由時鐘源PLL1_CLK1F五分頻得到,PLL1_CLK1為400M,那么CAN的功能時鐘就為80M.

6a44d126-30ca-11ee-bbcf-dac502259ad0.png

同樣sdk當中也做了相關時鐘初始化,參考board_init_can_clock API

6a708b54-30ca-11ee-bbcf-dac502259ad0.png

(二)波特率設置

對于CAN差分信號,這里不做闡述,本文統(tǒng)稱的高低電平均為邏輯0和1。

uart一樣,都是需要每個位的的時間確定,保持雙方采樣的準確。在CAN的概念中,有一個比較重要的次,BitTime(CAN位時間),這個決定一個bit傳輸需要的時間,這也決定了波特率。比如一個位傳輸200ns,那么1S就可以傳輸100000000(ns)/200(ns) = 5000000bit,也就是5Mbps波特率。

在先楫官方HPM6700_HPM6400_UM手冊當中,對于CAN位時間有這么一段描述。

6a7a8582-30ca-11ee-bbcf-dac502259ad0.png

可以看到,一個位時序還包括了Sync_seg、Prop_Seg、Phase_Seg1, Phase_Seg2。Sample point指的是采樣點,也就是這段電平保持時間中的采樣位置點,比如200ns的位時間,采樣點80%,那么就是在160ns中采樣決定他是0或者是1。

在ISO11898-1:2015中,文檔也說明了這部分參數(shù)的定義。

6ae74d16-30ca-11ee-bbcf-dac502259ad0.png

6b24c524-30ca-11ee-bbcf-dac502259ad0.png

這里比較重要的是Sync_Seg,這部分的位時間指的是同步段,用來同步CAN總線的節(jié)點,若檢測到的跳變沿被包含在此段的范圍內(nèi),那么時序就是同步的,采樣點sample_point采樣到的電平就是該位的電平。上述可知道,該段的時間固定為1TQ,其他段時間均是相位的緩沖段,補償邊沿階段的誤差,保證位電平的穩(wěn)定和重新同步。具體可看ISO文檔解釋。

如果兩個節(jié)點位時間不同(各個位段時間不同),也就如果波特率不一樣或者差別到一定程度(CAN的波特率有一定的范圍,只要能保證采樣點的位置大致相同),那么采樣到的數(shù)據(jù)也有可能不一樣。所以對于位時間的各個段的參數(shù)需要保持一致,以便通信同步一致。


6b776bd0-30ca-11ee-bbcf-dac502259ad0.png

如果兩個節(jié)點位時間相同,CAN控制器會自身保持同步,同步的方式有兩種:硬同步和重新同步。


這兩種方式都必須遵守以下規(guī)則:

(1)、一位時間內(nèi)(兩個采樣點之間)只允許一次同步。檢測到邊沿后,應禁用同步,直到下一次在采樣點檢測到的總線狀態(tài)為隱性。


(2)、僅當在前一個采樣點檢測到的總線狀態(tài)(前一個讀總線狀態(tài))為隱性時,邊沿才應引起同步

(3)、當節(jié)點處于總線集成狀態(tài)時,在幀間間隔期間(除了間歇的第一位),以及在 CANFD 幀內(nèi),應在邊緣上執(zhí)行硬同步。也就是在SOF上開始硬同步,其他bit都在重新同步。


(4)、滿足規(guī)則 1 和 2 的所有其他隱性到顯性邊緣均應用于重新同步,但有一個例外:傳輸 CANFD 幀的節(jié)點在傳輸該幀的數(shù)據(jù)階段時不應同步,而采取重新同步。


這里截取了ISO文檔說明:

6bdee1c0-30ca-11ee-bbcf-dac502259ad0.png

1、硬件同步

在以上規(guī)則中,我們可以通過檢測SOF幀起始,SOF幀的開始就是在CAN總線空閑下(連續(xù)11個位的隱形電平,也就是邏輯1),一旦有顯性電平出現(xiàn),那就是有SOF幀開始,根據(jù)上述規(guī)則1和2,可以直接使用的是硬同步。硬同步會強制把位時間拉至邊沿,保持同步。這個階段不受同步跳轉寬度SJW限制。

ISO文檔同樣也有說明:

6bfeee48-30ca-11ee-bbcf-dac502259ad0.png

比如:以下波形,當檢測到SOF時候,CAN控制器需要滿足ISO標準,執(zhí)行硬同步。

6c5f18c2-30ca-11ee-bbcf-dac502259ad0.png

2、重新同步

如果在仲裁段相當比較長的時間內(nèi),比如ID段,連續(xù)的傳輸會帶來相位的左右偏移,這時候就需要重新同步了。這時候就需要SJW,對seg1和seg2適當進行延長或縮短一定的TQ。

6c9c8932-30ca-11ee-bbcf-dac502259ad0.png

6caee83e-30ca-11ee-bbcf-dac502259ad0.png

6ce6798e-30ca-11ee-bbcf-dac502259ad0.png

這看起來有點難理解,那么還是以時序圖來說明,以相位超前超后例子。

相位超前,CAN控制器會根據(jù)sjw同步跳轉寬度進行加入對應的TQ,使之sync_seg段能同步到下一個邊沿。

6d4ac808-30ca-11ee-bbcf-dac502259ad0.png

相位超后,CAN控制器會根據(jù)sjw同步跳轉寬度進行減少對應的TQ,使之sync_seg段能同步到下一個邊沿。

6d5cea38-30ca-11ee-bbcf-dac502259ad0.png

在上面的闡述中,采樣點的取值范圍尤為重要,對于同步上也是比較關鍵的參數(shù),在ISO中并無此建議值,但是在hpm_sdk中有提及,建議是75%到87.5%。

6d951156-30ca-11ee-bbcf-dac502259ad0.png

從上面講了一大堆,其實上面所闡述的一些同步均由CAN控制器實現(xiàn),但是為了方便理解軟件開發(fā),是有必要了解。

CAN的位時序涉及到CAN時基、sync_seq、sjw、seg1和seg2。在先楫當中也有涉及到這些寄存器,分為仲裁段(標稱位)和數(shù)據(jù)段位。需要注意的是:

先楫的CAN的seq1包括了位時序的sync_seg+prog_seg+phase_seq1。


先楫的CAN的seq2是位時序的phase_seq2。


根據(jù)ISO規(guī)定,sjw不計入到位時序中。


6dbbd476-30ca-11ee-bbcf-dac502259ad0.png

3、hpm_sdk的波特率設置API

sdk的CAN驅動的波特率設置,寫的比較貼心,提供了兩種方式來設置。一種是直接代入實際的波特率,第二種是自己寫入位時序參數(shù)。根據(jù)use_lowlevel_timing_setting這個變量來決定哪種方式。

如果需要使能CANFD,則需要開啟enable_canfd,超過1M的數(shù)據(jù)段波特率,建議開啟enable_tdc。

這些參數(shù)的成員說明可以查看SDK的can_config_t結構體,這里不做闡述。

6de6bfce-30ca-11ee-bbcf-dac502259ad0.png

對于直接代入實際的波特率的方式,sdk使用ISO文檔建議的位時序參數(shù),適合通用的場合。

6e41624e-30ca-11ee-bbcf-dac502259ad0.png

6e8b316c-30ca-11ee-bbcf-dac502259ad0.png

SDK中,根據(jù)波特率轉換成對應的位時序參數(shù)。API接口是can_set_bit_timing。里面調(diào)用了can_calculate_bit_timing這個API得出位時序參數(shù)帶入到CAN的對應寄存器中,完成波特率的設置。

6eb21b6a-30ca-11ee-bbcf-dac502259ad0.png

can_calculate_bit_timing根據(jù)波特率和CAN時鐘先算出TQ和分頻系數(shù)相乘值num_tq_mul_prescaler,然后依次代入分頻系數(shù)直到算出tq和分頻系數(shù)等于num_tq_mul_prescaler,得出一個位時序的TQ數(shù)量,再根據(jù)采樣點范圍算出SEQ1和SEQ2,但會再匹配ISO建議的位時序參數(shù)的對應最小和最大值,保證在此范圍內(nèi)。否則返回錯誤。

需要注意的是:

先楫的這個CAN外設的CANFD支持非ISO標準和ISO標準,也就是enable_can_fd_iso_mode,sdk默認是使用ISO標準,需要使用can_get_default_config這個API初始化參數(shù)。否則可能就是非ISO標準。

非ISO標準和ISO標準,對于經(jīng)典CAN不受影響,但是CANFD會報CRC錯誤。


(三)收發(fā)數(shù)據(jù)流程

對于CAN幀結構,這里不做闡述。調(diào)用ISO文檔的截圖理解:

6edf6318-30ca-11ee-bbcf-dac502259ad0.png

6f13bb5e-30ca-11ee-bbcf-dac502259ad0.png

上述提到,對于接收來說,有16個FIFO;對于發(fā)送來說,有8個副發(fā)送緩沖器。這樣對于收發(fā)來說是相當足夠的。

在sdk當中,收發(fā)都提供了非阻塞和阻塞接口,分別對應的后綴是_noblocking或者blocking。


接收阻塞API:can_receive_message_blocking

接收非阻塞API:can_read_received_message

建議使用非阻塞API,開啟接收中斷以及滿FIFO中斷。在中斷讀取FIFO數(shù)量,最大性能提取數(shù)據(jù),然后依次調(diào)用can_read_received_message。比如:

6f299654-30ca-11ee-bbcf-dac502259ad0.png

對于發(fā)送:

阻塞接口:can_send_message_blocking

非阻塞接口:can_send_message_nonblocking

建議使用非阻塞接口,每次調(diào)用前判斷發(fā)送緩沖器是否滿,然后依次調(diào)用can_send_message_nonblocking塞入數(shù)據(jù)。比如:

6f6f52d4-30ca-11ee-bbcf-dac502259ad0.png


(四)實現(xiàn)效果

HPM6750的四路CANFD,在500K仲裁段5M數(shù)據(jù)段的波特率下,可以幾乎跑滿載。

6f87201c-30ca-11ee-bbcf-dac502259ad0.png

實驗平臺:hpm6750evkmini+stephen大佬開發(fā)的CANFD適配擴展板。

6fa86c2c-30ca-11ee-bbcf-dac502259ad0.png

三、總結

對于CAN的,本文主要闡述波特率設置、數(shù)據(jù)收發(fā)流程。其他的比如過濾器組設置、總線錯誤等后續(xù)再闡述。

先楫HPM_SDK對于CAN驅動,相關API接口以及結構體定義比較清晰,容易入手使用。

先楫的CANFD的收發(fā)自帶FIFO緩存器,開發(fā)者可以根據(jù)需求使用,可以提高收發(fā)性能,達到滿載測試性能。

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

    關注

    59

    文章

    3067

    瀏覽量

    472748
  • 模式
    +關注

    關注

    0

    文章

    65

    瀏覽量

    13813
  • CANFD
    +關注

    關注

    0

    文章

    106

    瀏覽量

    5899
  • 先楫半導體
    +關注

    關注

    12

    文章

    285

    瀏覽量

    3301
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【瑞薩RA × Zephyr開發(fā)板評測】+ CANFD

    感謝【瑞薩RA x Zephyr評測】三、CAN模塊測試_瑞薩 zephyr-CSDN博客 上述并未實現(xiàn)CANFD已經(jīng)擴展幀接收 板子接線如下圖: P401接CAN收發(fā)器TXD P402接CAN
    發(fā)表于 02-03 00:08

    【CPKCOR-RA8D1】+ 4. 解析CANFD 的DBC協(xié)議,破解整車廠奧秘

    DBC文件是種集成了CAN和CANFD報文格式幀的數(shù)據(jù)庫,和整車廠合作開發(fā)項目時,必定會接觸到DBC文件,解析DBC文件是考驗個汽車診斷工程師的終極水平題目!!!!!! 手頭上剛好有和寶馬
    發(fā)表于 10-18 18:12

    ZPS-CANFD總線分析儀:鍵操作,全面評估CAN/CANFD節(jié)點健康狀態(tài)

    本文導讀在現(xiàn)場進行節(jié)點測試時,工程師們時常面臨挑戰(zhàn):節(jié)點通信不穩(wěn)定、信號質(zhì)量不佳、故障定位困難。這些常見問題往往需要耗費大量時間和精力進行排查。ZPS-CANFD總線分析儀提供鍵生成節(jié)點測試報表
    的頭像 發(fā)表于 09-26 11:46 ?542次閱讀
    ZPS-<b class='flag-5'>CANFD</b>總線分析儀:<b class='flag-5'>一</b>鍵操作,全面評估CAN/<b class='flag-5'>CANFD</b>節(jié)點健康狀態(tài)

    國產(chǎn)CANFD芯片技術特性與應用前景綜述:以ASM1042系列為例

    本文綜述了國科安芯推出的國產(chǎn)CANFD芯片ASM1042系列的技術特性與應用前景。ASM1042系列作為款高性能的CANFD收發(fā)器,支持5
    的頭像 發(fā)表于 08-27 18:02 ?1309次閱讀

    如何使用 M460 系列微控制器 (MCU) 接收和打印 CANFD 總線上的所有消息?

    使用 M460 系列微控制器 (MCU) 接收和打印 CANFD 總線上的所有消息
    發(fā)表于 08-20 06:17

    廣成科技CANFD轉CAN總線GCAN-418的優(yōu)勢

    作為CAN總線的升級產(chǎn)品,CANFD相較于傳統(tǒng)的CAN總線,擁有如下幾個方面的優(yōu)勢。
    的頭像 發(fā)表于 08-05 11:47 ?1117次閱讀
    廣成科技<b class='flag-5'>CANFD</b>轉CAN總線GCAN-418的優(yōu)勢

    stm32支持canfd和dma結合使用嗎?

    stm32支持canfd和dma結合使用嗎
    發(fā)表于 08-01 07:15

    CANFD節(jié)點的采樣點如何測量?

    本文導讀為提升CAN/CANFD網(wǎng)絡的通信可靠性,各節(jié)點需盡可能配置合適且致的采樣點。然而在設備CAN通信采樣點參數(shù)未知的情況下,如何驗證各節(jié)點采樣點設置的致性?本文結合ZPS-CANFD
    的頭像 發(fā)表于 07-31 11:34 ?1353次閱讀
    <b class='flag-5'>CANFD</b>節(jié)點的采樣點如何測量?

    半導體高性能MCU入駐立創(chuàng)商城,國產(chǎn)芯勢力再添新動能

    半導體(HPMicro)宣布其全系列高性能MCU芯片正式上架立創(chuàng)商城(LCSC),標志著國產(chǎn)高端MCU在供應鏈渠道與生態(tài)服務方面邁上新臺階,國產(chǎn)芯勢力再添新動能。
    的頭像 發(fā)表于 07-31 08:32 ?1183次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半導體高性能MCU入駐立創(chuàng)商城,國產(chǎn)芯勢力再添新動能

    CANFD 0 通道 2 上收到的所有消息傳遞到 CANFD 1 通道 0,是否可以使用 DAM 通道?

    你好 我正在嘗試將 CANFD 0 通道 2 上收到的所有消息傳遞到 CANFD 1 通道 0,是否可以使用 DAM 通道?如何。 我在配置 CANFD 1 通道 0 中的源 FiFo 0 和目標 FiFo 0 的 DMA 描述
    發(fā)表于 07-14 06:56

    CANFD模塊中的CLK_GR5如何配置?

    ,其中描述CANFD會用到兩個時鐘,其中的CLK_GR5 (CLK_SYS)在SDL例程中沒有找到相關配置代碼,請問這部分在哪里配置,還是使用默認配置即可?
    發(fā)表于 07-14 06:06

    LOTO示波器自定義解碼功能—CANFD解碼

    /?spm_id_from=333.1365.list.card_archive.click 。 視頻中僅對串口進行解碼演示,正好我們從客戶手中拿到了塊USB轉CAN/CANFD模塊,如下圖所示, 本文借此對自定義解碼功能
    的頭像 發(fā)表于 07-11 10:34 ?1057次閱讀
    LOTO示波器自定義解碼功能—<b class='flag-5'>CANFD</b>解碼

    解析RZ/N2L CANFD模塊的緩沖區(qū)機制(3)

    CANFD模塊的緩沖區(qū)機制,幫助工程師更高效地管理CAN消息,提高系統(tǒng)性能。(下面的內(nèi)容主要涉及RZN2L CANFD外設手冊的解讀,篇幅較長,感興趣的讀者可以收藏,以備日后不時之需)
    的頭像 發(fā)表于 05-20 13:53 ?1242次閱讀
    解析RZ/N2L <b class='flag-5'>CANFD</b>模塊的緩沖區(qū)機制(3)

    車載通信方案為何選擇CAN/CANFD

    摘要 隨著汽車電子技術的飛速發(fā)展,車載通信系統(tǒng)在車輛的智能化、網(wǎng)聯(lián)化進程中扮演著至關重要的角色。控制器局域網(wǎng)絡(CAN)及其擴展版本CANFD憑借其卓越的可靠性、高效的數(shù)據(jù)傳輸能力和強大的抗干擾特性
    的頭像 發(fā)表于 03-25 21:38 ?989次閱讀

    STM32F743的canfd錯誤寄存器,TEC,REC等信息怎么復位?

    STM32F743的canfd錯誤寄存器,TEC,REC等信息怎么復位?重新初始化后寄存器值仍然保持。
    發(fā)表于 03-14 07:04