基于can总线的A2L文件解析(3)

2023-05-16

文章目录

  • 前言
  • MOD_COMMON
  • MOD_PAR
  • XCP数据
    • Common_Parameters定义
    • IF_DATA定义XCP
      • PROTOCOL_LAYER
      • DAQ
      • EVENT
      • XCP_ON_CAN
        • CAN_Parameters
  • 总结

前言

在第二篇A2L文件解析的文章中,介绍了常用接口的定义内容。在实际使用过程中,进行参数定义。下面介绍具体的配置及定义。

MOD_COMMON

此关键字用于指定模块的通用描述数据,然后将其作为该模块的标准。

/begin MOD_COMMON "This is MOD_COMMON" 
 BYTE_ORDER MSB_LAST
      ALIGNMENT_BYTE 1
      ALIGNMENT_WORD 2
      ALIGNMENT_LONG 4
      ALIGNMENT_FLOAT32_IEEE 4
      ALIGNMENT_FLOAT64_IEEE 8
      ALIGNMENT_INT64 8 
/end MOD_COMMON 

ALIGNMENT_BYTE:声明整个模块中的BYTE对齐方式。如果参数缺失,对齐方式为1。其他同理。

BYTE_ORDER:字节序,MSB_LAST=Intel,默认为Intel

MOD_PAR

MOD_PAR关键字用于描述要为设备配置的管理数据。除了注释之外,所有参数都是可选的。暂时没有用到。

XCP数据

在A2ML中定义XCP结构:

"XCP" struct {
          taggedstruct Common_Parameters;  /* default parameters */
          taggedstruct {
            block "XCP_ON_CAN" struct {
              struct CAN_Parameters;  /* specific for CAN */
              taggedstruct Common_Parameters;  /* overruling of default */
            };
    
          };  /* transport layer parameters*/
        };
    

Common_Parameters定义

/*********************** start of Common Parameters ***************************/ 
taggedstruct Common_Parameters { 
 block "PROTOCOL_LAYER" struct Protocol_Layer; 
 block "SEGMENT" struct Segment; 
 block "DAQ" struct Daq; 
 block "PAG" struct Pag; 
 block "PGM" struct Pgm; 
 block "DAQ_EVENT" taggedunion Daq_Event; 
}; /******************** end of Common Parameters *****************************/

定义了第二节介绍的接口。

IF_DATA定义XCP

PROTOCOL_LAYER

 /begin IF_DATA XCP
      /begin PROTOCOL_LAYER
        0x0101
        0x07D0
        0x2710
        0x07D0
        0x07D0
        0x07D0
        0x07D0
        0x00
        0x08
        0x08
        BYTE_ORDER_MSB_LAST
        ADDRESS_GRANULARITY_BYTE
        OPTIONAL_CMD SET_MTA
        OPTIONAL_CMD UPLOAD
        OPTIONAL_CMD SHORT_UPLOAD
        OPTIONAL_CMD TRANSPORT_LAYER_CMD
        OPTIONAL_CMD DOWNLOAD
        OPTIONAL_CMD DOWNLOAD_NEXT
        OPTIONAL_CMD SHORT_DOWNLOAD
        OPTIONAL_CMD SET_CAL_PAGE
        OPTIONAL_CMD GET_CAL_PAGE
        OPTIONAL_CMD GET_PAG_PROCESSOR_INFO
        OPTIONAL_CMD GET_PAGE_INFO
        OPTIONAL_CMD SET_DAQ_PTR
        OPTIONAL_CMD WRITE_DAQ
        OPTIONAL_CMD SET_DAQ_LIST_MODE
        OPTIONAL_CMD GET_DAQ_LIST_MODE
        OPTIONAL_CMD START_STOP_DAQ_LIST
        OPTIONAL_CMD START_STOP_SYNCH
        OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO
        OPTIONAL_CMD GET_DAQ_EVENT_INFO
        OPTIONAL_CMD FREE_DAQ
        OPTIONAL_CMD ALLOC_DAQ
        OPTIONAL_CMD ALLOC_ODT
        OPTIONAL_CMD ALLOC_ODT_ENTRY
        COMMUNICATION_MODE_SUPPORTED BLOCK
          SLAVE
      /end PROTOCOL_LAYER

第一个数字是版本号,后面七个是T1-T7


接下来两个为MAX_CTO和MAX_DTO

BYTE_ORDER_MSB_LAST表示Intel格式

后面的是定义的命令,由于本XCP没有用编程,所以跟编程相关的CMD不在定义范围内。

COMMUNICATION_MODE_SUPPORTED定义从机

DAQ

/begin DAQ
        DYNAMIC
        0x00
        0x2D
        0x00
        OPTIMISATION_TYPE_DEFAULT
        ADDRESS_EXTENSION_FREE
        IDENTIFICATION_FIELD_TYPE_ABSOLUTE
        GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE
        0x07
        OVERLOAD_INDICATION_PID
        /begin STIM
          GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE
          0x07
        /end STIM

目前XCP只支持DYNAMIC DAQ

MAX_DAQ为0.因为是动态DAQ
MAX_EVENT_CHANNEL为0x2D,根据实际EVENT数决定,配置时是大于实际EVENT数的。

MIN_DAQ为0.因为是动态DAQ

OPTIMISATION_TYPE;这个默认

ADDRESS_EXTENSION:free

不知道配置在哪。在标定软件中有显示可以配置。

IDENTIFICATION_FIELD_TYPE_ABSOLUTE,在下图中配置


OVERLOAD_INDICATION_PID,不知道配置在哪。在标定软件中有显示可以配置。

MAX_ODT_ENTRY_SIZE_DAQ:0x07


因为TIMESTAMP选择的是NO_TIME_STAMP,所以时间戳不可用

EVENT

以其中一个event为例:

/begin EVENT
          "Dlt_EvtMsg"
          "Dlt_EvtM"
          0x1E
          DAQ
          0x01
          0x00
          0x06
          0x00
        /end EVENT

事件名:Dlt_EvtMsg

短名:Dlt_EvtM

事件编号:0x1E

数据传输类型:DAQ

最大DAQ LIST数量:1

事件循环周期:0

事件时间单位:6,“UNIT_1NS” = 0,
“UNIT_10NS” = 1,
“UNIT_100NS” = 2,
“UNIT_1US” = 3,
“UNIT_10US” = 4,
“UNIT_100US” = 5,
“UNIT_1MS” = 6,
“UNIT_10MS” = 7,
“UNIT_100MS” = 8,
“UNIT_1S” = 9,
“UNIT_1PS” = 10,
“UNIT_10PS” = 11,
“UNIT_100PS” = 12

事件优先级:0

XCP_ON_CAN

CAN_Parameters

    0x0102
    CAN_ID_MASTER 0x0xxx
    CAN_ID_SLAVE 0x0xxx
    BAUDRATE 0x07A120
    SAMPLE_POINT 0x50
    SAMPLE_RATE SINGLE
    BTL_CYCLES 0x0A
    SJW 0x01
    MAX_DLC_REQUIRED

XCP on CAN version 版本号:0x0102

CAN_ID_MASTER:主机ID-0x0xxx

CAN_ID_SLAVE:从机ID-0x0xxx

BAUDRATE:500K,0x07A120

SAMPLE_POINT:采样点80

SAMPLE_RATE:采样率SINGLE

BTL_CYCLES:每个bit的slot数,10

SJW:同步段长度,1

MAX_DLC_REQUIRED:主从机的DLC始终为8

PROTOCOL_LAYER和前面设置的一致


CAN相关的信息在DBC或Arxml中设置。

总结

至此,A2L文件中的内容就介绍完了。关于XCP协议及代码实现,后面有空再继续学习。

若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~

你的鼓励是对小弟的最大支持~~~

建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于can总线的A2L文件解析(3) 的相关文章

  • 学习CANopen --- [9] CAN总线的状态检查

    本文讲述如何判断CAN总线是否存在以及是否bus off xff0c 以vcan0进行讲解 xff0c vcan0是虚拟的CAN接口 xff0c 可以把它看做一个软件CAN适配器 xff08 区别于硬件CAN适配器 xff0c 如PeakC
  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • CAN扩展帧详解

    寻址方式
  • 自动驾驶之——CAN总线简介

    自动驾驶技术之 无人驾驶中的CAN总线 CAN 是Controller AreaNetwork 的缩写 xff0c 中文名为控制器局域网络 xff0c 是ISO国际标准化的串行通信协议 xff0c 是一种用于实时应用的串行通讯协议总线 xf
  • CAN总线 标准帧/扩展帧滤波器设置

    在CAN协议里 xff0c 报文的标识符不代表节点的地址 xff0c 而是跟报文的内容相关的 因此 xff0c 发送者以广播的形式把报文发送给所有的接收者 节点在接收报文时 根据标识符 CAN ID 的值决定软件是否需要该报文 xff1b
  • CAN通信矩阵的理解(CAN报文信号的属性)

    CAN通信矩阵 1 CAN通信矩阵是什么 CAN通信矩阵 xff08 CAN Communication Matrix xff09 通常由整车厂完成定义 xff0c 车辆网络中的各个节点需要遵循该通讯矩阵才能完成信息的交互和共享 我们知道C
  • roscore报错: ‘ascii’ codec can’t decode byte 0xe6 in position 13: ordinal not in range(128)

    零 问题描述 使用ROS是 xff0c 执行roscore报一下错误 xff1a ascii codec can t decode byte 0xe6 in position 13 ordinal not in range 128 The
  • CAN报文格式简析

    Date xff1a 2022 5 11 Author xff1a MJQ Meta xff1a CAN CAN基础篇 CAN报文格式简析 1 Motornala和Intel格式 建议直接看图 xff0c 小白也能秒懂 xff01 注 xf
  • c#通过串口及CAN模块实现上位及下位机通讯

    目录 前言 一 串口 CAN总线 二 使用步骤 1 RS232串口通讯 xff08 指令下发与接收 xff09 2 CAN总线通讯 总结 前言 学习及工作中我们经常会遇到上位机与下位机通讯等工作 xff0c 结合场景使用不同的通讯方式实时通
  • 大疆M3508、M2006必备CAN总线知识与配置方法

    大疆M3508 M2006必备CAN总线知识与配置方法 文章目录 大疆M3508 M2006必备CAN总线知识与配置方法前言 xff1a 0x00 需要 额外的 CAN收发器 xff01 xff01 xff01 0x01 硬件层面分析为什么
  • IMX6ULL与STM32F103的CAN通信实现

    IMX6ULL与STM32F103的CAN通信实现 硬件连接驱动层实现IMX6ULLSTM32F103ZET6 应用层实现IMX6ULLSTM32F103ZET6 结果 在上一篇博文中 xff0c 我们利用USBCAN设备及其上位机软件 x
  • 使用STM32F103做CAN的收发通信

    下面也是搭建嵌入式系统所必须的一个部分 参考网站 xff1a https www cnblogs com craigtao p 3645148 html https blog csdn net qq 29413829 article det
  • Ubuntu系统周立功CAN驱动安装及常见问题

    文章目录 前言 一 步骤 1 检查是否安装libusb的库 2 驱动安装 3 测试 部分常见问题 前言 系统是ubuntu16系列 周立功的是usbcan 提示 以下是本篇文章正文内容 下面案例可供参考 一 步骤 1 检查是否安装libus
  • 一文读懂CAN总线及通信协议

    CAN总线的汽车 CAN概念 CAN是控制器域网 Controller Area Network CAN 的简称 是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的 并最终成为国际标准 ISO11898 是ISO国际标准化的串行通信
  • CAN/CANFD 总线负载率及计算(源码和工具)

    CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标 一般建议负载率峰值不要高于80 平均负载率不要超过50 当然这只是一般建议 具体根据使用场景和系统设计而定 负载率定义 关于CAN负载率的定义和计算 很多文章写得不求甚解
  • CAN 为什么需要收发器

    在RTL代码中集成了两个CAN node 打算直接连接将两个node的Rx和Tx对接 发现两个CAN Node无法通信 询问技术支持后才知道必须要收发器 那为什么一定需要收发器呢 除了转换单端的CAN信号用于不同的传输 收发器也会将CANT
  • Canoe 安装流程

    硬件 VN5620 软件 CANoe V15 0 软件 Vector License Client 6 2 驱动 Vector Driver Setup license 购买硬件时 vector会分配 参考文档 First Steps to
  • STM32F407 CAN1 CAN2

    注意CAN1可以单独使用 CAN2要开启CAN1时钟才能使用 u8 CAN1 Mode Init u8 mode GPIO InitTypeDef GPIO InitStructure CAN InitTypeDef CAN InitStr
  • pico示波器使用

    文章目录 Pico示波器保存波形 Pico示波器录制数据 Pico示波器解析CAN报文 Pico示波器保存波形 Pico示波器可以通过以下步骤保存波形 在示波器上选择要保存的波形 连接示波器到计算机上 可以使用USB或者Ethernet连接
  • 功放诊断测试

    1 切换trace显示时间模式 Toggle time mode 2 测seedkey 需要加载seednkey dll 3 功能寻址和物理寻址切换

随机推荐