衡阳派盒市场营销有限公司

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

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

3天內不再提示

CAN網絡底層的重要知識點介紹

硬件攻城獅 ? 來源:硬件攻城獅 ? 作者:硬件攻城獅 ? 2022-11-25 14:24 ? 次閱讀

CAN總線早期主要應用于汽車、工業控制領域,隨著CAN總線技術的不斷成熟,已不再局限于汽車行業,現在已經普遍應用于航天、醫療、機器人等各行各業。

偶爾會有讀者問:

CAN總線難嗎?

CAN和串口有什么區別?

有CAN總線的學習資料嗎?

今天就來講述一下CAN網絡底層的幾個重要知識點:CAN總線波特率、位時序、幀類型。

CAN總線波特率

CAN總線屬于異步通信,因此就有通信波特率,而這個波特率發生器就位于CAN控制器內部。我們不需要了解它是如何產生的,但需要了解它的含義。這章節針對初學者講述以下兩點內容。

CAN控制器在CAN網絡中所處的位置如下圖:

08c1d33c-6c7a-11ed-8abf-dac502259ad0.jpg

1.異步通信在串行通信中,主要分異步通信和同步通信。 同步通信:通信設備之間通過同步信號(CLK時鐘)來實現數據傳輸的通信叫同步通信。如I2C、SPI這類通信中都具有一個時鐘信號,其實在STM32中USART也具有同步功能,只是我們大多數人都只用了它的異步功能。 異步通信:簡單來說,就是通信設備之間通過約定一樣的時間來收發數據。而這個時間就會決定本節說的波特率。 2.波特率很多工程師一直都沒徹底搞明白什么是波特率,我這里還是結合UART波特率來簡述一下其含義。 在電子通信領域,波特(Baud)即調制速率,指的是有效數據信號調制載波的速率,即單位時間內載波調制狀態變化的次數。它是對符號傳輸速率的一種度量,1波特即指每秒傳輸1個符號。 UART每秒鐘傳送240個字符,而每個字符格式包含10位(1個起始位,1個停止位,8個數據位),這時的波特率為240Bd,比特率為10位*240個/秒=2400bps。 從上面的描述可以總結:比特率:即單位時間內傳送的二進制位數; 波特率:即單位時間內傳輸的符號個數; 只有在每個符號只代表一個比特信息的情況下,波特率與比特率才在數值上相等,但是它們的意義并不相同。

位時序

上一章節講述了波特率,而決定波特率大小的就是本節說的位時序。在CAN標準中一個位可分為4段:

同步段(SS)

傳播時間段(PTS)

相位緩沖段1(PBS1)

相位緩沖段2(PBS2)

這些段又由可稱為 Time Quantum(簡稱Tq)的最小時間單位構成。 1位分為4個段,每個段又由若干個Tq構成,這稱為位時序。 而在STM32參考手冊中,將位時序分為三段,但它將它傳播段和位段1合并在一起了,如下圖:

08e91eba-6c7a-11ed-8abf-dac502259ad0.jpg

1位由多少個Tq構成、每個段又由多少個Tq構成等,可任意設定位時序。通過設定位時序,決定傳輸的波特率:

090e1bde-6c7a-11ed-8abf-dac502259ad0.jpg

這幾個參數會在以后編程中進行配置,從而決定通信的波特率。 關于同步,還有硬件同步、再同步等操作。但初學者可以不必過多理解,掌握上面基礎內容就行了。更多關于位時序的內容可以參看 ISO 11898 標準。

幀類型及格式說明

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

數據幀:用于發送單元向接收單元傳送數據的幀。

遙控幀:用于接收單元向具有相同 ID 的發送單元請求數據的幀。

錯誤幀:用于當檢測出錯誤時向其它單元通知錯誤的幀。

過載幀:用于接收單元通知其尚未做好接收準備的幀。

幀間隔:用于將數據幀及遙控幀與前面的幀分離開來的幀。

數據幀和遙控幀有標準格式和擴展格式兩種格式。標準格式有11個位的標識符ID,擴展格式有29個位的ID。

1.數據幀

093ddbd0-6c7a-11ed-8abf-dac502259ad0.jpg

如上圖,數據幀由7個段構成:

(1) 幀起始

表示數據幀開始的段。

(2) 仲裁段

表示該幀優先級的段。

(3) 控制段

表示數據的字節數及保留位的段。

(4) 數據段

數據的內容,可發送 0~8 個字節的數據。

(5) CRC 段

檢查幀的傳輸錯誤的段。

(6) ACK 段

表示確認正常接收的段。

(7) 幀結束

表示數據幀結束的段。

理解數據幀的含義,請從認真理解它的定義:用于發送單元向接收單元傳送數據的幀。 一般的CAN總線通信,總線上通信絕大部分時候都是數據幀。像在CANOpen協議中,用的最多的PDO過程數據對象就是通過數據幀進行的通信。 初學者可以先理解數據幀,然后其他就容易理解了。下面再來講述一下數據幀7段的詳情。

幀起始

標準和擴展格式相同。表示幀開始的段,1個位的顯性位(如下圖):

096d1d8c-6c7a-11ed-8abf-dac502259ad0.png

關于顯性和隱性電平,請參看我上一篇文章差分信號章節。 總線上的電平有顯性電平和隱性電平兩種。 總線上執行邏輯上的線“與”時,顯性電平的邏輯值為“0”,隱性電平為“1”。 “顯性”具有“優先”的意味,只要有一個單元輸出顯性電平,總線上即為顯性電平。并且,“隱性”具有“包容”的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平。(顯性電平比隱性電平更強)

仲裁段

標準格式和擴展格式在此的構成有所不同。仲裁段表示該幀優先級的段,擴展格式多了18位ID(如下圖):

0993a722-6c7a-11ed-8abf-dac502259ad0.jpg

RTR = 0代表數據幀,RTR = 1代表遠程幀。

為什么叫仲裁段,就是通過ID來判斷總線上哪一個節點具有優先發送的權利。ID越小(0代表顯性),優先級越高。

控制段

標準和擴展格式的構成有所不同。控制段由 6 個位構成(如下圖):

09b3a9a0-6c7a-11ed-8abf-dac502259ad0.jpg

它們除了都有4位表示數據段長度代碼(DLC)外,標準幀有IDE(數值為0)位和r0保留位,擴展幀有r0和r1保留位。 保留位必須全部以顯性電平發送。但接收方可以接收顯性、隱性及其任意組合的電平。

數據段

標準和擴展格式相同。數據段表示傳輸數據的內容,從 MSB(最高位)開始輸出,可發送 0~8 個字節的數據,長度由前面控制段決定。

CRC段

標準和擴展格式相同。CRC段是檢查幀傳輸錯誤的幀,由 15 個位的 CRC 順序和 1 個位的 CRC 界定符(用于分隔的位)構成。

09c80d28-6c7a-11ed-8abf-dac502259ad0.jpg

相比485這類通信,CAN控制器就已經把CRC校驗做了,不需要你的程序再次去計算,從而節約了處理器資源。

ACK段

標準和擴展格式相同。ACK段用來確認是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 個位構成。

09de272a-6c7a-11ed-8abf-dac502259ad0.jpg

A.發送單元在 ACK 段發送 2 個位的隱性位。

B.接收到正確消息的單元在 ACK 槽(ACK Slot)發送顯性位, 通知發送單元正常接收結束。這稱作“發送 ACK”或者“返回 ACK”。

幀結束

標準和擴展格式相同。幀結束是表示該該幀的結束的段。由 7 個位的隱性位構成。

09ff6d86-6c7a-11ed-8abf-dac502259ad0.jpg

2.遙控幀

0a12360a-6c7a-11ed-8abf-dac502259ad0.jpg

和數據幀相比,遙控幀是接收單元向發送單元請求發送數據所用的幀。所以,遙控幀沒有數據段。因此,遙控幀由如下 6 個段組成:

(1) 幀起始(SOF)

表示幀開始的段。

(2) 仲裁段

表示該幀優先級的段。可請求具有相同 ID 的數據幀。

(3) 控制段

表示數據的字節數及保留位的段。

(4) CRC 段

檢查幀的傳輸錯誤的段。

(5) ACK 段

表示確認正常接收的段。

(6) 幀結束

表示遙控幀結束的段。

這6個段和上面數據幀的內容基本一樣,這里就不一一講述了。講一下遙控幀和數據幀的區別:

遙控幀的 RTR 位為隱性位,沒有數據段。

沒有數據段的數據幀和遙控幀可通過 RTR 位區別開來。

問題一:遙控幀沒有數據段,數據長度碼該如何表示?

遙控幀的數據長度碼以所請求數據幀的數據長度碼表示。

問題二:沒有數據段的數據幀有何用途?

例如,可用于各單元的定期連接確認/應答、或仲裁段本身帶有實質性信息的情況下。

3.錯誤幀

0a376aec-6c7a-11ed-8abf-dac502259ad0.jpg

用于在接收和發送消息時檢測出錯誤通知錯誤的幀。錯誤幀由錯誤標志和錯誤界定符構成。

(1) 錯誤標志

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

主動錯誤標志:6 個位的顯性位。

被動錯誤標志:6 個位的隱性位。

(2) 錯誤界定符

錯誤界定符由 8 個位的隱性位構成。

4.過載幀

0a47da1c-6c7a-11ed-8abf-dac502259ad0.jpg

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

(1) 過載標志

6 個位的顯性位。

過載標志的構成與主動錯誤標志的構成相同。

(2) 過載界定符

8 個位的隱性位。

過載界定符的構成與錯誤界定符的構成相同。

5.幀間隔

0a6340b8-6c7a-11ed-8abf-dac502259ad0.jpg

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

(1) 間隔

3 個位的隱性位。

(2) 總線空閑

隱性電平,無長度限制(0 亦可)。

本狀態下,可視為總線空閑,要發送的單元可開始訪問總線。

(3) 延遲傳送(發送暫時停止)

8 個位的隱性位。

只在處于被動錯誤狀態的單元剛發送一個消息后的幀間隔中包含的段。

審核編輯:郭婷

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

    關注

    211

    文章

    28646

    瀏覽量

    208436
  • CAN總線
    +關注

    關注

    145

    文章

    1955

    瀏覽量

    131101
  • 汽車電子
    +關注

    關注

    3029

    文章

    8027

    瀏覽量

    167828

原文標題:對比UART,CAN底層更復雜

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Docker-鏡像的分層-busybox鏡像制作

    目錄 知識點1:鏡像的分層 示例:進入 docker hub查看Jenkins的Dockerfile 知識點2:base鏡像 知識點3:scratch鏡像 scratch 鏡像是什么? 示例:在
    的頭像 發表于 01-15 10:44 ?133次閱讀
    Docker-鏡像的分層-busybox鏡像制作

    Aigtek功率放大器應用:電感線圈的知識點分享

    電磁驅動是功率放大器的一大基礎應用領域,其中我們最常見的就是用功放來驅動電感線圈,那么關于電感線圈的這10大知識點你都知道嗎?今天Aigtek安泰電子來給大家介紹一下電感線圈的基礎知識
    的頭像 發表于 01-07 15:43 ?165次閱讀
    Aigtek功率放大器應用:電感線圈的<b class='flag-5'>知識點</b>分享

    后悔沒有早點看到:天線設計中的知識點

    Cat.1 bis R13架構,天線架構精簡為單天線架構,去掉了分集接收天線,因此只需要一根天線。 ? 知識點: Cat.1 bis相對于Cat.1的區別是,后者為兩根天線(一根主天線,一根分集天線
    的頭像 發表于 12-24 17:11 ?503次閱讀
    后悔沒有早點看到:天線設計中的<b class='flag-5'>知識點</b>!

    推拉力測試知識點介紹

    一 、【推拉力測試介紹】 推拉力測試是一種工程測試方法,用于評估材料、器件或系統在受到推力或拉力作用下的性能和可靠性。這種測試廣泛應用于多個行業,包括航空航天、汽車、建筑和制造業等。 在推拉力測試中
    的頭像 發表于 11-15 16:15 ?949次閱讀
    推拉力測試<b class='flag-5'>知識點</b><b class='flag-5'>介紹</b>

    接口測試理論、疑問收錄與擴展相關知識點

    本文章使用王者榮耀游戲接口、企業微信接口的展示結合理論知識,講解什么是接口測試、接口測試理論、疑問收錄與擴展相關知識點知識學院,快來一起看看吧~
    的頭像 發表于 11-15 09:12 ?389次閱讀
    接口測試理論、疑問收錄與擴展相關<b class='flag-5'>知識點</b>

    CAN時鐘--位時間介紹#CAN #CANoe

    CAN
    北匯信息POLELINK
    發布于 :2024年10月29日 14:11:09

    CAN底層報文抓到了,卻不知怎么解析?以及如何看到信號運行狀態?

    本文介紹CAN總線中DBC文件的重要性及ZCANPRO如何實現DBC解析、數據發送和實時曲線分析,幫助您更有效地分析和利用CAN總線數據。在CAN
    的頭像 發表于 09-30 08:05 ?1511次閱讀
    <b class='flag-5'>CAN</b><b class='flag-5'>底層</b>報文抓到了,卻不知怎么解析?以及如何看到信號運行狀態?

    【技術分享】CAN總線相關知識探討以及Model3C兩路CAN的應用

    CAN總線相關知識,以個位數價格的工業級HMI芯片–Model3C為例, 2路CAN的應用
    的頭像 發表于 09-05 10:59 ?641次閱讀
    【技術分享】<b class='flag-5'>CAN</b>總線相關<b class='flag-5'>知識</b>探討以及Model3C兩路<b class='flag-5'>CAN</b>的應用

    Profinet轉CAN模塊介紹

    Profinet轉CAN模塊是一種重要的通信轉換設備,它能夠將Profinet網絡中的信息轉換為CAN總線網絡中的信息,從而實現兩種不同通信
    的頭像 發表于 08-30 14:12 ?367次閱讀

    CAN總線知識】為什么CAN節點ID不能相同?

    CAN-bus網絡中原則上不允許兩個及以上節點具有相同的ID段,但如果兩個及以上節點ID相同會怎樣呢?資深強迫癥患者想一探究竟!實驗前,我們首先要對CAN報文的結構組成、仲裁原理有清晰的認識。
    的頭像 發表于 08-30 12:48 ?1231次閱讀
    【<b class='flag-5'>CAN</b>總線<b class='flag-5'>知識</b>】為什么<b class='flag-5'>CAN</b>節點ID不能相同?

    MySQL知識點匯總

    大家好,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的其他部分。
    的頭像 發表于 08-05 15:27 ?456次閱讀
    MySQL<b class='flag-5'>知識點</b>匯總

    can網絡數據幀的特點

    特點,在分布式系統中得到了廣泛應用。 數據幀的重要性 :數據幀是CAN網絡中用于數據傳輸的基本單元,其結構設計和特性直接關系到整個網絡的通信效率和可靠性。 二、數據幀的結構 基本構成
    的頭像 發表于 07-24 15:18 ?434次閱讀

    模擬電子技術知識點問題總結概覽

    給大家分享模擬電子技術知識點問題總結。
    的頭像 發表于 05-08 15:16 ?1238次閱讀
    模擬電子技術<b class='flag-5'>知識點</b>問題總結概覽

    一篇搞定DCS系統相關知識點

    目標。DCS系統廣泛應用于各個行業,如化工、電力、制藥等。在這些行業中,DCS系統可以實現對生產過程的集中監控和分散控制,提高生產效率和產品質量,降低能耗和減少環境污染,從而保證產品質量,并確保生產過程的安全可靠。 二.DCS系統知識點
    的頭像 發表于 03-26 18:40 ?1003次閱讀
    一篇搞定DCS系統相關<b class='flag-5'>知識點</b>

    【量子計算機重構未來 | 閱讀體驗】第二章關鍵知識點

    本帖最后由 oxlm_1 于 2024-3-6 23:20 編輯 之所以將第二章單獨拿出來,是因為在閱讀過程中,發現第二章知識點較多,理解起來比較耗時間。 第二章的主要知識點: 量子
    發表于 03-06 23:17
    永利博国际| 大发888送58体验金| 大发888娱乐充值| 六合彩130| 百家乐官网高人破解| 百家乐官网园百利宫娱乐城怎么样百家乐官网园百利宫娱乐城如何 | 百家乐官网高返水| 神人百家乐官网赌博| 百家乐增值公式| 百合百家乐的玩法技巧和规则| 真钱的棋牌游戏| 百家乐官网怎么对冲打| 中原百家乐官网的玩法技巧和规则| 网上百家乐是叫九五至尊么| 大发888 dafa888| 茌平县| 百家乐官网真人游戏攻略| 百家乐的路图片| 大发888注册送58| 凤凰百家乐官网娱乐城| 总统百家乐官网的玩法技巧和规则| 壹贰博百家乐娱乐城| 百家乐什么牌最大| 澳门百家乐765118118| 东至县| 易学24山3d罗盘App| 太阳城亚州| 百家乐官网有赢钱公式吗| 做生意风水方向怎么看| 大发888娱乐免费试玩| 百家乐官网筹码防伪定制| 现场百家乐百家乐| 大发888娱乐城 bg| 百家乐官网和的几率| 百家乐官网游戏机博彩正网| 澳门百家乐是骗人的| 德州扑克玩法说明| 百家乐官网游戏卡通| 金都百家乐的玩法技巧和规则 | 百家乐官网管理启发书| 百家乐编单短信接收|