在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CAN報文為什么會發送失敗?

ZLG致遠電子 ? 2024-04-12 08:25 ? 次閱讀

CAN總線調試過程中出現報文發送失敗。很多工程師都對此只知其一不知其二,今天我們就以CAN報文發送失敗的問題來做一次探討。

在了解CAN報文為什么會發送失敗之前我們先看看一幀標準的CAN報文到底應該是怎么樣的。表1是一幀正常標準數據幀的報文組成。
表1 標準數據幀報文格式組成24143244-f863-11ee-9118-92fbcf53809c.png

24197de4-f863-11ee-9118-92fbcf53809c.jpg

圖1 標準數據幀格式CAN總線是一種基于廣播的通訊方式,為了保證總線上的每一個正常節點都能正確的接收到報文,報文的發送者要求至少一個接收節點在報文發送結束前要作出應答,這也是報文里ACK存在的原因。

一幀CAN報文中ACK段長度為2個位,包含應答間隙(ACK Slot)和應答界定符(ACK Delimter)。在應答場里,發送器發送兩個隱性位。當接收器正確地接收到有效的報文,接收器就會在應答間隙(ACK Slot)期間(發送ACK信號)向發送器發送一“顯性”的位以示應答。

應答間隙:所有接收到匹配CRC序列(CRC SEQUENCE)的站會在應答間隙(ACK Slot)期間用一顯性的位寫入發送器的隱性位來作出回答。

應答界定符:ACK界定符是ACK場的第二個位,并且是一個必須為隱性的位。因此,應答間隙(ACK Slot)被兩個隱性的位所包圍,也就是CRC界定符(CRC Delimter)和ACK界定符(ACK Delimter)。

241d1c2e-f863-11ee-9118-92fbcf53809c.png

圖2 正常ACK段報文

而如果總線上沒有ACK應答(即應答間隙為隱性),發送器就會發送一個錯誤標志,并且發送錯誤計數器值加8,節點就會對報文進行自動重發,若自動重發依然收不到ACK,則在發送錯誤計數器計數滿128后(即出現16幀錯誤幀),由錯誤主動轉為錯誤被動狀態,如圖3所示。那導致ACK段出錯的原因有哪些呢?下面小編總結了一些。

  • 總線上只有一個有效節點:發送報文的節點在發送出一幀報文后會檢測總線上應答間隙的狀態,如果檢測到應答間隙為隱性位,則表示該幀報文沒有得到ACK,發送失敗,需要重發,而由于發送錯誤計數器會在發送失敗后累加,直到該節點關閉。所以,當總線上只有一個有效節點時,這個節點是發不出去數據的,因為它所發出的數據幀中的ACK Slot沒有另外一個節點來填充,將永遠是隱性位,這個節點會一直重發數據直到發送成功或發送被取消。
  • 波特率不匹配或者節點沒有初始化,導致沒有ACK;
  • 總線線纜短路,斷路,接反;
  • 高速CAN總線上接的節點不是高速CAN,而是容錯低速CAN,導致不匹配。

24205d76-f863-11ee-9118-92fbcf53809c.jpg

圖3 應答界定符錯誤幀242459c6-f863-11ee-9118-92fbcf53809c.png

圖4 沒有ACK的報文

當你在調試CAN總線時出現節點發送報文失敗的情況時,一定要檢查是不是以上幾點疏漏導致你的總線上ACK異常。而借助恰當的儀器,可以在查找CAN總線錯誤時事半功倍。圖4即采用致遠電子的CANScope來對錯誤幀進行標記,同時找到錯誤幀對應的波形來查找出錯誤情況。CANScope還可以對CAN總線物理層、數據鏈路層、應用層做一系列的測試,為CAN工程師解決測試難題。

243449d0-f863-11ee-9118-92fbcf53809c.jpg

圖5 CANScope測試項目

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CAN總線
    +關注

    關注

    145

    文章

    1951

    瀏覽量

    130760
  • 數據幀
    +關注

    關注

    0

    文章

    46

    瀏覽量

    6744
  • can報文
    +關注

    關注

    0

    文章

    4

    瀏覽量

    2325
收藏 人收藏

    評論

    相關推薦

    CAN總線知識】全面了解CAN總線協議

    基本概念1.報文總線上的信息以不同格式的報文發送,但長度有限?當總線開放時,任何連接的單元均可開始發送一個新報文?2.信息路由在
    的頭像 發表于 10-15 08:05 ?1471次閱讀
    【<b class='flag-5'>CAN</b>總線知識】全面了解<b class='flag-5'>CAN</b>總線協議

    CAN總線的報文類型介紹

    CAN(Controller Area Network)總線是一種廣泛使用的串行通信協議,特別適用于汽車和工業自動化領域。CAN總線上的報文類型主要可以分為以下幾種,每種類型都有其特定的用途和格式。
    的頭像 發表于 09-03 14:20 ?1573次閱讀

    如何在CANtest上通過報文發送實現CCP指令的發送

    如題,我在CANtest上通過CAN報文發送了CCP指令\'CONNECT\'、\'SET-MTA\'和‘Upload’。前兩個指令的返回均沒有報錯,可\'Upload\'的返回直接
    發表于 08-13 10:46

    基于VB6.0 實現 CAN信號收發 Demo

    、VB6.0、libTSCAN1關于Demo工程簡要描述:VB6.0編程語言調用libTSCAN接口實現硬件掃描、連接、CAN報文單幀發送、周期發送、
    的頭像 發表于 07-27 08:21 ?756次閱讀
    基于VB6.0 實現 <b class='flag-5'>CAN</b>信號收發 Demo

    CYT2BL和SDL v8.0.0是否有可能實現以相同ID發送和接收CAN報文(RxID、TxID)的功能?

    我使用的是 CYT2BL 和 SDL v8.0.0。 我想發送和接收具有相同 ID 的 CAN 報文。 1.是否有可能實現以相同 ID 發送和接收
    發表于 07-23 06:12

    TC3XX can發送報文,周期上下波動嚴重怎么解決?

    使用FULL CAN發送,周期調用Can_17_McmCan_lWriteMsgObj發送報文,查看周期是穩定的,但到發出來和中斷觸發的時間會上下波動,而且波動越來越大。
    發表于 07-11 08:00

    試圖從CAN卡向TC375發送報文時,TC375始終收不到,為什么?

    我試圖在TC375上進行CAN收發測試,測試目的是完成TC375和CAN卡的通訊,現在我已經成功地將CAN報文從TC375發送到了
    發表于 07-04 06:04

    如何通過CAN報文TC375傳輸數據?

    從示例 MCMCAN_1_KIT_TC375_LK 和 ADC_Single_Channel_1_TC375_LK 開始,我必須用 CAN 報文發送從模擬通道獲取的數值。 我就是這么做的: void
    發表于 05-28 08:30

    TC387從App跳回PBL在下載SBL,進入SBL后上位機發送CAN報文響應超時,怎么解決?

    你好,我目前實現了 PBL SBL 但目前的問題是:將SBL下載到RAM區域后,通過SBL下載App正常;但從App跳回PBL在下載SBL,進入SBL后上位機發送CAN 報文響應超時。我在SBL中
    發表于 05-24 08:12

    CAN報文格式和發送總流程

    在標準格式中,報文的起始位稱為幀起始(SOF),然后是由11位標識符和遠程發送請求位(RTR)組成的仲裁場。RTR位標明是數據幀還是請求幀,在請求幀中沒有數據字節。
    發表于 04-11 10:07 ?9442次閱讀
    <b class='flag-5'>CAN</b>的<b class='flag-5'>報文</b>格式和<b class='flag-5'>發送</b>總流程

    TC275多路CAN節點,報文接收時需要開啟多路的CAN接收中斷嗎?

    TC275配置使用一路CAN0時,收發都可以,收報文是開啟的CAN0接收中斷,然后接收報文;現在使用兩路CAN
    發表于 02-20 08:27

    TC387模塊CAN0的節點2作為CANA使用,CANA既收不到報文也發不出報文如何解決?

    TC387模塊CAN0的節點2作為CANA使用,CAN1的節點0作為CANB使用,配置基本相同。但CANB的通信正常,而在TJA1145正常情形下,CANA既收不到報文,也發不出報文,
    發表于 02-19 06:43

    MCU怎樣判斷CAN發送狀態?

    (); } 如此配置發現在一幀報文發送完了后,不能進入can發送中斷, 2、能有別的標志位來判斷can
    發表于 02-18 08:33

    CAN FD在發送報文時會有發不出去的現象怎么解決?

    現象描述: 在發送多幀報文數據時,出現了較為嚴重的報文丟失現象。編寫測試程序,在for循環中循環發送id為0-7ff的報文,對返回值進行了判
    發表于 02-02 07:48

    使用CYT2B75芯片CANFD模塊無法發送消息是什么原因導致的呢?

    你好,我使用SDL的example中的CANFD代碼測試CYT2B75芯片CANFD模塊,對部分代碼進行了硬件適配修改,詳見附件,配置為每秒發送一次CAN報文。 問題:消息發送
    發表于 02-02 06:57
    主站蜘蛛池模板: 天天干视频在线| 欧美黑人三级| 国产在线小视频| 日本aaaaa| 色中文网| 狠狠色丁香六月色| 激情综合网色播五月| 日本免费xxxx色视频| 97人人人人| 欧美宗合网| 午夜片网站| 国产成人99久久亚洲综合精品| 黄色成人一级片| 我不卡老子影院午夜伦我不卡四虎 | 天天操天天射天天舔| 亚洲一卡2卡4卡5卡6卡在线99| 色视频网址| 香蕉视频在线观看国产| 91大神在线精品网址| 色狠狠成人综合网| 五月天在线婷婷| 美日韩毛片| 激情综合网激情| 国产亚洲美女精品久久久2020| 中文天堂最新版在线中文 | 亚洲激情视频| 成人久久精品| 国产黄色视屏| 欧美一级精品高清在线观看| 天天干天天操天天拍| 99精品热| 成人在线视频网| 在线永久免费观看黄网站| 欧美一欧美一区二三区性| 色片视频网站| 一区二区三区电影| 不卡无毒免费毛片视频观看| 4438x成人全国| 美女色黄一男一女| 成人午夜大片免费视频77777 | 久久免费特黄毛片|