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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

MCAL的CAN模塊配置介紹

CHANBAEK ? 來(lái)源: 嵌入式老林 ? 作者: 嵌入式老林 ? 2023-12-12 15:31 ? 次閱讀

大家好,我是嵌入式老林,從事嵌入式軟件開(kāi)發(fā)多年,今天分享的內(nèi)容是MCAL的CAN模塊配置介紹,希望能對(duì)你有所幫助。

一、CAN模塊配置介紹

之前也分享過(guò)Autosar的基礎(chǔ)知識(shí),不清楚且有興趣的同學(xué)可參考之前的文章。

在做車載相關(guān)的項(xiàng)目中,一般都會(huì)用CAN(或CAN FD)通信,當(dāng)然也有Lin,F(xiàn)lexRay,更高級(jí)的甚至用以太網(wǎng)。初學(xué)者對(duì)這幾個(gè)常用的車載總線不太清楚的,可以移步之前的文章。

先簡(jiǎn)單介紹一下Autosar中CAN是如何通信的,數(shù)據(jù)流,Autosar如何配置。

先來(lái)回顧一下Autosar的架構(gòu):

圖片

普通CAN報(bào)文接收流程:

CAN------CANIF------PDUR------COM

發(fā)送流程就是順序反過(guò)來(lái),從上到下

COM------PDUR------CANIF------CAN

上面這些是屬于Autosar里面的BSW模塊,除了這些需要配置,MCAL也需要進(jìn)行配置才行,也就是非Autosar架構(gòu)中的底層驅(qū)動(dòng),類似于SDK。

本文也主要分享MCAL的CAN配置需要配置哪些東西

圖片

二、CAN控制器的配置

2.1 General配置

CanBusoffProcessing :BusOff的處理方式,中斷(INTERRUPT)或者輪詢(POLLING)

CanControllerActivation :是否激活這路CAN

CanControllerId :節(jié)點(diǎn)號(hào),從0開(kāi)始增加,必須連續(xù)。

CanRxProcessing :接收到報(bào)文后的處理方式,中斷(INTERRUPT)或者輪詢(POLLING)

CanTxProcessing :成功發(fā)送報(bào)文后的處理方式。中斷(INTERRUPT)或者輪詢(POLLING)。

CanWakeupFunctionalityAPI :Can喚醒的一些API函數(shù)是否可用,只有當(dāng)支持CAN喚醒時(shí),這個(gè)選項(xiàng)才可以勾選。

CanWakeupProcessing :CAN喚醒的處理方式,中斷(INTERRUPT)或者輪詢(POLLING)

CanWakeupSupport :是否支持CAN喚醒

CanControllerDefaultBaudrate :波特率的配置

CanPeripheralBusClockRef :CAN時(shí)鐘源選擇

圖片

2.2 波特率配置

配置界面:

圖片

標(biāo)準(zhǔn)CAN的波特率配置:

CanControllerProSeg:傳播段

CanControllerSeg1:相位緩沖段1

CanControllerSeg1:相位緩沖段2

CanControllerSyncJumpWidth:同步跳轉(zhuǎn)寬度

這幾個(gè)參數(shù)的含義的話,之前調(diào)試過(guò)CAN驅(qū)動(dòng)的應(yīng)該就知道了,這里簡(jiǎn)單介紹一下,就是CAN波特率的計(jì)算方法:

波特率 =(CAN時(shí)鐘 / 波特率分頻系數(shù)) / 位時(shí)間

而 位時(shí)間 = tq + tBS1 + tBS2

CAN總線里通過(guò)對(duì)CAN 節(jié)點(diǎn)里的CANBTR寄存器的控制,來(lái)實(shí)現(xiàn)不同波特率的通信。

1)同步段 :一個(gè)位的起始位置,CAN-bus規(guī)定跳變沿為同步信號(hào),

2)傳播段 :發(fā)送節(jié)點(diǎn)發(fā)送一個(gè)位跟接收節(jié)點(diǎn)接收到這個(gè)位之間存在網(wǎng)絡(luò)傳播延遲,傳播段則是為了補(bǔ)償這段傳播延遲。

3)相位緩沖段1和相位緩沖段2 :由于采樣點(diǎn)位置在相位緩沖段1跟相位緩沖段2之間,通過(guò)設(shè)置相位緩沖段1和相位緩沖段2的值,可以調(diào)整采樣點(diǎn)位置,保證每個(gè)位采樣點(diǎn)一致。緩沖段的長(zhǎng)度調(diào)節(jié)范圍則是由

4)同步跳轉(zhuǎn)寬度(SJW) :決定了緩沖段的長(zhǎng)度調(diào)節(jié)范圍。

圖片

CAN FD的波特率配置

根據(jù)實(shí)際項(xiàng)目需求配置對(duì)應(yīng)的波特率即可

CanControllerTxBitRateSwitch:CAN波特率是否可變

圖片

三、CanHardwareObject配置

3.1 General配置

配置界面如下:

1)配置這個(gè)HOH的類型是basic CAN (多個(gè)Pdu對(duì)應(yīng)一個(gè)HardwareObject)還是Full CAN(一個(gè)Pdu對(duì)應(yīng)一個(gè)HardwareObject)

2)配置CAN 報(bào)文是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。

3)配置HOH的ID號(hào),從0開(kāi)始

4)配置這個(gè)HOH是用來(lái)接收還是發(fā)送的

5)配置這個(gè)HOH屬于哪一個(gè)CAN通道

圖片

3.2 Filter配置

要接收的CANID都需要在filter中配置,CAN標(biāo)準(zhǔn)幀在StandardFilter,擴(kuò)展幀的話是在ExtendFilter中添加

每一個(gè)item就是一個(gè)filter,每個(gè)filter里面可以配置ID0,ID1,filter type。對(duì)于每個(gè)接收?qǐng)?bào)文的HOH來(lái)說(shuō),只有通過(guò)了這個(gè)filter,接收的CAN報(bào)文就會(huì)被分配到這個(gè)HOH,再往上傳遞到CANIF

Filter的類型有:

a) CAN_FILTER_ELEMENT_DISABLED :不使能filter

b) CAN_RANGE_FILTER :ID0 =< 接收ID <= ID1 則通過(guò),也就是在ID0和ID1的范圍內(nèi)都能接收到

c) CAN_CLASSIC_BIT_MASK_FILTER :接收ID & ID1 == ID0 則通過(guò),也就是這種類型的過(guò)濾,如果ID1配置為0X7FF,則只能接收到當(dāng)前配置的CAN ID。

d) CAN_DUAL_ID_FILTER :ID0和ID1都通過(guò),即只能接收ID0和ID1

圖片

ID0和ID1的配置是取決于filter type的,下面以CAN_CLASSIC_BIT_MASK_FILTER類型為例介紹ID0和ID1的配置。

原理:能通過(guò)的報(bào)文ID數(shù)量完全取決于屏蔽碼(掩碼),設(shè)得寬,則可以通過(guò)的多(所有位為0,則任意報(bào)文ID都可以通過(guò)),設(shè)得窄,則通過(guò)的少(所有位設(shè)為1,則只有一個(gè)能通過(guò))

圖片

至此,MCAL的CAN模塊就配置完成了,配置完成后,點(diǎn)擊保存,然后再右鍵選擇Verify Project,看看是否有報(bào)錯(cuò),沒(méi)報(bào)錯(cuò)就點(diǎn)擊Generate Project,生成配置代碼,然后同步到編譯整個(gè)項(xiàng)目的工程中

圖片

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

    關(guān)注

    112

    文章

    16367

    瀏覽量

    178112
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305296
  • CAN模塊
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8748
  • 車載總線
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1219
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CAN發(fā)送的底層邏輯:CANwrite函數(shù)機(jī)制介紹

    這個(gè)系列是全新的系列,整個(gè)系列會(huì)通過(guò)實(shí)際操作,調(diào)試實(shí)際的代碼,以CAN為例,完整的解析AUTOSAR的從底層MCAL 到COM等上層模塊的通信鏈路層。重點(diǎn)講述數(shù)據(jù)的流向,以及各個(gè)模塊
    的頭像 發(fā)表于 07-17 15:47 ?6056次閱讀
    <b class='flag-5'>CAN</b>發(fā)送的底層邏輯:CANwrite函數(shù)機(jī)制<b class='flag-5'>介紹</b>

    為什么使用MCAL在Tresos中無(wú)法生成模塊?

    MCAL-2.25 插件時(shí),某些模塊(如端口、MCU、SPI、CAN、FEE、GPT)由于簽名失敗錯(cuò)誤而無(wú)法生成,對(duì)于某些模塊,如 DIO、SMU、ICU,只能生成。 請(qǐng)盡早提供反
    發(fā)表于 05-20 08:16

    TC387 MCAL如何配置互補(bǔ)PWM?

    請(qǐng)問(wèn)有用MCAL配過(guò)三路互補(bǔ)PWM的輸出嗎?研究了好幾天了,沒(méi)找到MCAL配置互補(bǔ)PWM的地方
    發(fā)表于 07-03 07:20

    port的eb mcal配置方法

    port的eb mcal配置方法
    發(fā)表于 07-28 06:16

    請(qǐng)問(wèn)如何對(duì)Mcal Port進(jìn)行配置

    請(qǐng)問(wèn)如何對(duì)Mcal Port進(jìn)行配置?
    發(fā)表于 10-20 07:06

    MCAL配置S32K344 EVB的CAN0,卡在函數(shù)FlexCAN_Ip_SendBlocking中怎么解決?

    我用 NXP MCAL 配置了 S32K344 EVB 的 CAN0,但它會(huì)卡在函數(shù) FlexCAN_Ip_SendBlocking 中。我已經(jīng)閱讀了下面的鏈接并相應(yīng)地設(shè)置了波特率和 UntouchPin。請(qǐng)檢查我的項(xiàng)目是否受到
    發(fā)表于 03-23 06:27

    Mcal Can模塊產(chǎn)品配置代碼使用s32ds配置工具失敗怎么解決?

    我用s32ds配置一個(gè)Mcal CAN模塊,RTD版本是1.0.1,但是當(dāng)我生成代碼時(shí),有幾個(gè)錯(cuò)誤警告如下圖所示。然后我發(fā)現(xiàn)生成的文件FlexCAN_Ip_Cfg.h是空的,項(xiàng)目構(gòu)建失
    發(fā)表于 04-03 09:18

    CAN2ETH/ETH2CAn獲取模塊警告是怎么回事?

    我們正在研究 CAN2ETH/ETH2CAn 項(xiàng)目,我們從 PFE-DRV_S32_M7_MCAL_BETA_0.9.7 中獲取了 NXP 參考項(xiàng)目軟件包:EBTresos
    發(fā)表于 04-11 07:10

    S32K144搭載S32K1XX_MCAL4_2_RTM_1_0_6以及S32DS編譯軟件使用CAN模塊無(wú)法發(fā)送報(bào)文怎么解決?

    我們團(tuán)隊(duì)在使用MCALCAN模塊時(shí)無(wú)法發(fā)送報(bào)文的問(wèn)題,MCAL版本是S32K1XX_MCAL4_2_RTM_1_0_6評(píng)估版,使用EB
    發(fā)表于 11-13 08:29

    英飛凌MCAL和VADC模塊配置資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是英飛凌MCAL和VADC模塊配置資料說(shuō)明。
    發(fā)表于 01-25 08:00 ?150次下載
    英飛凌<b class='flag-5'>MCAL</b>和VADC<b class='flag-5'>模塊</b><b class='flag-5'>配置</b>資料說(shuō)明

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊

    ADC模塊配置,和芯片特性強(qiáng)相關(guān)的地方還是有很多地方(AUTOSAR MCAL標(biāo)準(zhǔn)定義的配置項(xiàng)都是一樣的),本文將詳細(xì)介紹基于Infine
    的頭像 發(fā)表于 01-29 16:45 ?8622次閱讀

    簡(jiǎn)單聊聊MCAL的最小工程

    英飛凌的芯片在汽車電子里用得可謂是頗多,最近剛好在摸TC3系列的CAN模塊,來(lái)簡(jiǎn)單聊聊MCAL的最小工程。
    的頭像 發(fā)表于 03-21 09:25 ?2627次閱讀

    淺析AutoSAR CAN Stack在配置工具中的實(shí)現(xiàn)

    當(dāng)時(shí)在開(kāi)發(fā)MCAL相關(guān)模塊的時(shí)候,偶爾會(huì)看下CAN整個(gè)模塊配置,由于CAN相關(guān)的
    的頭像 發(fā)表于 06-14 14:26 ?2134次閱讀

    使用FSP配置RA的CAN模塊(上)

    使用FSP配置RA的CAN模塊
    的頭像 發(fā)表于 08-05 08:08 ?626次閱讀
    使用FSP<b class='flag-5'>配置</b>RA的<b class='flag-5'>CAN</b><b class='flag-5'>模塊</b>(上)

    使用FSP配置RA的CAN模塊(下)

    使用FSP配置RA的CAN模塊
    的頭像 發(fā)表于 08-05 08:08 ?487次閱讀
    使用FSP<b class='flag-5'>配置</b>RA的<b class='flag-5'>CAN</b><b class='flag-5'>模塊</b>(下)