资讯动态

DaVinci Configurator AUTOSAR CAN七层配置实战解析

发布时间:2026/9/24 4:44:13 来源:尧图企业网站定制
1. 为什么说DaVinci Configurator是Autosar CAN配置的“真实战场”别再死记硬背了这句开场白不是喊口号而是我带过十几届汽车电子实习生后最真实的体会。刚接触Autosar时我也是靠抄笔记、背ECUC参数、硬啃BSWM状态机图熬过来的——结果第一次在Vector工具链上跑实车CAN通信报文根本发不出去Error Log里全是“CanIfTxConfirmation not called”“CanIfRxIndication not triggered”翻遍文档也找不到根因。后来才明白Autosar CAN配置从来不是填几个参数的事它是一整套信号流-硬件映射-调度时机-错误处理的闭环工程。而DaVinci Configurator以下简称DC就是这个闭环的唯一操作台。它不教你怎么背“CanIfControllerId0x01”而是逼你亲手把物理CAN收发器比如TJA1145、MCU的CAN外设寄存器、AUTOSAR BSW模块Can、CanIf、PduR、Com、BswM全部拧成一股绳。你搜到的“davinci configurator 入门”“autosar教程”大多停留在界面按钮点击层面但真实项目里一个CAN报文从应用层ComSignal发出到物理线束上被示波器捕获中间要穿越至少7层模块Com → PduR → CanIf → Can → CanTrcv → MCU CAN IP → TJA1145收发器。DC的作用就是让你在GUI里把这7层的每一根“线”都焊牢、标清、测通。比如你配置一个“发动机转速”信号DC会强制你回答它的周期是10ms还是100ms触发方式是TimeTriggered还是EventTriggered是否需要DataFilter过滤无效值对应的CAN ID是0x123标准帧还是0x18DAF100扩展帧DLC是4还是8这些不是选择题而是设计决策——选错一个整车诊断仪就收不到数据OTA升级就卡在Bootloader阶段。更关键的是DC把抽象的AUTOSAR规范翻译成了工程师能摸得着的实体。比如“autosar bswm下电是怎么配置的”表面看是BSWM模块的State Transition实际在DC里你要为每个CAN Controller配置“Wake-up Configuration”是否启用CAN唤醒唤醒滤波器掩码怎么设唤醒后BSWM该从Sleep State切到Startup State还是Ready State这些配置直接决定钥匙拔出后车身控制器能否被远程门锁信号唤醒。而“有tja1145的收发器”这个热词背后是DC里必须完成的硬件耦合TJA1145的STB引脚接MCU哪个GPIO它的MODE引脚是硬线拉高还是由软件控制DC的CanTrcv配置页里这些引脚映射、唤醒阈值、故障检测周期如BusOff Recovery Time全得手动填——填错一个CAN总线就永远卡在Bus-Off状态连万用表测都测不出问题。所以这篇不是“DC入门指南”而是带你钻进DC的配置逻辑缝里看清每一个参数背后的硬件约束和软件契约。截图我会贴全但重点不是“点哪里”而是“为什么点这里”“不点这里会怎样”。毕竟汽车电子没有试错成本——ECU烧录失败产线停一分钟就是几万块损失CAN报文错发可能让ADAS系统误判障碍物。我们得对每个配置项负责。2. DaVinci Configurator核心配置逻辑拆解从CAN硬件到AUTOSAR栈的七层穿透2.1 真实项目中的CAN配置全景图不是单点设置而是链路编织很多人以为DC配置CAN就是打开“Can”模块填ID和DLC这是最大的认知陷阱。AUTOSAR CAN通信本质是硬件资源→驱动抽象→协议栈→应用接口的垂直贯通。DC的配置树Configuration Tree就是这条链路的具象化骨架必须从底层硬件开始逐层向上编织漏掉任何一层信号就断在半路。我以一个典型动力域ECU使用Infineon TC397 TJA1145为例梳理DC中必须完成的7个关键配置层Hardware Layer硬件层在DC的“System Description”里定义MCU型号TC397、CAN外设模块CAN0/CAN1、TJA1145收发器型号及引脚连接如CAN0_TX→P10.0, CAN0_RX→P10.1, STB→P15.2。这步决定了DC生成的底层驱动代码能否正确初始化寄存器。CanTrcv Layer收发器驱动层配置TJA1145的工作模式Normal/Standby/Sleep、唤醒源CAN Bus Wake-up or Pin Wake-up、故障检测周期如BusOff Detection Time 128ms。这里填错ECU可能永远无法从休眠唤醒。Can LayerCAN控制器驱动层设置CAN波特率500kbps、同步跳转宽度SJW1、采样点75%、中断优先级。特别注意TC397的CAN IP支持Flexible Data RateCAN FD但若项目用传统CAN必须关闭FD Mode否则生成代码会编译报错。CanIf LayerCAN接口层建立“物理CAN通道”与“上层PDU”的映射关系。例如将CanControllerId0x01对应CAN0硬件绑定到CanIfControllerId0x01并配置其支持的Pdu数量如MaxTxPdu16。这是信号路由的起点。PduR LayerPDU路由器层定义PDUProtocol Data Unit的转发规则。比如当CanIf收到ID0x123的报文应转发给Com模块的RxPduId0x0A当Com模块要发ID0x456的报文应通过CanIfControllerId0x01发送。DC里用图形化连线完成此映射比手写配置文件直观百倍。Com Layer通信模块层配置信号Signal到PDU的打包/解包逻辑。例如“发动机转速”信号uint16类型缩放因子0.125放在PDU的Byte2-3起始位Bit16长度16bit。DC自动生成位操作代码避免人工位运算出错。BswM Layer基础软件管理器层协调CAN通信的生命周期。配置CAN Controller在BSWM的Startup State自动启动在Shutdown State执行BusOff Recovery在Sleep State关闭时钟。这才是“autosar bswm下电配置”的实质——不是关模块而是管状态切换时序。提示DC配置树的展开顺序必须严格遵循此7层从“System Description”开始逐层向下配置。跳过CanTrcv直接配CanLayerDC会报错“Missing CanTrcv configuration for controller CanController_0”。这不是软件Bug而是AUTOSAR规范强制要求的依赖关系。2.2 关键参数背后的硬件真相为什么波特率算不准CAN就瘫痪DC里最常被忽略的是参数背后的物理世界约束。比如“CAN波特率500kbps”新手常直接填数字却不知这数字需经MCU时钟、分频器、重同步机制三重校验。以TC397为例其CAN外设时钟源为PLL输出的80MHz计算过程如下目标波特率500kbps时间量子TQ总数需满足TQ_total (BRP 1) * (TS1 1) * (TS2 1)其中BRPBaud Rate Prescaler为预分频系数TS1Time Segment 1为传播段相位缓冲段1TS2Time Segment 2为相位缓冲段2DC默认推荐值BRP15, TS113, TS22 → TQ_total (151)(131)(21) 16143 672实际波特率 80MHz / (672 * 1) 119.047kHz ≠ 500kHz → 明显错误正确计算需反推TQ_total 80MHz / 500kHz 160分解160取TS113, TS22 → (TS11)(TS21) 143 42则BRP1 160 / 42 ≈ 3.81 → 取整BRP2即BRP13此时TQ_total3143126实际波特率80MHz/126≈634.9kHz仍超差。最终取TS112, TS22 → (121)(21)13339BRP1160/39≈4.1 → BRP3TQ_total4133156实际波特率80MHz/156≈512.8kHz误差2.56%在CAN容差±1%内可接受。DC的“Calculate Baudrate”功能会自动帮你试算但必须理解其原理——否则当客户要求改到1Mbps时你得知道TS1/TS2如何重分配BRP如何调整否则生成代码波特率偏差过大两节点无法通信。再如“TJA1145的唤醒滤波器”DC里配置“WakeUpFilterMask0x7FF”表面是填十六进制数实则是告诉收发器只对ID低11位匹配的报文响应唤醒。若填成0x000ECU永远无法被CAN网络唤醒若填成0xFFF则任何报文都唤醒导致电池亏电。这个值必须与整车网络管理NM报文的ID严格一致比如NM报文ID0x123二进制0000000100100011低11位是000001001000x44所以Mask应设为0x044而非0x7FF。2.3 配置链路的致命断点为什么信号发出去了应用层却收不到我见过太多案例DC里所有配置看似完美CANoe抓包能看到报文发出但ECU的应用层变量始终为0。根源往往在PduR和Com层的“隐式映射”没打通。DC的PduR配置页有个易忽略的开关“Enable PduR Routing”。若未勾选即使你在PduR里画了连线生成的代码也不会调用PduR_RxIndication()函数信号直接丢弃。另一个高频断点是Com模块的Signal Gateway配置。比如“刹车灯开关”信号物理报文ID0x201Byte0 Bit0-01bit但在Com配置里若将该Signal的ComSignalType设为“UINT8”而非“BOOLEAN”DC生成的解包代码会读取整个Byte0导致Bit0以外的位污染信号值。正确做法在ComSignal属性页明确选择“ComSignalTypeBOOLEAN”并设置“ComSignalInitValueFALSE”。更隐蔽的是BSWM的状态依赖。假设你的CAN通信只在BSWM的“RUN”状态下启用但DC里未配置BSWM对CanIfController的“Run Request”。结果BSWM进入RUN态时不会调用CanIf_SetControllerMode(CANIF_CS_STARTED)CAN控制器保持STOP状态报文发不出去。DC的BSWM配置页必须为每个CanIfController添加“Run Request”事件并关联到“RUN”状态的Transition Action。注意DC的“Validate Configuration”功能只能检查语法错误如ID重复、指针空悬无法验证逻辑断点。真正验证链路是否通必须做三件事1生成代码后在CanIf_RxIndication()函数里加调试日志2在Com_RxIndication()里加日志3用CANoe发送测试报文逐层确认日志是否触发。这是唯一可靠的方法。3. 完整实操流程从新建工程到实车报文收发含DC界面截图逻辑说明3.1 工程创建与硬件导入避开DC版本兼容性雷区DC版本碎片化严重v5.1/v6.0/v7.0不同版本生成的.arxml文件格式不兼容。我的实操建议永远用Vector官方推荐的版本组合。本例基于DC v6.0.0配套AUTOSAR 4.3.1这是当前OEM主流采用的稳定版本。新建工程步骤启动DC → “File” → “New Project” → 输入Project Name如“Powertrain_CAN_Config”→ 选择Workspace路径建议路径不含中文和空格如D:\Projects\DC_Powertrain。关键一步在“Project Settings”里必须指定AUTOSAR Release。点击“Configure AUTOSAR Release” → 选择“AUTOSAR 4.3.1” → 点击“Apply”。若此处选错如选4.2.2后续导入MCU描述文件时会报错“Invalid ARXML version”。导入MCU硬件描述DC不内置芯片库需Vector提供的MCAL包。点击“System Description” → “Import” → 选择TC397的MCAL描述文件通常为tc397_mcal.arxml。该文件包含TC397所有外设寄存器定义、时钟树、中断向量表。导入后DC自动识别出CAN0/CAN1模块并在“Hardware”节点下生成对应条目。添加TJA1145收发器右键“Hardware” → “Add New Element” → 选择“CanTrcv” → 命名为“TJA1145_0”。在属性页填写CanTrcvVendorId0x0001Vector Vendor IDCanTrcvModuleId0x0001TJA1145 Module IDCanTrcvChannel0对应CAN0CanTrcvWakeupSourceBUS_WAKEUP总线唤醒CanTrcvWakeupFilterMask0x044前文计算的NM报文掩码实操心得MCAL描述文件必须与DC版本严格匹配。曾有项目用DC v6.0导入v5.1的MCAL导致CAN外设时钟配置丢失生成代码编译时报“undefined symbol CAN0_CLOCK_ENABLE”。解决方法去Vector官网下载对应DC版本的MCAL包切勿混用。3.2 CAN控制器与收发器深度配置TJA1145的12个关键参数详解TJA1145的配置是CAN通信稳定的基石。DC中“CanTrcv”节点下的12个参数每个都直连硬件行为参数名推荐值物理意义配错后果CanTrcvWakeupTime1000000μs唤醒后等待总线稳定时间设太短ECU刚唤醒就发报文总线电平未稳报文CRC错误CanTrcvBusOffRecoveryTime128000μsBus-Off后恢复时间设太短未等总线释放就重启反复Bus-OffCanTrcvOverTemperatureTime500000μs过温保护延迟设太长芯片过热烧毁CanTrcvPinWakeupEnableFALSE是否启用STB引脚唤醒若TRUE但STB未接MCUECU无法唤醒CanTrcvModeSwitchDelay10000μsNormal↔Standby切换延时设太短模式切换失败收发器锁死CanTrcvWakeupFilterMask0x044唤醒ID掩码前文已详述错则无法唤醒CanTrcvWakeupFilterPattern0x044唤醒ID匹配值必须与Mask同值否则唤醒失效CanTrcvTransceiverTypeTJA1145收发器型号选错型号驱动代码调用错误寄存器CanTrcvChannel0绑定CAN通道错则信号走错物理通道CanTrcvVoltageSupplyVCC电源电压影响驱动能力错则信号幅值不足CanTrcvGNDGND地线错则共模电压异常通信误码CanTrcvCanHCanLCAN_H/CAN_L差分线引脚错则物理层不通配置时右键“TJA1145_0” → “Open Editor”在表格中逐行填写。特别注意CanTrcvWakeupFilterPattern必须与CanTrcvWakeupFilterMask完全一致这是TJA1145硬件要求——掩码为1的位置Pattern值必须匹配掩码为0的位置Pattern值任意。若Pattern0x045而Mask0x044ECU将永不唤醒。3.3 CAN协议栈配置从Can模块到Com模块的信号流贯通3.3.1 Can模块配置波特率、过滤器与中断的三位一体展开“Can”节点 → 右键“CanController_0” → “Open Editor”。核心配置页General页CanControllerId0x01唯一标识CanControllerActivationTRUE启用控制器CanControllerBaudrate500000500kbpsCanControllerBaudrateConfigurableFALSE禁止运行时修改Baudrate页点击“Calculate Baudrate”按钮输入CoreClock80000000TC397主频输入DesiredBaudrate500000DC自动计算出BRP3, TS112, TS22点击“Apply”生效。Filter页CanHardwareObjectCount16硬件过滤器数量CanHardwareObject[0]配置为Standard ID FilterCanId0x123CanIdMask0x7FF匹配所有标准帧CanHardwareObject[1]配置为Extended ID FilterCanId0x18DAF100CanIdMask0x1FFFFFFF匹配所有扩展帧Interrupt页CanControllerInterruptEnableTRUECanControllerInterruptPriority3中断优先级数值越小优先级越高提示硬件过滤器数量必须≥项目所需报文ID数。若只配1个Filter但需收10个IDDC生成的代码会用软件过滤大幅增加CPU负载。TC397的CAN IP最多支持32个硬件Filter建议按需分配。3.3.2 CanIf与PduR配置信号路由的“交通指挥中心”CanIf是CAN协议栈的中枢。右键“CanIf” → “Add New Element” → “CanIfController” → 命名为“CanIfController_0”。在“CanIfController_0”属性页CanIfControllerId0x01与CanControllerId一致CanIfControllerRef/Can/CanController_0指向物理控制器CanIfControllerActivationTRUE接着配置PduR。展开“PduR” → 右键“PduR” → “Add New Element” → “PduRRoutingPath”。创建Rx路由PduRRoutingPathNameRx_Route_0PduRRoutingPathSourceRef/CanIf/CanIfRxPdu_0来源CanIf接收PDUPduRRoutingPathDestinationRef/Com/ComIPdu_0去向Com模块的IPDU创建Tx路由PduRRoutingPathNameTx_Route_0PduRRoutingPathSourceRef/Com/ComIPdu_1来源Com模块的IPDUPduRRoutingPathDestinationRef/CanIf/CanIfTxPdu_0去向CanIf发送PDUDC的图形化界面在此处大显身手在PduR编辑页你会看到左侧“Sources”和右侧“Destinations”两个框用鼠标拖拽连线即可建立路由。连线后DC自动生成PduR_RxIndication()和PduR_TxConfirmation()的调用链。3.3.3 Com模块配置信号打包的“快递分拣站”Com模块负责信号到字节的转换。右键“Com” → “Add New Element” → “ComIPdu” → 命名为“EngineSpeed_IPDU”。在“EngineSpeed_IPDU”属性页ComIPduDirectionRECEIVE接收方向ComIPduSize88字节ComIPduCalloutCom_RxIndication接收回调函数添加信号右键“EngineSpeed_IPDU” → “Add New Element” → “ComSignal” → 命名为“EngineSpeed_Sig”。在“EngineSpeed_Sig”属性页ComSignalTypeUINT1616位无符号整数ComSignalLength16长度16bitComSignalInitValue0初始值0ComSignalPosition16起始位Bit16即Byte2-3ComSignalScaling0.125缩放因子物理值信号值×0.125ComSignalOffset0偏移量DC会根据ComSignalPosition和ComSignalLength自动计算出该信号在IPDU中的字节偏移和位偏移并生成位操作代码。例如Bit16表示从Byte2的Bit0开始因为Bit0-7是Byte0Bit8-15是Byte1Bit16-23是Byte2所以代码中会调用PduInfo.SduDataPtr[2]和PduInfo.SduDataPtr[3]。3.4 BswM与网络管理集成实现“下电”与“唤醒”的智能调度BSWM是AUTOSAR的“大脑”协调所有BSW模块状态。配置目标ECU上电后自动启动CAN通信钥匙拔出后进入Sleep状态但能被CAN NM报文唤醒。展开“BswM” → 右键“BswM” → “Add New Element” → “BswMModeDeclarationGroup” → 命名为“CanControllerMode”。在“CanControllerMode”下添加ModeBswMModeNameBSWM_CAN_OFFBswMModeNameBSWM_CAN_READYBswMModeNameBSWM_CAN_ACTIVE配置State Transition右键“BswM” → “Add New Element” → “BswMStateTransition” → 命名为“StartToReady”。BswMStateTransitionSourceModeBSWM_CAN_OFFBswMStateTransitionTargetModeBSWM_CAN_READYBswMStateTransitionActionCanIf_SetControllerMode(CANIF_CS_STARTED)调用CanIf启动函数配置Run Request右键“BswM” → “Add New Element” → “BswMRunRequest” → 命名为“CanRunRequest”。BswMRunRequestModeBSWM_CAN_ACTIVEBswMRunRequestResourceRef/CanIf/CanIfController_0绑定CanIf控制器最后配置Network Management导入NM模块如CanNm在“CanNm”配置页设置CanNmNodeId0x01ECU节点IDCanNmNetworkTimeout1000ms网络超时时间CanNmMsgCycleTime100msNM报文周期CanNmMsgId0x123NM报文ID与TJA1145唤醒掩码一致实操心得BSWM状态切换必须有明确的Trigger。例如“BSWM_CAN_OFF → BSWM_CAN_READY”的Trigger可以是“EcuM_StartupTwo”ECU启动完成事件也可以是“CanNm_NetworkStart”NM网络启动事件。若未配置Trigger状态永远不会切换CAN控制器永远停在STOP状态。4. 常见问题排查与避坑指南那些DC不会告诉你的实战经验4.1 报文发不出去的7种可能原因与定位路径当CANoe抓不到报文别急着重配DC先按此路径快速定位硬件层断点用万用表测TJA1145的VCC5V、GND0V、CAN_H/CAN_L共模电压2.5V差分电压2V。若VCC无电压检查ECU电源若CAN_H/CAN_L短路检查PCB焊接。CanTrcv层断点DC中查看“CanTrcv”状态。若CanTrcvStatusOFF检查CanTrcvModeSwitchDelay是否过短或CanTrcvPinWakeupEnable是否误启。Can层断点在生成代码的Can_MainFunction_Write()中加日志。若日志不打印说明Can模块未启动——检查BSWM的Run Request是否生效或CanControllerActivationFALSE。CanIf层断点在CanIf_Transmit()函数加日志。若调用成功但无报文检查CanIfTxPdu的CanIfTxPduId是否与Can模块的CanHardwareObjectID匹配。PduR层断点在PduR_RxIndication()加日志。若日志不触发检查PduR路由是否启用Enable PduR Routing勾选或PduRRoutingPathSourceRef指向错误。Com层断点在Com_RxIndication()加日志。若日志触发但信号值不对检查ComSignalPosition是否错位如Bit16写成Bit8或ComSignalScaling是否反了应为0.125而非8.0。BSWM层断点在BswM_MainFunction()中加状态日志。若状态卡在BSWM_CAN_OFF检查Trigger事件是否发生或BswMStateTransitionAction函数是否拼写错误如CanIf_SetControllerMode写成CanIf_SetControllerModee。独家技巧DC的“Simulation Mode”可离线验证配置逻辑。点击“Tools” → “Simulation” → “Start Simulation”DC会模拟BSWM状态切换、CanIf传输等无需硬件。若Simulation中CanIf_Transmit()返回E_NOT_OK说明配置链路存在逻辑错误比实车调试快10倍。4.2 Bus-Off故障的黄金3分钟处理法CAN总线进入Bus-Off是致命故障DC配置不当会雪上加霜现象CANoe显示“Bus-Off”ECU无法收发任何报文。根因错误计数器TEC/REC溢出控制器自动关闭输出。DC配置关键CanControllerBusOffHandlingTRUE启用Bus-Off恢复 CanControllerBusOffAutoRestartTRUE自动重启 CanControllerBusOffRecoveryTime128000μs恢复时间。但仅配这些不够。实测发现TC397的CAN IP在Bus-Off后需等待CanControllerBusOffRecoveryTime后再调用CanIf_SetControllerMode(CANIF_CS_STARTED)才能重启。若BSWM在恢复时间内就调用启动函数会失败。因此我在BSWM中添加了一个Timer// BSWM中定义Timer BswM_TimerHandle CanBusOffTimer; // Bus-Off发生时启动Timer if (Can_ControllerStatus CANIF_CS_BUSOFF) { BswM_StartTimer(CanBusOffTimer, 128); // 128ms } // Timer超时后再调用CanIf启动 if (BswM_IsTimerExpired(CanBusOffTimer)) { CanIf_SetControllerMode(CANIF_CS_STARTED); }这个Timer逻辑必须在DC生成的BSWM代码中手动添加DC本身不生成Timer管理。4.3 截图中的隐藏陷阱DC界面元素的真实含义网上流传的DC截图常误导新手。以下是你必须读懂的3个界面细节红色感叹号图标不是错误而是“Unresolved Reference”。例如PduR路由中PduRRoutingPathDestinationRef指向/Com/ComIPdu_0但Com模块尚未创建该IPDUDC显示感叹号。解决方法先创建ComIPdu再回填路由。灰色不可编辑字段如CanIfControllerId在CanIfController属性页是灰色的说明该值由DC自动生成基于配置顺序不可手动修改。若强行改会导致生成代码ID冲突。“Generate Code”按钮旁的进度条DC生成代码时进度条走到90%卡住大概率是ARXML文件有循环引用如A模块引用BB又引用A。此时需点击“View” → “Problems View”查看具体错误行号删除循环引用。踩坑实录曾有项目因CanIfTxPduId在CanIf和PduR中不一致导致生成代码编译报错“undefined reference to CanIf_TxConfirmation_0”。DC的Problems View只提示“Link error”不指明哪一行。最终发现PduR路由中PduRRoutingPathSourceRef写成了/CanIf/CanIfTxPdu_1而CanIf中只定义了CanIfTxPdu_0。修正后编译通过。5. 从DC配置到实车验证信号流端到端贯通的终极检验5.1 生成代码与集成编译绕过DC的“黑盒”陷阱DC生成的代码不是拿来即用的“黑盒”必须理解其结构才能集成Can_Cfg.c/hCAN控制器配置含波特率、Filter等静态数组。CanIf_Cfg.c/hCanIf模块配置含Controller、Pdu映射表。PduR_Cfg.c/hPduR路由表是信号流转的“地图”。Com_Cfg.c/hCom模块配置含Signal位置、缩放因子等。BswM_Cfg.c/hBSWM状态机定义含Transition Action函数指针。集成时最关键的一步是修改链接脚本ld script。DC生成的代码默认放在.bss段但TC397的CAN IP寄存器需放在.data段RAM初始化。若不改ECU上电后CAN控制器未初始化报文发不出。修改方法在链接脚本中将Can_Cfg.o加入.data段.data : { *(.data) *(Can_Cfg.o) } RAM编译时若出现undefined reference to CanIf_SetControllerMode说明CanIf_Cfg.c未加入编译列表或CanIf.h头文件路径未包含。DC生成的Makefile有时遗漏此文件需手动添加。5.2 实车报文收发验证用CANoe做信号流“CT扫描”验证不是简单看CANoe能否抓包而是做端到端信号流追踪发送验证在应用层设置EngineSpeed_Sig 4000对应500rpm用CANoe发送ID0x123的报文观察ECU是否回传。若不回传用调试器打断点在Com_SendSignal()确认信号值是否正确传入。接收验证CANoe发送ID0x123Byte2-30x0FA04000观察ECU应用层变量是否变为500.04000×0.125。若为0检查Com_RxIndication()中PduInfo.SduDataPtr[2]和[3]的值是否为0xFA和0x00。时序验证用示波器测CAN_H波形确认波特率是否为500kbps位时间2μs采样点是否在75%位置即1.5μs处电平稳定。压力验证CANoe发送1000帧/秒报文观察ECU CPU占用率。若70%说明PduR或Com层有性能瓶颈需优化Filter或减少Signal数量。最后分享一个小技巧DC的“Export

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价