0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)關(guān)于新CAN驅(qū)動的錯誤幀定義

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-05 10:27 ? 次閱讀

CAN總線產(chǎn)生的錯誤以錯誤幀的形式上報給應(yīng)用層。設(shè)置注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1] BusErrorReport項為1可以讓驅(qū)動上報CAN總線錯誤幀,為0,驅(qū)動不會上報錯誤幀。

幀格式

CAN幀結(jié)構(gòu)體定義如下,當(dāng)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,錯誤幀標(biāo)記為CAN_ID的error,錯誤類型存放在CAN_ID中,根據(jù)不同類型的錯誤,詳細(xì)信息存放在幀結(jié)構(gòu)體CAN_FRAME的data中。

一個錯誤幀中,可以包含多種錯誤類型的錯誤信息。

CAN_ERR_TX_TIMEOUT錯誤

WINCE中暫時保留。

lost arbitration仲裁丟失錯誤

#defineCAN_ERR_LOSTARB0x00000002U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_LOSTARB為真時,表明該錯誤產(chǎn)生。

controller problems控制器出錯

#defineCAN_ERR_CRTL0x00000004U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_CRTL為真時,表明該錯誤產(chǎn)生。

詳細(xì)信息存放在錯誤幀結(jié)構(gòu)體data[1]中。

接收buffer溢出

data[0] &0x01為真,表明該錯誤產(chǎn)生。

需要及時處理接收到的數(shù)據(jù)包。

發(fā)送buffer溢出

data[0] &0x02為真,表明該錯誤產(chǎn)生。

可能由于瞬間發(fā)送的數(shù)據(jù)包過多導(dǎo)致。

接收錯誤達(dá)到警告級別

data[0] &0x04為真,表明該錯誤產(chǎn)生。

當(dāng)該錯誤提示,表明短期內(nèi)接收產(chǎn)生的錯誤較多。

發(fā)送錯誤達(dá)到警告級別

data[0] &0x08為真,表明該錯誤產(chǎn)生。

當(dāng)該錯誤提示,表明短期內(nèi)發(fā)送產(chǎn)生的錯誤較多。

接收錯誤達(dá)到嚴(yán)重錯誤級別

data[0] &0x10為真,表明該錯誤產(chǎn)生。

當(dāng)該錯誤提示,表明短期內(nèi)接收產(chǎn)生的錯誤過多。應(yīng)當(dāng)暫停CAN通信,檢查錯誤原因。

發(fā)送錯誤達(dá)到嚴(yán)重錯誤級別

data[0] &0x20為真,表明該錯誤產(chǎn)生。

當(dāng)該錯誤提示,表明短期內(nèi)發(fā)送產(chǎn)生的錯誤過多。應(yīng)當(dāng)暫停CAN通信,檢查錯誤原因。

恢復(fù)到錯誤激活狀態(tài)

data[0] &0x40為真,表明恢復(fù)到錯誤激活狀態(tài)。

CAN通信協(xié)議出錯

#defineCAN_ERR_PROT0x00000008U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_PROT為真時,表明該錯誤產(chǎn)生。

詳細(xì)信息存放在錯誤幀結(jié)構(gòu)體data[2]和data[3]中,其中data[2]表明協(xié)議錯誤類型,data[3]表明協(xié)議出錯的位置

(類型)單bit出錯

data[2] &0x01為真,表明協(xié)議單bit出錯。

(類型)幀格式出錯

data[2] &0x02為真,表明幀格式出錯。

(類型)位填充出錯

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

(類型)dominant bit發(fā)送失敗

data[2] &0x08為真,表明dominant bit發(fā)送失敗。

(類型)recessive bit發(fā)送失敗

data[2] &0x10為真,表明recessive bi發(fā)送失敗。

(類型)總線過載

data[2] &0x20為真,表明總線過載。

(類型)active error announcement

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

(類型)傳輸出錯

data[2] &0x80為真,傳輸出錯。

位置

data[3]為0x03表明協(xié)議SOF幀頭位置

data[3]為0x02表明協(xié)議ID第28-21bits(SFF:10-3)

data[3]為0x06表明協(xié)議ID第20-18bits(SFF:2-0)

data[3]為0x04表明協(xié)議substitute RTR位(SFF:RTR)

data[3]為0x05表明協(xié)議identifier extension標(biāo)準(zhǔn)擴(kuò)展位

data[3]為0x07表明協(xié)議ID第17-13bits

data[3]為0x0F表明協(xié)議ID第12-5bits

data[3]為0x0E表明協(xié)議ID第4-0bits

data[3]為0x0C表明協(xié)議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應(yīng)答位

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

data[3]為0x1A表明幀尾

data[3]為0x12表明間歇

收發(fā)狀態(tài)錯誤

#defineCAN_ERR_TRX0x00000010U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_TRX為真時,表明在收發(fā)時CAN狀態(tài)有誤。

詳細(xì)信息存放在錯誤幀結(jié)構(gòu)體data[4]中,data[4]中1個字節(jié)8bit中,高4位表示CANL值,分別代表如下CANH錯誤

高4位表示CANH值,分別代表如下CANL錯誤

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

無ACK錯誤

#defineCAN_ERR_ACK0x00000020U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_ACK為真時,表明該錯誤產(chǎn)生。

總線關(guān)閉

#defineCAN_ERR_BUSOFF0x00000040U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_BUSOFF為真時,表明總線關(guān)閉。

總線錯誤

#defineCAN_ERR_BUSERROR0x00000080U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_BUSERROR為真時,表明該錯誤產(chǎn)生。

該錯誤通常與其它錯誤一起發(fā)出。

控制器重啟

#defineCAN_ERR_RESTARTED0x00000100U

當(dāng)錯誤幀結(jié)構(gòu)體中CAN_ID& CAN_ERR_RESTARTED為真時,表明控制器重啟。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6086

    瀏覽量

    35482
收藏 人收藏

    評論

    相關(guān)推薦

    基于Vector工具進(jìn)行CAN協(xié)議錯誤的分析實踐

    廣播發(fā)送的短結(jié)構(gòu),還體現(xiàn)在其錯誤檢測機(jī)制上。通過總線數(shù)據(jù)以及總線波形來分析總線故障時,CAN協(xié)議錯誤檢測機(jī)制中豐富的錯誤
    的頭像 發(fā)表于 01-15 10:03 ?32次閱讀
    基于Vector工具進(jìn)行<b class='flag-5'>CAN</b>協(xié)議<b class='flag-5'>錯誤</b><b class='flag-5'>幀</b>的分析實踐

    CAN總線常見錯誤碼及其解決方法

    錯誤碼,這些錯誤碼可以幫助我們診斷和解決問題。 1. 錯誤(Error Frame) 錯誤碼 :當(dāng)CA
    的頭像 發(fā)表于 11-12 10:05 ?3177次閱讀

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強(qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?521次閱讀

    can標(biāo)準(zhǔn)和擴(kuò)展能否共存

    CAN(Controller Area Network)是一種用于汽車和工業(yè)自動化領(lǐng)域的現(xiàn)場總線通信協(xié)議。CAN協(xié)議具有多種格式,包括標(biāo)準(zhǔn)和擴(kuò)展
    的頭像 發(fā)表于 07-24 15:24 ?1977次閱讀

    can標(biāo)準(zhǔn)和擴(kuò)展的區(qū)別

    CAN(Controller Area Network)是一種用于汽車和工業(yè)領(lǐng)域的通信協(xié)議,它允許多個設(shè)備在同一總線上進(jìn)行通信。CAN協(xié)議有兩種類型:標(biāo)準(zhǔn)和擴(kuò)展
    的頭像 發(fā)表于 07-24 15:20 ?2046次閱讀

    can網(wǎng)絡(luò)數(shù)據(jù)的特點(diǎn)

    特點(diǎn),在分布式系統(tǒng)中得到了廣泛應(yīng)用。 數(shù)據(jù)的重要性 :數(shù)據(jù)CAN網(wǎng)絡(luò)中用于數(shù)據(jù)傳輸?shù)幕締卧浣Y(jié)構(gòu)設(shè)計和特性直接關(guān)系到整個網(wǎng)絡(luò)的通信效率和可靠性。 二、數(shù)據(jù)的結(jié)構(gòu) 基本構(gòu)成
    的頭像 發(fā)表于 07-24 15:18 ?379次閱讀

    can數(shù)據(jù)有哪幾個域組成

    CAN(控制器局域網(wǎng)絡(luò))是一種基于消息傳遞的通信協(xié)議,廣泛應(yīng)用于汽車、工業(yè)自動化和嵌入式系統(tǒng)等領(lǐng)域。CAN協(xié)議的數(shù)據(jù)是用于傳輸信息的基本單位。 1.
    的頭像 發(fā)表于 07-24 15:14 ?1136次閱讀

    CAN數(shù)據(jù)的各個域及其作用

    CAN(Controller Area Network)是一種用于汽車電子系統(tǒng)中的通信協(xié)議,它具有高可靠性、實時性和靈活性等特點(diǎn)。在CAN通信中,數(shù)據(jù)是最基本的通信單元,用于傳輸信息
    的頭像 發(fā)表于 07-24 15:10 ?1540次閱讀

    一文讀懂CAN通訊錯誤

    CAN總線通信技術(shù)廣泛應(yīng)用于多個行業(yè),是每個總線設(shè)計工程師必學(xué)的一個通訊網(wǎng)絡(luò)。然而,對于CAN通信中的錯誤,許多人僅停留在表面了解,缺乏深
    的頭像 發(fā)表于 06-12 08:24 ?2815次閱讀
    一文讀懂<b class='flag-5'>CAN</b>通訊<b class='flag-5'>錯誤</b><b class='flag-5'>幀</b>

    一文讀懂CAN控制器錯誤處理的原理

    CAN通訊的錯誤到底是如何被界定的?本文帶你輕松了解!錯誤標(biāo)定檢測到錯誤條件的站通過發(fā)送錯誤標(biāo)
    的頭像 發(fā)表于 04-26 08:25 ?1663次閱讀
    一文讀懂<b class='flag-5'>CAN</b>控制器<b class='flag-5'>錯誤</b>處理的原理

    CAN 會收到錯誤的數(shù)據(jù)嗎?

    CAN-bus總線協(xié)議以高穩(wěn)定性,高容錯率而著稱于世,然而仍有很多用戶在使用的時候擔(dān)心CAN會接受到錯誤信息,在數(shù)據(jù)里增加了CRC校驗的部分,這種做法是否有必要?
    的頭像 發(fā)表于 04-04 08:24 ?443次閱讀
    <b class='flag-5'>CAN</b> 會收到<b class='flag-5'>錯誤</b>的數(shù)據(jù)嗎?

    虹科技術(shù) | PCAN View功能細(xì)講:從實時監(jiān)測到錯誤分析

    相信使用過PCAN工具的朋友都知道虹科PCAN-View這款免費(fèi)軟件,它具有直觀的用戶界面,可以實時監(jiān)測和分析CAN總線上的數(shù)據(jù),并提供過濾、發(fā)送和報文記錄。但你知道嗎?它其實不只是簡單收發(fā)報文,虹科PCAN-View還能自動檢測和報告
    的頭像 發(fā)表于 03-18 13:48 ?1357次閱讀
    虹科<b class='flag-5'>技術(shù)</b> | PCAN View功能細(xì)講:從實時監(jiān)測到<b class='flag-5'>錯誤</b><b class='flag-5'>幀</b>分析

    請問用CAN存儲器存儲的CAN總線數(shù)據(jù)格式有哪些呢?

    之間的信息傳輸。下面將詳細(xì)介紹CAN總線數(shù)據(jù)的格式。 CAN總線數(shù)據(jù)分為兩種類型:標(biāo)準(zhǔn)和擴(kuò)
    的頭像 發(fā)表于 01-31 13:46 ?1342次閱讀

    CAN總線的標(biāo)準(zhǔn)和擴(kuò)展有什么區(qū)別呢?分別適用于什么工況?

    CAN總線的標(biāo)準(zhǔn)和擴(kuò)展CAN協(xié)議中的兩種類型。
    的頭像 發(fā)表于 01-30 09:41 ?6425次閱讀
    <b class='flag-5'>CAN</b>總線的標(biāo)準(zhǔn)<b class='flag-5'>幀</b>和擴(kuò)展<b class='flag-5'>幀</b>有什么區(qū)別呢?分別適用于什么工況?

    CAN通信協(xié)議中有哪幾種類型?CAN通信中格式的作用

    CAN通信協(xié)議中有四種類型,分別是數(shù)據(jù)、遠(yuǎn)程、錯誤和過載
    的頭像 發(fā)表于 01-30 09:18 ?5665次閱讀