基于EB tresos配置CAN过程

注意:本篇文章仅作为个人学习记录,由于本人技术水平有限,可能会有出错,欢迎各位指正,以便后续更改。

配置CAN通信涉及到MCU时钟,Port的IO端口配置,以及CAN的收发。

一、MCU配置

MCU时钟源配置,需要在MCU路径McuClockSettingConfig>McuClockReferencePoint 中配置添加时钟树所需的MCU资源参考点。

注意:在此位置添加时钟参考点频率为无效值时,需要在McuClockSettingConfig>PCC中增加时钟树外设,定义外设名称,外设时钟,分频,时钟频率。

二、Port配置

选择板子CAN3,依照原理图,配置对应的CAN3,需配置PTE15、PTE16

    在对应的引脚号下面,可选相应的功能端口,在板子上实际接通得是CAN3

  CAN的Tx引脚配置

PortPin Id:Port容器E的引脚ID

PortPin PCRn  :选择使用的实际ID

PortPin Mode  :引脚的功能选择,这里选择CAN5发送

PortPin Pull Enable :是否启用上拉电阻或下拉电阻

PortPin Direction:选择引脚方向为输入

  CAN的Rx引脚配置

三、CAN配置

1、General配置

2、Controller配置

2.1 新建一个CAN Controller

2.2 Can controller的General配置

双击进入新建的CanController进行配置

这里的Can CPU Module Reference Clock和Can CPU Function Reference Clock,就为时钟选取,这里选了默认的系统时钟和MCU配置的CAN5时钟,收发模式及busoff均设置为中断方式。

2.3 波特率配置

新建波特率配置

双击进入配置

Can Module Clock (Hz):此参数为在CAN口配置的时钟频率CAN5

Can Controller BaudRate (Kbps)  :设置CAN通信波特率默认为500

Can Controller BaudRate Config ID:ID默认为0

Can Controller Prescaller:分频系数,设置为2

Can Total Needed Tq number:Tq number系数是由时钟,分频系数,波特率计算出来的,计算公式:BaudRate =  时钟源 /(Prescaller x Tq number),计算可得值为12

Can Synchronization Segment (1 -> 1) :CAN同步段,设置为1。

Can Propagation Segment :CAN传播段

Can Phase Segment 1-2:CAN相位缓冲段1和2

Can Resynch Jump Width:同步跳跃宽度设置为1

Can Sample Point:采样点

说明:采样点 = (Synchronization Segment + Propagation Segment  +  Phase Segment 1)/ Tq number;且Synchronization Segment + Propagation Segment + Phase Segment 1 +  Phase Segment 2 = Can Total Needed Tq number。

注意:Tq number不可过大,过大了就把分频系数调大,计算出来的Tq值就小。

2.4 CANFD配置

勾选 CAN FD Support,配置方法和CAN相似

2.5 CANFD第二采样点配置

3、配置CanHardwareObject

3.1 添加CanHardwareObject接受和发送

注意:Object的每一路CAN,必须按照先接受后发送,先FULL,后BASIC的排列;Can Object ID (MB Handle) 必须依次排列;

双击进入新建的接受类

Can Implementation Type :CAN是BASIC,还是FULL,FULL指接受固定的id,BASIC接受多个id,可设置id过滤,接受范围内的id报文

Can MB Type :发送或接受选择

Can Controller Reference:关联CanController

双击进入新建的发送类

3.2 设置id滤波

    滤波由两个重要参数组成Filter Code 与 Filter Mask ,两者关系为 ID & Filter mask = Filter Code ,求掩码看重不重要,1表示重要,0表示不重要。例如id范围为0x600-0x67f

①第一位 6 -0110每一位都关心,故Filter mask为111=7,Filter Code为0110 = 6

②第二位 0~7 - 0000~0111,只关心第一位必须为0,所以Filter mask为1000=8,因为第一位必须为0,所以&操作后Filter Code第一位必须为0,其他位也为0,所以Filter Code 为0000=0

③第三位0~F - 0000~1111,这四位都不关心,所以Filter mask 为0000=0,Filter Code也为

0000 = 0

所以 Filter mask = 0x780,Filter Code = 0x600.

注意:如果Can Implementation Type  选择BASIC,必须勾选此选项,可设置为0,表示接受所有ID报文。

<think>好的,我需要帮助用户了解在EB工具中配置CAN功能的寻址方法。首先,我需要明确EB工具的具体指代,因为EB通常指的是Elektrobit,一家专注于汽车嵌入式软件的公司,他们的工具链可能包括CAN配置相关的软件如CANoe、CANbedded等。用户的问题涉及到配置CAN的寻址方式,这可能包括硬件寻址、报文ID配置、过滤器设置等。 根据用户提供的引用内容,引用[1]提到CanConfig包含CanController、CanHardwareObject、HOHConfig,而HOHConfig涉及发送和接收Object的个数和下标。这提示我需要从CanController和Hardware Object的配置入手,解释如何设置寻址参数。 接下来,我需要考虑嵌入式系统中CAN的寻址通常涉及哪些方面。CAN协议本身是基于报文ID的广播机制,但实际应用中可能需要通过硬件过滤器或软件配置来实现特定节点的寻址。因此,寻址方法可能包括: 1. 报文ID的分配和过滤:每个节点配置接收特定ID的报文,可能使用掩码来过滤。 2. 硬件对象(Hardware Objects)的配置:设置接收邮箱和发送邮箱的ID范围及过滤规则。 3. 控制器(CanController)的基础配置,如波特率、工作模式等,这些可能间接影响寻址。 4. 根据应用层需求,可能在软件层进一步处理寻址,例如网关转发时修改ID。 用户提到的HOHConfig中的发送和接收Object个数及下标,可能对应硬件对象(如CAN邮箱)的索引,需要配置每个对象处理的ID范围。例如,设置某个硬件对象仅接收特定ID范围的报文,从而实现硬件级别的过滤,减少CPU负载。 此外,引用[3]提到BSW中的COM需求、ECUM需求等,这可能涉及到通信栈的配置,包括CAN通信矩阵的定义,这属于更高层的配置,可能需要工具如AUTOSAR配置工具来完成。因此,在EB工具链中可能需要通过配置CAN通信矩阵(如ARXML文件)来定义报文和信号,再生成底层配置代码。 可能的步骤包括: - 在EB工具中创建或导入CAN通信矩阵,定义报文ID、信号等。 - 配置CanController参数,如波特率、采样点等。 - 配置Hardware Objects(HOH)的发送和接收邮箱,设置ID、掩码、过滤类型。 - 生成配置代码并集成到嵌入式软件中,验证功能。 需要确认EB具体工具的使用流程,例如使用CANbedded配置工具时,如何设置这些参数。同时,用户可能需要了解如何通过GUI或配置文件来调整这些设置,以及如何与硬件抽象层(如MCAL)进行交互。 最后,生成相关问题时,应围绕用户可能的后续疑问,如具体配置步骤、过滤器设置示例、调试方法、与AUTOSAR的集成等。</think>在EB(Elektrobit)工具链中配置CAN功能的寻址方法,需结合硬件对象(Hardware Objects)和控制器配置,以下是关键步骤: ### 1. **理解CAN寻址的核心配置** - **报文ID分配**:CAN协议通过$11$位(标准帧)或$29$位(扩展帧)唯一标识符实现寻址。例如,节点A发送ID为$0x100$的报文,节点B配置为接收该ID。 - **硬件过滤器**:通过掩码(Mask)和代码(Code)设置过滤规则,例如掩码$0x7FF$表示全匹配,代码$0x100$则仅接收该ID的报文[^1]。 ### 2. **EB工具中的具体配置流程** - **步骤1:配置CanController** ```c /* 设置波特率为500kbps */ CanControllerBaudrate = 500000; /* 工作模式:正常模式 */ CanControllerMode = CAN_MODE_NORMAL; ``` 此配置影响CAN控制器的全局行为,确保物理层参数正确。 - **步骤2:定义Hardware Objects(HOHConfig)** ```c /* 接收邮箱配置 */ CanHardwareObject RxMailbox = { .HohType = RECEIVE, .CanId = 0x100, // 目标ID .CanIdMask = 0x7FF, // 全匹配掩码 .BufferSize = 8 // 缓冲区深度 }; /* 发送邮箱配置 */ CanHardwareObject TxMailbox = { .HohType = TRANSMIT, .CanId = 0x200, // 发送ID .Priority = HIGH // 发送优先级 }; ``` 接收对象通过`CanId`和`CanIdMask`实现硬件过滤,减少CPU中断负载[^3]。 - **步骤3:通信矩阵集成(AUTOSAR兼容)** 在EB TresosCANbedded工具中导入ARXML文件,定义信号到报文的映射关系: ```xml <ECUC-MODULE-CONFIGURATION-VALUES> <CAN-FRAME Name="EngineSpeed"> <ID>0x100</ID> <DLC>8</DLC> </CAN-FRAME> </ECUC-MODULE-CONFIGURATION-VALUES> ``` 此步骤确保应用层信号(如车速)与底层报文ID的关联[^3]。 ### 3. **嵌入式系统优化注意事项** - **空间效率**:通过合理设置接收邮箱数量(`HOHConfig`中的接收Object个数),避免内存浪费[^2]。 - **实时性**:高优先级发送邮箱(如`TxMailbox.Priority = HIGH`)用于关键控制指令,确保实时响应。 ### 4. **验证与调试** - **使用CANoe模拟总线流量**,验证节点是否能正确收发目标ID的报文。 - **监控硬件过滤器命中率**,优化掩码配置以减少无效中断。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值