0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术关于新CAN驱动的错误帧定义

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-05 10:27 次阅读

CAN总线产生的错误以错误帧的形式上报给应用层。设置注册表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1] BusErrorReport项为1可以让驱动上报CAN总线错误帧,为0,驱动不会上报错误帧。

帧格式

CAN帧结构体定义如下,当CAN_FRAME中CAN_ID的error为1时,表示该帧为错误帧。

typedefstruct{

unsignedintid:29;

unsignedinterror:1;

unsignedintremote:1;

unsignedintextended:1;

}CAN_ID;

typedefstruct_can_frame

{

CAN_ID can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */

BYTE can_dlc; /* frame payload length in byte*/

BYTE data[CAN_MAX_DLEN];

} CAN_FRAME, *PCAN_FRAME;

错误帧定义

可以参考例程中库头文件sdk_can.h,错误帧标记为CAN_ID的error,错误类型存放在CAN_ID中,根据不同类型的错误,详细信息存放在帧结构体CAN_FRAME的data中。

一个错误帧中,可以包含多种错误类型的错误信息。

CAN_ERR_TX_TIMEOUT错误

WINCE中暂时保留。

lost arbitration仲裁丢失错误

#defineCAN_ERR_LOSTARB0x00000002U

当错误帧结构体中CAN_ID& CAN_ERR_LOSTARB为真时,表明该错误产生。

controller problems控制器出错

#defineCAN_ERR_CRTL0x00000004U

当错误帧结构体中CAN_ID& CAN_ERR_CRTL为真时,表明该错误产生。

详细信息存放在错误帧结构体data[1]中。

接收buffer溢出

data[0] &0x01为真,表明该错误产生。

需要及时处理接收到的数据包。

发送buffer溢出

data[0] &0x02为真,表明该错误产生。

可能由于瞬间发送的数据包过多导致。

接收错误达到警告级别

data[0] &0x04为真,表明该错误产生。

当该错误提示,表明短期内接收产生的错误较多。

发送错误达到警告级别

data[0] &0x08为真,表明该错误产生。

当该错误提示,表明短期内发送产生的错误较多。

接收错误达到严重错误级别

data[0] &0x10为真,表明该错误产生。

当该错误提示,表明短期内接收产生的错误过多。应当暂停CAN通信,检查错误原因。

发送错误达到严重错误级别

data[0] &0x20为真,表明该错误产生。

当该错误提示,表明短期内发送产生的错误过多。应当暂停CAN通信,检查错误原因。

恢复到错误激活状态

data[0] &0x40为真,表明恢复到错误激活状态。

CAN通信协议出错

#defineCAN_ERR_PROT0x00000008U

当错误帧结构体中CAN_ID& CAN_ERR_PROT为真时,表明该错误产生。

详细信息存放在错误帧结构体data[2]和data[3]中,其中data[2]表明协议错误类型,data[3]表明协议出错的位置

(类型)单bit出错

data[2] &0x01为真,表明协议单bit出错。

(类型)帧格式出错

data[2] &0x02为真,表明帧格式出错。

(类型)位填充出错

data[2] &0x04为真,表明位填充出错。

(类型)dominant bit发送失败

data[2] &0x08为真,表明dominant bit发送失败。

(类型)recessive bit发送失败

data[2] &0x10为真,表明recessive bi发送失败。

(类型)总线过载

data[2] &0x20为真,表明总线过载。

(类型)active error announcement

data[2] &0x40为真,active error announcement。

(类型)传输出错

data[2] &0x80为真,传输出错。

位置

data[3]为0x03表明协议SOF帧头位置

data[3]为0x02表明协议ID第28-21bits(SFF:10-3)

data[3]为0x06表明协议ID第20-18bits(SFF:2-0)

data[3]为0x04表明协议substitute RTR位(SFF:RTR)

data[3]为0x05表明协议identifier extension标准扩展位

data[3]为0x07表明协议ID第17-13bits

data[3]为0x0F表明协议ID第12-5bits

data[3]为0x0E表明协议ID第4-0bits

data[3]为0x0C表明协议RTR位

data[3]为0x0D表明接收bit 1

data[3]为0x09表明接收bit 0

data[3]为0x0B表明DLC位

data[3]为0x0A表明DATA位

data[3]为0x08表明CRC序列

data[3]为0x18表明CRC分隔符

data[3]为0x19表明ACK应答位

data[3]为0x1B表明ACK分隔符

data[3]为0x1A表明帧尾

data[3]为0x12表明间歇

收发状态错误

#defineCAN_ERR_TRX0x00000010U

当错误帧结构体中CAN_ID& CAN_ERR_TRX为真时,表明在收发时CAN状态有误。

详细信息存放在错误帧结构体data[4]中,data[4]中1个字节8bit中,高4位表示CANL值,分别代表如下CANH错误

高4位表示CANH值,分别代表如下CANL错误

高低位值以排列组合方式存在。

无ACK错误

#defineCAN_ERR_ACK0x00000020U

当错误帧结构体中CAN_ID& CAN_ERR_ACK为真时,表明该错误产生。

总线关闭

#defineCAN_ERR_BUSOFF0x00000040U

当错误帧结构体中CAN_ID& CAN_ERR_BUSOFF为真时,表明总线关闭。

总线错误

#defineCAN_ERR_BUSERROR0x00000080U

当错误帧结构体中CAN_ID& CAN_ERR_BUSERROR为真时,表明该错误产生。

该错误通常与其它错误一起发出。

控制器重启

#defineCAN_ERR_RESTARTED0x00000100U

当错误帧结构体中CAN_ID& CAN_ERR_RESTARTED为真时,表明控制器重启。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6084

    浏览量

    35138
收藏 人收藏

    评论

    相关推荐

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 252次阅读

    can标准和扩展能否共存

    CAN(Controller Area Network)是一种用于汽车和工业自动化领域的现场总线通信协议。CAN协议具有多种格式,包括标准和扩展
    的头像 发表于 07-24 15:24 1367次阅读

    can标准和扩展的区别

    CAN(Controller Area Network)是一种用于汽车和工业领域的通信协议,它允许多个设备在同一总线上进行通信。CAN协议有两种类型:标准和扩展
    的头像 发表于 07-24 15:20 1274次阅读

    can网络数据的特点

    特点,在分布式系统中得到了广泛应用。 数据的重要性 :数据CAN网络中用于数据传输的基本单元,其结构设计和特性直接关系到整个网络的通信效率和可靠性。 二、数据的结构 基本构成
    的头像 发表于 07-24 15:18 279次阅读

    can数据有哪几个域组成

    CAN(控制器局域网络)是一种基于消息传递的通信协议,广泛应用于汽车、工业自动化和嵌入式系统等领域。CAN协议的数据是用于传输信息的基本单位。 1.
    的头像 发表于 07-24 15:14 651次阅读

    CAN数据的各个域及其作用

    CAN(Controller Area Network)是一种用于汽车电子系统中的通信协议,它具有高可靠性、实时性和灵活性等特点。在CAN通信中,数据是最基本的通信单元,用于传输信息
    的头像 发表于 07-24 15:10 741次阅读

    一文读懂CAN通讯错误

    CAN总线通信技术广泛应用于多个行业,是每个总线设计工程师必学的一个通讯网络。然而,对于CAN通信中的错误,许多人仅停留在表面了解,缺乏深
    的头像 发表于 06-12 08:24 2381次阅读
    一文读懂<b class='flag-5'>CAN</b>通讯<b class='flag-5'>错误</b><b class='flag-5'>帧</b>

    一文读懂CAN控制器错误处理的原理

    CAN通讯的错误到底是如何被界定的?本文带你轻松了解!错误标定检测到错误条件的站通过发送错误
    的头像 发表于 04-26 08:25 1460次阅读
    一文读懂<b class='flag-5'>CAN</b>控制器<b class='flag-5'>错误</b>处理的原理

    虹科技术 | PCAN View功能细讲:从实时监测到错误分析

    相信使用过PCAN工具的朋友都知道虹科PCAN-View这款免费软件,它具有直观的用户界面,可以实时监测和分析CAN总线上的数据,并提供过滤、发送和报文记录。但你知道吗?它其实不只是简单收发报文,虹科PCAN-View还能自动检测和报告
    的头像 发表于 03-18 13:48 993次阅读
    虹科<b class='flag-5'>技术</b> | PCAN View功能细讲:从实时监测到<b class='flag-5'>错误</b><b class='flag-5'>帧</b>分析

    请问用CAN存储器存储的CAN总线数据格式有哪些呢?

    之间的信息传输。下面将详细介绍CAN总线数据的格式。 CAN总线数据分为两种类型:标准和扩
    的头像 发表于 01-31 13:46 1143次阅读

    CAN总线的标准和扩展有什么区别呢?分别适用于什么工况?

    CAN总线的标准和扩展CAN协议中的两种类型。
    的头像 发表于 01-30 09:41 5361次阅读
    <b class='flag-5'>CAN</b>总线的标准<b class='flag-5'>帧</b>和扩展<b class='flag-5'>帧</b>有什么区别呢?分别适用于什么工况?

    CAN通信协议中有哪几种类型?CAN通信中格式的作用

    CAN通信协议中有四种类型,分别是数据、远程错误和过载
    的头像 发表于 01-30 09:18 4821次阅读

    Coral3568如何软硬件过滤can及优化?

    structcan_filterfilter[1];/*规则:可以接收ID为0x200数据错误*/filter[0].can_mask=CAN
    的头像 发表于 12-08 15:52 551次阅读
    Coral3568如何软硬件过滤<b class='flag-5'>can</b><b class='flag-5'>帧</b>及优化?

    can标准和扩展区别

    标准和扩展是用于在控制器局域网(CAN)中传输数据的两种基本格式。它们在结构、标识符长度、数据长度以及数据传输和应用上存在一些区别。本文将详细介绍标准
    的头像 发表于 12-08 10:08 9054次阅读

    如何用示波器排查CAN的各种错误呢?

    如何用示波器排查CAN的各种错误呢? 导言: 控制器局域网络(Controller Area Network,CAN)是一种常用的现场总线通信协议,广泛应用于汽车电子系统、工业自动化
    的头像 发表于 12-07 11:09 1050次阅读