EB Tresos 26.2.0 配置 TC389 CAN/LIN:从硬件原理图到通信测试的 7 步实战
EB Tresos 26.2.0 配置 TC389 CAN/LIN:从硬件原理图到通信测试的 7 步实战
在汽车电子控制单元(ECU)开发中,CAN和LIN通信协议的配置是基础且关键的环节。本文将基于EB Tresos 26.2.0工具,详细介绍如何为Infineon TC389芯片配置CAN/LIN通信模块,从硬件原理图分析到最终通信测试的全流程。不同于简单的配置项罗列,我们更关注硬件设计与软件配置之间的逻辑映射关系,帮助工程师建立系统级的配置思维。
1. 环境准备与输入资料梳理
在开始配置前,需要确保开发环境完整并收集所有必要的输入文档。典型的开发环境包括:
- 编译环境:工程代码和编译器(如Tasking或HighTec)
- BSW配置工具:如NeuSar或其他AUTOSAR基础软件配置工具
- MCAL配置工具:EB Tresos 26.2.0及对应的MCAL配置工程
输入资料方面,必须准备以下文档:
| 文档类型 | 关键信息 | 用途 |
|---|---|---|
| 硬件原理图 | CAN/LIN收发器连接引脚、MCU引脚分配 | 确定Port和CAN/LIN控制器映射 |
| 网络拓扑图 | 节点类型、总线连接关系 | 确定通信参数和网络管理策略 |
| 通信规范 | 波特率、帧格式、主从角色 | 配置通信时序和协议参数 |
| 通信矩阵 | 报文ID、周期、数据长度 | 定义通信对象和调度表 |
| Port Assignment表 | 引脚功能复用配置 | 确定MCAL中Port模块配置 |
提示:建议在项目开始时建立配置项追踪矩阵,将每个硬件设计决策与对应的软件配置项关联,这能显著减少后期集成调试时间。
2. 硬件设计到软件配置的映射方法
2.1 CAN控制器基地址确定
以BODYCAN网络为例,假设系统框图中CAN2对应BODYCAN网络,通过MCU Port Assignment表可查到:
- MCU_CAN2_RX引脚复用模式:CAN00_RXDB
- 对应的BaseAddress:0xF0208100
在EB Tresos中配置CanController时,需要正确设置这些硬件相关参数:
/* CAN Controller配置示例 */ CanControllerCanCfg = { .CanControllerBaseAddress = 0xF0208100, .CanControllerBaudRate = 500000, /* 根据通信规范设置 */ .CanControllerId = CANIF_CAN2, .CanControllerPropSeg = 6, .CanControllerSeg1 = 7, .CanControllerSeg2 = 6 };2.2 引脚功能配置
通过硬件原理图及Port Assignment表,确定以下关键引脚:
- CAN2_TX: P20.8
- CAN2_RX: P20.7
- CAN2_STB: P01.14(收发器使能控制)
在EB Tresos中需要配置Port模块:
/* Port模块配置示例 */ Port_ConfigType PortConfig = { .Pins = { /* CAN2 TX */ [20][8] = { .PortPinDirection = PORT_PIN_OUT, .PortPinMode = PORT_PIN_MODE_CAN_TX }, /* CAN2 RX */ [20][7] = { .PortPinDirection = PORT_PIN_IN, .PortPinMode = PORT_PIN_MODE_CAN_RX }, /* CAN2 STB */ [1][14] = { .PortPinDirection = PORT_PIN_OUT, .PortPinLevel = PORT_PIN_LEVEL_HIGH /* 使能收发器 */ } } };3. CAN模块详细配置策略
3.1 CanController配置
在EB Tresos Studio中配置CanController时,需要关注以下关键参数:
General配置:
- 启用对应的CAN控制器
- 设置控制器ID(与CanIf模块中定义一致)
- 选择工作模式(FullCAN或BasicCAN)
时序参数:
- 波特率(需与网络其他节点一致)
- 采样点(通常设置在75%-80%位时间)
- 同步跳转宽度(SJW)
中断配置:
- 根据需要选择轮询或中断模式
- 配置接收/发送/错误中断优先级
3.2 CanHardwareObject配置
硬件对象(Hardware Object)是CAN通信的核心资源,推荐配置策略:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| HOH类型 | FIFO | 提高多报文接收效率 |
| 对象ID | 按通信矩阵分配 | 确保与网络其他节点一致 |
| 报文类型 | 数据帧/远程帧 | 根据功能需求设置 |
| 缓冲区大小 | 8-16个报文 | 平衡内存使用与性能 |
对于使用轮询模式的应用,还需配置CanMainFunctionRW周期:
/* CanMainFunctionRW配置示例 */ Can_ConfigType CanConfig = { .CanMainFunctionRWPeriod = 10, /* 10ms周期 */ /* 其他配置项... */ };4. LIN模块配置要点
4.1 LinChannel基础配置
LIN通信需要特别注意以下配置项:
General配置:
- 选择LIN通道(如LIN1)
- 设置主从模式(Master/Slave)
- 配置波特率(典型值19200或9600)
时序参数:
- 响应超时时间(ResponseTimeout)
- 帧间隔时间(FrameSlot)
调度表配置:
- 定义LIN帧ID序列
- 设置各帧的发送/接收属性
4.2 ASCLIN模块分配
TC389的LIN模块基于ASCLIN实现,需要在Mcu模块中正确分配:
/* Mcu模块ASCLIN配置 */ Mcu_AsclinConfigType AsclinConfig = { .McuAsclinChannelAllocation = { [0] = MCU_ASCLIN_USED_AS_LIN, /* ASCLIN0配置为LIN */ /* 其他通道配置... */ } };5. 中断与依赖模块配置
5.1 中断配置
对于使用中断模式的CAN/LIN通信,需要在Irq模块中配置:
CAN中断:
- 接收中断
- 发送中断
- 错误中断
LIN中断:
- 主节点调度中断
- 接收完成中断
- 发送完成中断
配置示例:
/* Irq模块配置片段 */ Irq_ConfigType IrqConfig = { .IrqConfigurations = { { .IrqNumber = CAN2_RX_IRQn, .IrqPriority = 1, .IrqTrigger = IRQ_TRIGGER_RISING }, /* 其他中断配置... */ } };5.2 模块间依赖关系
CAN/LIN配置需要与其他AUTOSAR模块协同工作:
与Dio模块的依赖:
- 收发器使能控制
- 网络唤醒信号检测
与Mcu模块的依赖:
- 时钟配置
- 低功耗模式控制
与Os模块的依赖:
- 通信任务优先级设置
- 定时器服务配置
6. 集成与一致性检查
在完成各模块配置后,需要进行集成前的检查:
配置一致性检查:
- 使用EB Tresos Studio的Consistency Check功能
- 验证各模块间参数匹配性
硬件-软件映射验证:
- 确认所有引脚配置与原理图一致
- 检查基地址和中断号正确性
通信参数验证:
- 波特率计算正确性
- 帧时序参数合理性
注意:EB Tresos存在一个已知限制——所有HRH(接收硬件对象)必须配置在HTH(发送硬件对象)之前,否则可能导致配置生成失败。
7. 测试与调试技巧
7.1 基础测试项
完成集成后,建议按以下顺序测试:
引脚电平测试:
- 测量CAN/LIN收发器使能信号
- 检查TX/RX引脚初始状态
通信功能测试:
- 使用CANoe/LINalyzer等工具监测总线
- 验证报文收发功能
压力测试:
- 高负载情况下的通信稳定性
- 错误注入测试
7.2 常见问题排查
在实际项目中,我们经常遇到以下典型问题:
SBC收发器相关问题:
- 如果与SBC连接的CAN节点不通,检查SBC相关引脚是否拉高MCU_Tx电平
- 确认收发器供电和使能信号正常
CAN FD配置注意:
- 注意CanIf层不区分Can ID,而CanDrv层区分
- CanIf需要对下层封装CanFD的ID
LIN调度异常:
- 检查主节点调度表配置
- 验证从节点响应时间是否符合要求
在最近一个车身控制模块项目中,我们发现当CAN通信使用Polling模式时,将CanMainFunctionRW周期设置为5ms可获得最佳性能与CPU负载平衡。而对于LIN通信,19200波特率下帧间隔建议不少于2个字符时间。
