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

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

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

3天內不再提示

一文搞懂CAN總線的數據幀和遙控幀

jf_Vqngj70R ? 來源:美男子玩編程 ? 作者:不脫發的程序猿 ? 2022-10-10 14:58 ? 次閱讀

CAN總線上傳輸的信息稱為報文,當總線空閑時任何連接的單元都可以開始發送新的報文。

CAN通信是通過以下5種類型的幀進行的:

數據幀

遙控幀

錯誤幀

過載幀

幀間隔

另外,數據幀和遙控幀有標準格式和擴展格式兩種格式。標準格式有 11 個位的標識符(Identifier: 以下簡稱 ID), 擴展格式有 29 個位的 ID。

各種幀的用途如下表所示:

poYBAGNDwtSACqPyAAC8x_tMIzw685.jpg

數據幀由7個段構成,圖解說明如下所示:

pYYBAGNDwuuAZprOAAEDknp5uVs760.jpg

幀起始:表示數據幀開始的段;

仲裁段:表示該幀優先級的段,根據仲裁段ID碼長度的不同,分為標準幀(CAN 2.0A)和擴展幀(CAN 2.0B);

控制段:表示數據的字節數及保留位的段;

數據段:數據的內容,可發送0~8個字節的數據;

CRC段:檢查幀的傳輸錯誤的段;

ACK段:表示確認正常接收的段;

幀結束:表示數據幀結束的段。

1

數據幀

1.1、幀起始

幀起始由1個顯性位組成??偩€空閑時,發送節點發送幀起始,其他接收節點同步于該幀起始位。

pYYBAGNDwwWAPaXgAABXG0PgU6k185.jpg

總線上的電平有顯性電平和隱性電平兩種。

總線上執行邏輯上的線“與”時,顯性電平的邏輯值為“0”,隱性電平為“1”。

“顯性”具有“優先”的意味,只要有一個單元輸出顯性電平,總線上即為顯性電平。并且,“隱性”具有“包容”的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平。(顯性電平比隱性電平更強。)

1.2、仲裁段

仲裁段用于寫明需要發送到目的CAN節點的地址、確定發送的幀類型(當前發送的是數據幀還是遙控幀),并確定發送的幀格式是標準幀還是擴展幀。

仲裁段在標準格式幀和擴展格式幀中有所不同。標準格式幀的仲裁段由11位標識符和遠程發送請求位RTR組成,擴展格式幀的仲裁場由29位標識符和遠程發送請求位RTR組成。

poYBAGNDw1CAOVnRAACe7J37bIs914.jpg
poYBAGNDw1eAUBf1AAFEuJ5JBDo417.jpg
poYBAGNDw16AHkpnAAFdAHyHZfc208.jpg
pYYBAGNDw2WAf8F-AAFS5QI3ztQ987.jpg

1.2.1、標準數據幀

標準數據幀基于早期的CAN規格(1.0和2.0A版),使用了11位的識別域。

CAN標準幀幀信息是11字節,包括幀描述符和幀數據兩部分。如下表所列:

pYYBAGNDw3yAc6jbAADq1GyxdhU156.jpg

前3字節為幀描述部分。字節1為幀信息,第7位(FF)表示幀格式,在標準幀中FF=0,第6位(RTR)表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀。DLC表示在數據幀時實際的數據長度。

標準數據幀的 ID 有 11 個位。從 ID10到 ID0依次發送。禁止高 7 位都為隱性(禁止設定:ID=1111111XXXX)。

字節2~3為報文識別碼,其高11位有效。

字節4~11為數據幀的實際數據,遠程幀時無效。

1.2.2、擴展數據幀

CAN擴展幀幀信息是13字節,包括幀描述符和幀數據兩部分,如下表所示:

pYYBAGNDw5GAFI52AAEIbECe8ik971.jpg

前5字節為幀描述部分。字節1為幀信息,第7位(FF)表示幀格式,在擴展幀中FF=1,第6位(RTR)表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀。DLC表示在數據幀時實際的數據長度。

擴展格式的 ID 有 29 個位。基本 ID 從 ID28 到 ID18,擴展 ID 由 ID17 到 ID0 表示?;?ID 和 標準格式的 ID 相同。禁止高 7 位都為隱性(禁止設定:基本 ID=1111111XXXX)。

字節2~5為報文識別碼,其高28位有效。

字節6~13為數據幀的實際數據,遠程幀時無效。

1.3、控制段

控制段由6個位組成,包括數據長度代碼和兩個將來作為擴展用的保留位,標準格式和擴展格式的構成有所不同。

數據長度代碼指示了數據段中的字節數量。數據長度代碼為4個位,在控制段里被發送,數據幀長度允許的字節數為0、1、2、3、4、5、6、7、8,其他數值為非法的。

poYBAGNDw6iAQvFDAADR8dR76ic749.jpg

保留位(r0、r1)必須全部以顯性電平發送。但接收方可以接收顯性、隱性及其任意組合的電平。

數據長度碼(DLC)與數據的字節數的對應關系如下表所示:

pYYBAGNDw7qAHee4AADTvi74jts583.jpg

數據的字節數必須為 0~8 字節,但接收方對 DLC = 9~15 的情況并不視為錯誤。

1.4、數據段

數據段由數據幀中的發送數據組成,它可以為0~8字節,每字節包含了8位,首先發送最高有效位MSB,依次發送至最低有效位LSB。

poYBAGNDw9SAdoZbAABp25BhBkw610.jpg

1.5、CRC段

CRC段是檢查幀傳輸錯誤的幀,包括:15 個位的 CRC序列(CRC SEQUENCE)和1 個位的CRC界定符(CRC DELIMITER)構成。

poYBAGNDw-yAEkLMAABtMCIcmYU191.jpg

CRC序列是根據多項式生成的 CRC 值,CRC 的計算范圍包括:幀起始、仲裁段、控制段、數據 段。接收方以同樣的算法計算 CRC 值并進行比較,不一致時會通報錯誤。

pYYBAGNDw_6AUrzbAACuphLBHM4107.jpg

1.6、ACK段

ACK段用來確認是否正常接收。由 ACK 槽(ACK SLOT)和 ACK 界定符(ACK DELIMITER)2 個位構成。

pYYBAGNDxA-AG4Y3AACDIaIxHkA861.jpg

發送單元在 ACK 段發送 2 個位的隱性位。當接收器正確地接收到有效的報文時,接收器就會在應答間隙(ACK SLOT)期間(發送ACK 信號)向發送器發送一個“顯性”的位以示應答,通知發送單元正常接收結束,這稱作“發送 ACK”或者“返回 ACK”。

發送 ACK/返回 ACK是在既不處于總線關閉態也不處于休眠態的所有接收單元中,接收到正常消息的單元 (發送單元不發送 ACK)。所謂正常消息是指不含填充錯誤、格式錯誤、CRC 錯誤的消息。

1.7、幀結束

幀結束是由每一個數據幀和遠程幀的標志序列界定的,這個標志序列由7個“隱性”位組成。

pYYBAGNDxCOAZ1rzAABcK6XXsUI683.jpg

2

標準數據幀和擴展數據幀

CAN協議可以接收和發送11位標準數據幀和29位擴展數據幀,CAN標準數據幀和擴展數據幀只是幀ID長度不同,以便可以擴展更多CAN節點。

2.1、標準數據幀

標準數據幀基于早期的CAN規格(1.0和2.0A版),使用了11位的識別域。

CAN標準幀幀信息是11字節,包括幀描述符和幀數據兩部分。如下表所列:

pYYBAGNDxDOAZMKfAADnJd5Oyww881.jpg

前3字節為幀描述部分。字節1為幀信息,第7位(FF)表示幀格式,在標準幀中FF=0,第6位(RTR)表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀。DLC表示在數據幀時實際的數據長度。

標準數據幀的 ID 有 11 個位。從 ID10 到 ID0 依次發送,可以出現2^11種報文,幀ID的范圍是:000-7FF,禁止高 7 位都為隱性(禁止設定:ID=1111111XXXX)。

字節2~3為報文識別碼,其高11位有效。

字節4~11為數據幀的實際數據,遠程幀時無效。

2.2、擴展數據幀

CAN擴展幀幀信息是13字節,包括幀描述符和幀數據兩部分,如下表所示:

poYBAGNDxEWAFzXZAAEWlx8H0D0357.jpg

前5字節為幀描述部分。字節1為幀信息,第7位(FF)表示幀格式,在擴展幀中FF=1,第6位(RTR)表示幀的類型,RTR=0表示為數據幀,RTR=1表示為遠程幀。DLC表示在數據幀時實際的數據長度。

擴展格式的 ID 有 29 個位,基本 ID 從 ID28 到 ID18,擴展 ID 由 ID17 到 ID0 表示,基本 ID 和 標準格式的 ID 相同,可以出現2^29種報文,且在數據鏈路上是有間隙的(對操作者透明),幀ID的范圍是0000 0000-1FFF FFFF,禁止高 7 位都為隱性(禁止設定:基本 ID=1111111XXXX)。

字節2~5為報文識別碼,其高28位有效。

字節6~13為數據幀的實際數據,遠程幀時無效。

2.3、標準數據幀和擴展數據幀的特性

CAN標準數據幀和擴展數據幀只是幀ID長度不同,功能上都是相同的,它們有一個共同的特性:幀ID數值越小,優先級越高。

pYYBAGNDxGSARXLuAAFGBKfFJFQ892.jpg
pYYBAGNDxGyAUMAFAAFf6HjpKBQ655.jpg
poYBAGNDxHOAQp07AAFkOis4M_0247.jpg

3

遙控幀

3.1、遙控幀格式

遙控幀是接收單元向發送單元請求發送數據所用的幀,遙控幀由 6 個段組成,遙控幀沒有數據段。

遙控幀的構成如下所示:

幀起始(SOF):表示幀開始的段;

仲裁段:表示該幀優先級的段??烧埱缶哂邢嗤?ID 的數據幀;

控制段:表示數據的字節數及保留位的段;

CRC 段:檢查幀的傳輸錯誤的段;

ACK 段:表示確認正常接收的段;

幀結束:表示遙控幀結束的段。

遙控幀格式如下圖所示:

poYBAGNDxIOAGLZLAAD7A4-sBf0714.jpg

3.2、數據幀和遙控幀的區別

數據幀和遙控幀主要有兩點區別:

遙控幀沒有數據幀的數據段;

遙控幀RTR位是隱性,RTR位的極性表示了所發送的幀是數據幀(RTR位“顯性”)還是遠程幀(RTR位“隱性”)。所以,沒有數據段的數據幀和遙控幀可通過 RTR 位區別開來。

poYBAGNDxJOARWjiAAEL1ksB_pQ335.jpg

4

錯誤幀

4.1、錯誤幀格式

錯誤幀由錯誤標志(Error Flag)和錯誤界定符(Error Delimiter)組成。

接收節點發現總線上的報文有錯誤時,將自動發出活動錯誤標志,它是6個連續的顯性位。其他節點檢測到活動錯誤標志后發送錯誤認可標志,它由6個連續的隱性位組成。由于各個接收節點發現錯誤的時間可能不同,所以總線上實際的錯誤標志可能由6~12個顯性位組成。

錯誤界定符由 8 個位的隱性位構成。當錯誤標志發生后,每一個CAN 節點監視總線,直至檢測到一個顯性電平的跳變。此時表示所有的節點已經完成了錯誤標志的發送,并開始發送8個隱性電平的界定符。

如下所示:

poYBAGNDxKOASYuqAACuEuoJx6U537.jpg

4.2、主動錯誤標志和被動錯誤標志

錯誤標志包括主動錯誤標志和被動錯誤標志兩種。

主動錯誤標志:處于主動錯誤狀態的單元檢測出錯誤時輸出的錯誤標志,6 個位的顯性位;

被動錯誤標志:處于被動錯誤狀態的單元檢測出錯誤時輸出的錯誤標志,6 個位的隱性位。

poYBAGNDxLKAJ2hDAAFyo060k1w112.jpg

4.3、錯誤幀種類

錯誤幀共有 5 種,多種錯誤可能同時發生,種類如下所示:

位錯誤

填充錯誤

CRC 錯誤

格式錯誤

ACK 錯誤

錯誤的種類、錯誤的內容、錯誤檢測幀和檢測單元如下表所示:

poYBAGNDxMKAT78OAAGqLVyxgnE378.jpg

重點聊一聊位錯誤和格式錯誤。

位錯誤特性如下所示:

位錯誤由向總線上輸出數據幀、遙控幀、錯誤幀、過載幀的單元和輸出 ACK 的單元、輸出錯誤的單元來檢測;

在仲裁段輸出隱性電平,但檢測出顯性電平時,將被視為仲裁失利,而不是位錯誤;

在仲裁段作為填充位輸出隱性電平時,但檢測出顯性電平時,將不視為位錯誤,而是填充錯誤;

發送單元在 ACK 段輸出隱性電平,但檢測到顯性電平時,將被判斷為其它單元的 ACK 應答,而非位錯誤;

輸出被動錯誤標志(6 個位隱性位)但檢測出顯性電平時,將遵從錯誤標志的結束條件,等待檢測出連續相同 6 個位的值(顯性或隱性),并不視為位錯誤。

格式錯誤特性如下所示:

即使接收單元檢測出 EOF(7 個位的隱性位)的最后一位(第 8 個位)為顯性電平,也不視為格式錯誤;

即使接收單元檢測出數據長度碼(DLC)中 9~15 的值時,也不視為格式錯誤。

發送單元發送完錯誤幀后,將再次發送數據幀或遙控幀,錯誤標志輸出時序如下表所示:

poYBAGNDxNGAInXiAAB3dSsQxAw374.jpg

5

過載幀

過載幀是用于接收單元通知其尚未完成接收準備的幀,過載幀由過載標志和過載界定符構成。

pYYBAGNDxOOAZQZxAACrnc98NDk216.jpg

過載標志由6個位的顯性位組成,過載標志的構成與主動錯誤標志的構成相同。過載標志其形式破壞了間歇場的固定格式,結果使其他所有節點也檢測到了一個出錯狀態,就都各自送出一個超載標志。

pYYBAGNDxPSARYDaAACQJHs53VQ027.jpg

過載界定符由8個位的隱性位組成,過載界定符的構成與錯誤界定符的構成相同。過載標志發送完畢后,每個節點都對總線進行監察,直到檢測到一個隱性位為止。此時,每個節點均已發送完各自的過載標志,接著所有節點還要同時開始發送7個隱性位,配齊長達8位的過載界定符。

過載幀的構成如下圖所示:

poYBAGNDxQaAI1GhAAB7TqiAMmA279.jpg

6

幀間隔

幀間隔是用于分隔數據幀和遙控幀的幀。數據幀和遙控幀可通過插入幀間隔將本幀與前面的任何幀(數據幀、遙控幀、錯誤幀、過載幀)分開,過載幀和錯誤幀前不能插入幀間隔。

幀間隔的構成如下圖所示:

pYYBAGNDxRaACFlbAACpugE5tmY256.jpg

幀間隔由間隔段、總線空閑段和延遲傳送段組成,具體說明如下所示:

間隔段:間歇由3個隱性位構成。在間歇期間,不允許任何節點發送數據幀或遠程幀。唯一可以執行的操作是通報超載狀態;

總線空閑段:總線空閑時間長短不限??偩€一經確認處于空閑狀態,則任何節點都可以訪問總線來傳送信息。因另一幀正在傳送而延期發送的幀是從間歇之后的第一位開始送出的。通過對總線進行檢測,出現在總線空閑期間的顯性位將被認為是幀起始;

延遲傳送段:處于錯誤認可狀態的節點完成其發送動作后,在被允許發送下一幀以前,它要在間歇之后送出8個隱性位。如果間歇期間執行了(由另一個節點引起的)發送動作,此節點將會變成正被發送的幀的接收器。





審核編輯:劉清

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

    關注

    145

    文章

    1951

    瀏覽量

    130777
  • 接收器
    +關注

    關注

    14

    文章

    2472

    瀏覽量

    71926
  • ACK
    ACK
    +關注

    關注

    0

    文章

    28

    瀏覽量

    11149
  • CRC校驗
    +關注

    關注

    0

    文章

    84

    瀏覽量

    15209

原文標題:一文搞懂CAN總線協議幀格式

文章出處:【微信號:美男子玩編程,微信公眾號:美男子玩編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    淺談CAN FD總線協議格式

    假期更新了搞懂CAN總線協議格式,CAN FD
    發表于 10-14 12:49 ?3457次閱讀
    淺談<b class='flag-5'>CAN</b> FD<b class='flag-5'>總線</b>協議<b class='flag-5'>幀</b>格式

    can標準和擴展區別

    標準和擴展是用于在控制器局域網(CAN)中傳輸數據的兩種基本格式。它們在結構、標識符長度、數據
    的頭像 發表于 12-08 10:08 ?1w次閱讀

    CAN總線過載數據詳解

    CAN:Controller Area Network,控制器局域網是種能有效支持分布式控制和實時控制的串行通訊網絡。本文首先介紹了CAN總線系統結構及
    的頭像 發表于 05-07 10:59 ?2.1w次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>過載<b class='flag-5'>幀</b>及<b class='flag-5'>數據</b><b class='flag-5'>幀</b>詳解

    解析CAN總線遠程和錯誤

    本文主要介紹了CAN總線遠程和錯誤,首先我們先來了解了解下通訊時使用的類型有哪些,他們的
    的頭像 發表于 05-07 11:30 ?2.7w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>解析<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>遠程<b class='flag-5'>幀</b>和錯誤<b class='flag-5'>幀</b>

    CAN標準數據和擴展數據的區別

    CAN協議可以接收和發送11位標準數據和29位擴展數據,CAN標準
    的頭像 發表于 09-28 09:50 ?1.3w次閱讀

    CAN協議數據的介紹

    通過 CAN 總線傳輸數據是需要按照定協議進行的,CAN 協議提供了 5種格式來傳輸
    的頭像 發表于 07-25 10:36 ?1.1w次閱讀
    <b class='flag-5'>CAN</b>協議<b class='flag-5'>數據</b><b class='flag-5'>幀</b>的介紹

    can數據的標準格式

    CAN(Controller Area Network)是種廣泛應用于汽車、工業控制和通信領域的串行通信總線標準。CAN數據
    的頭像 發表于 12-01 16:41 ?4486次閱讀

    CAN總線的標準和擴展有什么區別呢?分別適用于什么工況?

    CAN總線的標準和擴展CAN協議中的兩種類型。
    的頭像 發表于 01-30 09:41 ?6233次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>總線</b>的標準<b class='flag-5'>幀</b>和擴展<b class='flag-5'>幀</b>有什么區別呢?分別適用于什么工況?

    can總線數據數據長度碼和數據字節數的關系?

    can總線數據數據長度碼和數據字節數的關系? CAN
    的頭像 發表于 01-31 11:31 ?2403次閱讀

    請問用CAN存儲器存儲的CAN總線數據格式有哪些呢?

    請問用CAN存儲器存儲的CAN總線數據格式有哪些呢? CAN
    的頭像 發表于 01-31 13:46 ?1282次閱讀

    CAN數據的各個域及其作用

    CAN(Controller Area Network)是種用于汽車電子系統中的通信協議,它具有高可靠性、實時性和靈活性等特點。在CAN通信中,數據
    的頭像 發表于 07-24 15:10 ?1359次閱讀

    can數據有哪幾個域組成

    CAN總線上傳輸數據的格式。個典型的CAN數據
    的頭像 發表于 07-24 15:14 ?1041次閱讀

    can標準和擴展的區別

    CAN(Controller Area Network)是種用于汽車和工業領域的通信協議,它允許多個設備在同一總線上進行通信。CAN協議有兩種
    的頭像 發表于 07-24 15:20 ?1919次閱讀

    can標準和擴展能否共存

    CAN(Controller Area Network)是種用于汽車和工業自動化領域的現場總線通信協議。CAN協議具有多種格式,包括標準
    的頭像 發表于 07-24 15:24 ?1898次閱讀

    CAN總線通信中的數據結構解析

    CAN總線由Bosch公司在1980年代開發,旨在為汽車電子系統提供個可靠的通信網絡。隨著技術的發展,CAN總線已經被廣泛應用于各種工業和
    的頭像 發表于 11-12 10:12 ?650次閱讀
    主站蜘蛛池模板: 69日本人xxxx16-18| 综合色天天| 高清视频在线播放| 黄色日本视频| 在线视频网址免费播放| 欧美性猛交xxxx| 3344在线观看永久免费| 男人j桶进女人j的视频| 99久久国产免费中文无字幕| 亚洲人成电影在线观看网| 亚洲成色www久久网站| 色婷婷一区二区三区四区成人网| 日本高清色www| 狠狠色噜噜狠狠狠狠| 91亚洲视频| 无人码一区二区三区视频| 伊人小婷婷色香综合缴缴情| 性欧美护士18xxxxhd视频| 日本免费成人| 国产女人视频| 天天操天天干天天拍| 成人5252色| 性感美女逼| 五月激情六月婷婷| 欧美区在线播放| 超黄视频网站| 免费一级牲交毛片| 公开免费视频| 亚洲入口无毒网址你懂的| 日本三级人妇| 爱爱网站免费| 狠狠干激情| 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 亚洲video| 欧美日韩高清一区| 操操久久| 国产呦精品系列在线| 欧美一卡二卡3卡4卡无卡六卡七卡科普| 亚洲欧洲日韩综合| 免费日本黄色片| 午夜精品视频在线观看|