目 录CONTENT

文章目录

AUTOSAR - CANTP - 学习四 :ISOLAR-AB配置及代码解析

moke
2024-07-26 / 0 评论 / 0 点赞 / 261 阅读 / 0 字

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的服务会话

发送状态

博主关闭了所有页面的评论