基于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) 的相关文章

  • STM32通信---CAN

    一 CAN是什么 xff1f CAN xff0c 全称为 Controller Area Network xff0c 即控制器局域网 xff0c 是一种多主方式的串行通讯总线 xff0c 是国际上应用最广泛的现场总线之一 二 CAN的起源
  • UART、IIC、SPI、CAN通信的区别与应用

    文章目录 1 通信的基本知识1 1 数据通信的种类1 1 1 串行通信1 1 2 并行通信1 1 3 总结 1 2 数据通信的传输方向1 2 1 单工1 2 2 半双工1 2 3 全双工1 2 4 总结 1 3 数据通信的方式1 3 1 同
  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • can't run '/etc/init.d/rcS': No such file or directory 最终解决方法

    drivers rtc hctosys c unable to open rtc device rtc0 end request I O error dev mtdblock2 sector 256 isofs fill super bre
  • Linux内核Socket CAN中文文档

    自己在年假中空闲之余翻译的内核中Socket CAN的文档 xff0c 原文地址在 xff1a http lxr linux no linux 43 v2 6 34 Documentation networking can txt 但是这篇
  • 一帧CAN数据需要多长时间发送

    1 CAN通讯速率 默认 500kbit s xff1b 2 xff1a 从下图CAN数据包的完整结构可知 xff0c 一包完整的扩展帧CAN数据总共包含 128bit xff1b 3 xff1a 发送一帧扩展帧CAN数据耗时 128 50
  • Python 使用can模块(记录稿)

    直接安装 xff1a pip install python can 如果报这个错 更新一下pip pip3 install upgrade pip 或者是 pip install upgrade pip 再安装wrapt pip insta
  • 下一代CAN通信技术CAN XL简介

    众所周知 xff0c CAN网络具有易于实现 可扩展 并支持复杂拓扑结构等诸多优点 xff0c 所以目前在各个行业特别是汽车领域 xff0c 得到了非常广泛的应用 但是 xff0c 它也存在着诸多问题 xff0c 其中最大的一点就是总线带宽
  • CAN总线电平(隐性与显性)

    nbsp nbsp nbsp nbsp CAN2 0B规范定义了两种互补的逻辑数值 显性和隐性 同时传送显性和隐性位时 总线呈现显性状态 同时传送显性状态位时 总线呈现显性状态 同时传送隐性状态位时 总线呈现隐性状态 显性数值表示逻辑0 隐
  • 解决ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

    如何解决ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 1 登录到安装Mysql的主机 xff0c 打开cmd命令行工具 xff0c 执行命令mysql u
  • 蓝牙通信、串口通信、和can通信以及MCU之间的关系

    说明 xff1a 其端口和can需要设置波特率 xff1a 250 500 xff0c 和can的类型 xff0c can1 can2 串口直接和模拟量通信需要设置串口的信息 xff0c 如下图 xff1a 蓝牙和模拟量通信 xff0c 不
  • CAN总线通信协议详讲

    CAN简介 CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986 年率先提出 此后 xff0c CAN 通过IS
  • linux-can编程(一)

    建立can的socket int can create socket char name int fd struct sockaddr can addr struct ifreq ifr socklen t len 61 sizeof ad
  • CAN为什么会发送失败

    CAN总线调试过程中出现报文发送失败 xff0c 很多工程师都对此只知其一不知其二 xff0c 这里就CAN报文发送失败的问题我们来做一次探讨 在了解CAN报文为什么会发送失败之前我们先看看一条正确的CAN报文到底应该是怎么样的 xff0c
  • 链接mysql数据库 Navicat,2003-can‘t connect to MYSQL server on192.168.1.122 (10060)

    可能的原因如下 xff1a 一 关闭防火墙 xff1b 1 firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop firewalld 查看状态 x
  • 树莓派spi转can通信之C编程实现(二)

    一 相关库的安装 wiringPi 链接网址 http wiringpi com 一个函数库 在编程时节省底层汇编以操作pi的功能引脚 对pi的引脚也进行了再次编号 BCM2835 C Library 链接网址 http www airsp
  • STM32的CAN总线的接收双FIFO使用方法

    通过下面的框图我们可以看到 STM32F013有两个接收FIFO 但是实际的使用中如何让着两个FIFO都被使用呢 解决办法就在这里 1 STM32F103有0 13共14个过滤器组 每个过滤器组都可以绑定指定的FIFO 2 特别需要注意的一
  • CAN 帧ID 与J1939 PGN 转换例子

    在saeJ1939中文版中找的三张图如下 例如 0x18 FE DF 00 110 0 0 11111110 11011111 00000000 P R DP PF PS SA 具体参数即为数据段 0 64 优先级为 P 110 2 或6
  • STM32 CAN通信的学习笔记总结(从小白开始)

    知识来源于互联网 回馈于互联网 目录 1 总体概述 1 1 基本概念 1 2 通讯方式 1 3 为什么使用CAN 1 4 CAN的协议及组成 2 上帝视角看CAN的通讯过程 2 1 数据传输原理实现 2 2 通信的整个过程 2 2 1 空闲
  • 功放诊断测试

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

随机推荐