日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比

發布時間:2023/12/15 编程问答 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在研究CAN總線的驅動,需要詳細了解數據幀/標準幀/擴展幀/遠程幀/錯誤幀這幾種幀的詳細組成格式,于是收集了一下,統一放在這里進行對比和記錄,以便日后需要時查閱。

1、數據幀-標準幀

CAN 標準數據幀如下圖所示。與其他所有幀一樣,幀以起始幀 (SOF)位開始, SOF 為顯性狀態,允許所有節點的硬同步。

SOF之后是仲裁字段,由12個位組成,分別為11個標識位和一個遠程發送請求(Remote Transmission
Request, RTR)位。 RTR 位用于區分報文是數據幀(RTR 位為顯性狀態)還是遠程幀 (RTR 位為隱性狀態)。

仲裁字段之后是控制字段,由 6 個位組成。控制字段的第一位為標識擴展(Identifier Extension,IDE)位,該位應是顯性狀態來指定標準幀。標識擴展位的下一位為零保留位(RB0),CAN 協議將其定義為顯性位。控制字段的其余 4 位為數據長度碼 (Data Length Code,DLC),用來指定報文中包含的數據字節數 (0 到 8 字節)。

控制字段之后為數據字段,包含要發送的任何數據字節。數據字段長度由上述 DLC 定義 (0 到 8 字節)。數據字段之后為循環冗余校驗(CRC)字段,用來檢測報文傳輸錯誤。CRC 字段包含一個 15 位的 CRC 序列,之后是隱性的 CRC 定界位。

最后一個字段是確認字段 (ACK),由 2 個位組成。在確認時隙(ACK Slot)位執行期間,發送節點發出一個隱性位。任何收到無錯誤幀的節點會發回一個顯性位(無論該節點是否配置為接受該報文與否)來確認幀收到無誤。確認字段以隱性確認定界符結束,該定界符可能不允許被改寫為顯性位。

2、數據幀-擴展幀

在擴展 CAN 數據幀中(如下圖所示),緊隨 SOF 位的是 32 位的仲裁字段。仲裁字段的前 11 位為 29 位標識符的最高有效位(Most Significant bit,MSb)(基本lD) 。緊隨這 11 位的是替代遠程請求(Substitute Remote Request, SRR)位,定義為隱性狀態。 SRR位之后是 lDE 位,該位為隱性狀態時表示這是擴展的CAN 幀。

應該注意的是,如果發送完擴展幀標識符的前 11 位后,總線仲裁無果,而此時其中一個等待仲裁的節點發出標準 CAN 數據幀 (11 位標識符),那么,由于節點發出了顯性 lDE 位而使標準 CAN 幀贏得總線仲裁。另外,擴展 CAN 幀的 SRR 位應為隱性,以允許正在發送標準CAN 遠程幀的節點發出顯性 RTR 位。

SRR和lDE位之后是標識符的其余18位(擴展lD)及一個遠程發送請求位。

為使標準幀和擴展幀都能在共享網絡上發送,應將29位擴展報文標識符拆成高 11 位和低 18 位兩部分。拆分后可確保 lDE 位在標準數據幀和擴展數據幀中的位置保持一致。

仲裁字段之后是 6 位控制字段。控制字段前兩位為保留位,必須定義為顯性位。其余 4 位為 DLC,用來指定報文中包含的數據字節數。

擴展數據幀的其他部分 (數據字段、 CRC 字段、確認字段、幀結尾和間斷)與標準數據幀的結構相同。

3、遠程幀

通常,數據傳輸是由數據源節點(例如,傳感器發出數據幀)自主完成的。但也可能存在目標節點向源節點請求發送數據的情況。要做到這一點,目標節點需發送一個遠程幀,其中的標識符應與所需數據幀的標識符相匹配。隨后,相應的數據源節點會發送一個數據幀以響應遠程幀請求。

遠程幀 與數據幀存在兩點不同:

1)遠程幀的 RTR 位為隱性狀態;
2)遠程幀沒有數據字段。

當帶有相同標識符的數據幀和遠程幀同時發出時,數據幀將贏得仲裁,因為其標識符后面的 RTR 位為顯性。這樣,可使發送遠程幀的節點立即收到所需數據。

4、主動錯誤幀

當錯誤主動節點檢測到一個總線錯誤時,這個節點將產生一個主動錯誤標志來中斷當前的報文發送。主動錯誤標志由 6 個連續的顯性位構成。這種位序列主動打破了位填充規則。所有其他節點在識別到所生成的位填充錯誤后,會自行產生錯誤幀,稱為錯誤反射標志。

錯誤標志字段因此包含 6 到 12 個連續顯性位 (由 1 個或多個節點產生)。錯誤定界字段 (8 個隱性位)為錯誤幀劃上句號。在錯誤幀發送完畢后,總線主動恢復正常狀態,被中斷的節點會嘗試重新發送被中止的報文。

5、過載幀

過載幀與主動錯誤幀具有相同的格式。

但是,過載幀只能在幀間間隔產生,因此可通過這種方式區分過載幀和錯誤幀 (錯誤幀是在幀傳輸時發出
的)。過載幀由兩個字段組成,即過載標志和隨后的過載定界符。過載標志由 6 個顯性位和緊隨其后的其他節點產生的過載標志構成 (而主動錯誤標志最多包含 12個顯性位)。過載定界符包含 8 個隱性位。節點在兩種情況下會產生過載幀:

1)節點在幀間間隔檢測到非法顯性位。在 IFS 的第三位期間檢測到顯性位除外。這種情況下,接收器會把它看作一個 SOF 信號。
2)由于內部原因,節點尚無法開始接收下一條報文。節點最多可產生兩條連續的過載幀來延遲下一條報文的發送。

總結

以上是生活随笔為你收集整理的CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。