1、概述
此配置依赖ETAS的配置工具ISOLAR-AB实现,各个容器符合AUTOSAR规范的同时匹配ISOLAR-AB工具。
ISOLAR-AB总的配置如下思维导图
规范里面显示CanTpConfig与CanTpGeneral是唯一的
2、ETAS工具配置
2.1、CanTpGeneral
CanTpChangeParameterApi:
打开函数接口如下,更改传输层的参数BS与STmin
CanTpDynIdSupport:
支持通过N-PDU的MetaData处理动态ID。假设诊断ID是固定的前提下,感觉没多大必要性执行此操作的,也可能是笔者没有使用过的原因。
CanTpFlexibleDataRateSupport
是否支持CANFD
CanTpGenericConnectionSupport:
是否支持使用N-SDUs通过MetaData处理通用连接。需要开启CanTpDynIdSupport。
CanTpPaddingByte
填充未初始化的值是多少,此处设置0x00
注意事项:目前看来带Rb字样的均属于ETAS自定义为了补充AUTOSAR未考虑到或者额外功能的一些配置参数。
CanTpRbBurstQsize
突发队列的大小。如果配置此值,则启用突发模式。它同时提供最大可能的爆发。
CanTpRbDynamicFlowControlSupport
ETAS自定义参数,在后续的FlowControl帧中启用动态BS/STmin值。Iso文件提供了在单个接收过程中为STMin和BS值设置动态值的可能性。Autosar的策略是只有固定的值。此参数提供了一种重载Autosar行为的方法。注意:只有在考虑到所有RxConnections在这方面都兼容相应的Client - Server通信之后,才能将该参数设置为True,因为该参数在全局范围内启用了这种动态行为。
2.2、CanTpChannel
2.2.1、CanTpRxNSdus
Rx的NSdu有两个
1、使用功能寻址的,功能寻址接收之后无需响应,一般是正响应抑制。接收的方向是CanIf到CanTp然后是CanTp到PduR
2、使用物理寻址的,使用物理寻址一般需要响应,毕竟物理寻址是一对一的。
功能寻址一般操作的是0x28\0x85等诊断服务。
CanTpRxAddressingFormat
声明支持此RxNSdu的通信寻址模式。定义枚举值:CanTpStandard使用正常寻址格式。可以扩展到使用扩展的拉配格式。cantpmix使用混合11比特寻址格式。cantpnormalfix使用正常的固定地址格式。CanTpMixed29Bit使用混合29比特处理格式。
CAN-TP 是在 CAN 堆栈上实现的,因此为了识别它,有不同类型的寻址:
简单解释两个:详细见寻址方式解析
基本寻址【BASIC ADDRESSING】 : CAN-TP协议的基本寻址模式称为普通寻址模式,我们通过CAN Identifier识别是普通的CAN 报文还是CAN-TP报文。也就是说将有一些特定的标识符用于 CAN-TP,如果接收到这些标识符的任何消息,则服务器将理解为此消息为TP消息。这种寻址方式的优点是可以将完整的8个字节的数据包作为数据发送。
扩展寻址【EXTENDED ADDRESSING】 :这种寻址模式是将CAN数据字段的第一个字节将用于地址的附加元素的一种 CAN-TP 寻址模式,这种寻址方式导致报文数据的有效负载减少一个字节。
有以下五种
CanTpRxNSduId
唯一标识符用户由上层调用CanTp CancelReceive,CanTp ChangeParameter和CanTp ReadParameter。
此处有个很有意思的点,假设不去配置,ISOLAR自动给分配了ID的。
此处假设不配置,只会影响arxml里面的内容
但是不影响生成的配置文件,也就是说此处配置或者不配置进行排序,最终生成的配置文件没变化。
CanTpRxPaddingActivation
定义空白字节为是否填充,最大是8字节的N-PDUs
CanTpOn:接收到的N-PDU对SF、FC和最后一个CF进行填充(CAN 2.0时N-PDU长度始终大于等于8字节)。
CanTpOff:收到的N-PDU不使用SF、CF和最后一个CF填充(N-PDU长度是动态的减去任何有效的DLC值)。备注:长度为> 8字节的n - pdu必须映射到下一个有效DLC值,不受此参数影响。
CanTpRxTaType
定义此Rx目标地址的类别
CanTpRxWftMax
该参数表示接收端可以连续发送多少个Flow Control wait n - pdu。它在节点本地,不在FC协议数据单元内传输。
CanTpRxWftMax用于避免在接收方节点暂时无法接收的情况下,发送方节点可能被连接起来,从而导致发送方可能持续等待。
RX物理寻址的配置
多了一个Tp到If的相应传递
2.2.2、CanTpTxNSdus
TXNSdus只需要配置物理寻址即可,因为对ECU方来说,相应是一对一的,确定是哪个ECU才可以。
CanTpTc
启用还是关闭发送取消和接收取消的开关。
假设需要配置多路诊断ID 例如:诊断
第一路:
FUN RX ID | 0x100 |
PHY RX ID | 0x200 |
PHY TX ID | 0x300 |
第二路:
FUN RX ID | 0x400 |
PHY RX ID | 0x500 |
PHY TX ID | 0x600 |
配置一下如下
3、代码测试
整体状态显示
ISOLAR-AB生成的SIP包,代码的调试在CanTp_Prv.c源文件里面,主要集中在如下图所示的全局变量里面。
CanTp是否处于On状态在下面截图
通过上位机监控得到如下
调试一个单帧接收确认 02 3E 00的服务会话
发送状态