新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線基礎知識(三)

        CAN總線基礎知識(三)

        作者: 時間:2016-12-15 來源:網絡 收藏

        (2)仲裁域,這個域表示數據的優先級別。這個域的結構,對標準和擴展的格式是有差別的。

        注1:關于ID:

        標準格式的ID有11bit,從ID28到ID18被依次發送,禁止高7位全為隱性。(禁止設定:ID=1111111xxxx)。這樣總共有(2048-16)個ID能被使用。

        擴展格式的ID有29個bit。基本ID從ID28到ID18,擴展ID由ID17到ID0表示,基本ID和標準格式ID相同,禁止高7bit全都為隱性,(禁止設定:基本ID=1111111xxxx)。這樣總共有(2048-16)個ID能被使用。

        在任何情況下,總線上不可能有多個設備在同一時刻使用同一個ID傳輸數據幀。

        (3)控制域,占6個bit,指示要傳輸信息的數據字節數,這個域的結構,對標準和擴展的格式是有差別的。如圖18所示

        注1:保留位(r0,r1),保留位必須以顯性電平傳送,然而,在接收側可以接收顯性、隱性集任意組合的電平。

        注2:數據長度碼(DLC),數據長度碼與數據的字節對應關系見表7所示。數據的字節數必須是0-8個字節,但接收方對DLC=9-15的情況并不視為錯誤。

        (4)數據域,對標準的或擴展的格式都是一樣的。這個域是傳輸的數據,可以是0到8個字節,字節數載控制域中指明。數據輸出開始于MSB。如圖19所示:

        (5)CRC域,對標準的或擴展的格式都是一樣的。這個域用來檢查幀是否有傳輸錯誤,它由15bit CRC碼和一個bitCRC定界符(delimiter)(separating bit分隔bit)

        CRC的產生方法是采用下面的多項式:,CRC的計算范圍是SOF、仲裁域、控制域、數據域。在接收側,會對接收到的數據幀的這些域進行CRC計算,如果計算結果與收到的CRC不一致,則表明存在傳輸錯誤。

        (6)ACK域,是對一幀已被正常接收的一個確認信號,由2個bit組成,一個是ACK的slot,一個是ACK的定界符(delimiter),如圖21所示:

        注1:發送單元的ACK域,發送單元以隱性bit發送ACK slot和ACK 的delimiter。

        注2:接收單元的ACK域,正確接收到信息的接收單元在接收幀的ACK slot里發送一個顯性bit,以通知發送單元其已經正確接收完畢,這又稱“sending ACK”或“returning ACK”。

        “Returning an ACK”:

        所有接收單元只要不是處于bus-off或休眠狀態,只有正確接收信息的單元才能發送ACK。發送單元并不發送ACK。如果總線上除了發送單元,沒有其它單元能接收信息,則No ACK被返回。為了通訊的建立,除了發送單元外,至少需要有一個單元能夠接收信息。如果總線上有2個或更多個單元能接收到信息,如果它們中任意一個正常接收到信息,則會有ACK被返回。

        (7)幀結束,指示一幀結束,由7個隱性位組成。如圖22

        1.3 遙控幀

        遙控幀是接收單元請求發送單元發送一個信息,遙控幀有6個域組成。如圖23顯示的那樣,除了沒有數據域外其它與數據幀的結構是一樣的。

        (1) 幀開始(SOF):這個域表示數據幀的開始。

        (2) 競爭域:這個域表示數據的優先級,具有同樣ID的數據幀被請求。

        (3) 控制域:這個域表示保留位和數據字節數

        (4) CRC域:這個域用于檢查幀的傳輸錯誤。

        (5) ACK域:是對幀已經被正常接收的一個證實。

        (6) 幀結束:指示遙控幀的結束

        遙控幀和數據幀:

        • 數據幀和遙控幀之間的不同

        1. 遙控幀沒有數據域,在仲裁域里的RTR位是隱性電平,而數據幀RTR則為顯性的。
        2. 沒有數據的數據幀與遙控幀可以通過RTR為來區分

        • 遙控幀沒有數據域,其數據長度碼用來干什么?

        1. 遙控幀的數據長度碼的值表示對應請求的數據幀的數據長度碼。

        • 沒有數據域的數據幀用來干什么?

        1. 例如,數據幀可以被各單元用來作為周期連接確認/應答,或者仲裁域本身帶有實質性信息。

        1.4 錯誤幀

        這個幀用來通知在傳輸期間發生了一個錯誤,錯誤幀由一個錯誤標志和一個錯誤定界符組成,錯誤幀由CAN的硬件來發送。圖24顯示了錯誤幀的結構。

        (1) 錯誤標志:有2種錯誤標志類型:主動錯誤和被動錯誤標志

        a)主動錯誤標志:6個顯性位

        b) 被動錯誤標志:6個隱性位

        (2) 錯誤定界符:由8個隱性位組成。

        注1:錯誤標志重疊:取決于連接到總線上的各單元檢測出錯誤的時間,錯誤標志可能一個重疊在另一個上,總共可達12bit長度。

        注2:主動錯誤標志:處于主動錯誤狀態的單元檢測出錯誤時輸出的錯誤標志。

        注3:被動錯誤標志:處于被動錯誤狀態的單元檢測出錯誤時輸出的錯誤標志。

        1.5 過載幀

        這個幀被接收單元用來通知還沒有準備好接收幀。它由一個過載標志和一個過載定界符組成。圖25顯示了錯誤幀的結構。

        (1) 過載標志:由6個顯性位組成,過載標志與錯誤幀的主動錯誤標志具有相同的結構。

        (2) 過載定界符:由8個隱性位組成,過載定界符與錯誤幀的錯誤定界符具有相同的結構。

        注1:錯誤標志重疊:向錯誤標志一樣,取決于時間,過載標志可能一個重疊在另一個上,總共可達12bit長度。

        1.6 幀間間隔

        這個幀用來隔開數據幀和遙控幀。數據和遙控幀可通過插入幀間間隔與前面傳輸的任何幀(數據幀、遙控幀、錯誤幀、過載幀)分開。

        過載幀和錯誤幀前不能插入幀間間隔。如圖26所示。

        (1)間隔:由3個隱性位組成。在間隔期間如果檢測到顯性電平,則必須發送過載幀,然而,如果間隔的第3bit是顯性電平,間隔被認為是SOF

        (2)總線空閑:是隱性電平,長度沒有限制(它可以是0bit長)。當總線處于這種狀態的時候,總線被認為是自由空閑的,任何單元都可以啟動發送信息。

        (3)暫停傳輸(傳輸暫停期):有8個隱性位組成。只在處于被動錯誤狀態的單元剛發送一個消息后的幀間隔中包含的段。



        關鍵詞: CAN總線基礎知

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 洪雅县| 东辽县| 普安县| 阿克| 瑞丽市| 晋城| 保康县| 平凉市| 肇源县| 常德市| 邯郸市| 泰安市| 汝阳县| 南川市| 海南省| 鄢陵县| 祁门县| 闻喜县| 宣武区| 昭觉县| 获嘉县| 松江区| 阿图什市| 阳朔县| 三明市| 札达县| 灵璧县| 芮城县| 武城县| 高平市| 临朐县| 怀来县| 柘城县| 通海县| 徐水县| 辽阳市| 岳阳县| 宜都市| 聊城市| 郑州市| 萍乡市|