写在前面:
入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!!
本文先不讨论MCAL实现哈。假设一个场景,手上有一个MCU工程,突然飞书响了,老板给我一个DBC,让我在当前工程上加一路CAN,我该如何下手?
对于一帧APP报文,它在Autosar-BSW中传递路径为:CAN-CANIF-PDUR-COM
那么在工具中,我大概率也要完成这几个模块的配置工作。
0.先检查DBC
一些公司会通过释放xml文件用以导入工具,DBC只提供给测试同学。所以很难保证拿到的DBC是没有错误的,重点检查属性是否齐全,比如GenMsgCycleTime、NmAsrMessage等。
我拿到的DBC,CAN报⽂波特率为500kbps,采样率70%,CANFD波特率为2000Kbps.采样率75%. 网络管理报文 BaseAddress 0x500.检查没问题后,导入工具中。
CANFD_BRS: 表⽰位速率转换,该位隐性时,速率可变(即BSR到CRC使⽤转换速率传输),该位为 显性时,以正常的CAN-FD总线速率传输(恒定速率)。
GenMsgCycleTime:定义循环消息传输的固定周期
GenMsgCycleTimeFast:定义快速消息传输的周期性。如果放置在消息上的信号之⼀处于活动状态,则 消息将快速传输。
GenMsgDelayTime:定义两次消息传输之间的最⼩时间。
GenMsgStartDelayTime:定义系统启动后的延迟,该消息是第⼀次发送。
GenMsgILSupport:如果消息由交互层处理,则设置为Yes,默认值为No。(是否为应⽤报⽂)
GenMsgSendType:发送类型,常发报⽂类型为Cycle.
NmAsrMessage:是否为⽹络管理报⽂
NmAsrMessageCount:指定⽹络上最⼤⽀持的⽹络报⽂数量
DiagRequest:物理寻址请求
DiagResponse:物理寻址响应
DiagState:功能寻址
1.CAN模块配置
导入DBC后,会报出若干个error。一个模块一个模块解决。CAN模块配置和芯片手册相关,我的是TC39X系列芯片,基于硬件原理图PIN脚定义去查找BasisAddressEnum、ReceiveInputSelection、Node等信息。
举个栗子:
我要配置这路CAN通讯,根据芯片手册