新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線接□模塊工作原理

        CAN總線接□模塊工作原理

        作者: 時間:2011-07-20 來源:網絡 收藏

        1.CAN模塊簡介   

        控制器局域網(CAN)模塊是用于與其他外圍設備或單片機進行通信的模塊,這種接口協議能在較大的噪聲 環境中進行通信,具有良好的擾干擾性能。

        CAN模塊是一個通信控制器,執行的是Bosch公司的CAN2.0A/B協議。它能支持CAN1.2、CAN 2.0A、CAN 2.OB 協議的舊版本和CAN2.OB現行版本,此控制器模塊包含完整的CAN系統。

        CAN模塊由協議驅動和信息緩沖及控制組成,CAN協議驅動上接收和發送信息的所有功能。信息裝載 到某個相應的數據寄存器后再發送,通過讀相應的寄存器可檢查狀態與錯誤信息。在上檢測到的任 何信息都要進行錯誤檢查,然后與過濾器進行比較,判斷是否被接收和存儲到兩個接收寄存器之一。

        2.CAN模塊支持的幀類型   

        CAN模塊支持以下幀類型:標準數據幀、擴展數據幀、遠程幀、出錯幀、過載幀和空閑幀。

        (1)數據幀。

        用于各節點之間傳送數據消息,由7個不同的位場組成:幀起始、仲裁場、控制場、數據場、CRC場、應答 場和幀結束。數據幀結構如圖1所示。

        圖1 數據幀組成   

        (2)遠程幀。

        當CAN網絡上一個節點需要其他節點所擁有的數據信息時,可以通過發送遠程幀來請求另一節點發送。該 遠程幀的標識符標識了所需數據的類型,因此,被送回的數據信息的標識符和遠程幀的標識符完全一致。數 據源節點在接收到遠程幀后,根據遠程幀的標識符判斷所需數據信`患類型,并在總線空閑時將相應數據送 出。遠程幀由6個位場組成:幀起始、仲裁場、控制場、CRC場、應答場和幀結束。除了沒有數據場和RTR為 隱性外,遠程幀結構和數據幀完全相同,遠程幀結構如圖2所示。

        圖2 遠程幀結構   

        (3)錯誤幀。

        為進行錯誤界定,每個CAN控制器均設有兩個錯誤計數器:發送錯誤計數器(TEC)和接收錯誤計數器 (REC)。上的所有節點按其錯誤計數器數值情況可分為3個狀態:錯誤活動狀態、錯誤認可狀態和 總線關閉狀態。節點狀態轉換如圖3所示。

        圖3 節點狀態轉換   

        上電復位后,兩個錯誤計數器的數值都為0,節點處于錯誤活動狀態,可正常參與總線通信,檢測到錯誤時 ,發送活動錯誤標志。當錯誤計數器任一數值超過127時,節點進入錯誤認可狀態。處于錯誤狀態的節點可 參與總線通信,但出錯后,發送認可錯誤標志,并在開始進一步發送數據之前等待一段附加時間(暫停發送 場)。

        當發送錯誤計數器和接收計數器均小于或等于127時,節點從錯誤認可狀態再次變為錯誤活動狀態。若發送 錯誤計數器數值超過255后,節點進入總線關閉狀態,既不能向總線發送數據,也不能從總線接收數據。當 軟件執行操作模式請求命令,并等待128次總線釋放(BusˉFree)序列(11位連續隱性位)后,節點從總線 脫離狀態重新回到錯誤活動狀態。

          錯誤幀由兩個不同的位場組成,第一個場由來自不同的節點的錯誤標志疊加而成,第二個場為錯誤界定符 ,錯誤幀結構如圖4所示。

        圖4 錯誤幀結構   

        (4)過載幀。

        超載幀由超載標志和超載界定符組成。超載標志由6個顯性位組成,其格式與活動錯誤標志相同。超載界 定符由8個隱性位組成,其格式與錯誤界定符相同。導致發送超載幀的兩個條件為:   

        ①一個接收節點內部接收條件未準備好,要求延遲下一個數據幀或遠程幀發送;   

        ②在間歇場(3位)檢測到顯性位。

        當超載標志發出后,每個節點監視總線狀態,直至檢測到從顯性至隱性位的跳變,此時,所有的節點均己 完成了超載標志的發送,隨后所有節點開始發送8個隱性位組成的超載界定符,超載幀結構如圖5所示。

        圖5 超載幀結構   

        (5)空閑幀。

        數據幀及遠程幀與前幀消息之間的間隔被稱為幀間空間的場隔開,如圖6所示,幀間

        圖6 不包含暫停發送場的幀間空間   

        空間由間歇場和總線空閑場組成,前面已經發送過報文的錯誤節點還包括暫停發送場。間歇場由3個隱性位 組成,在此期間,CAN節點不進行幀發送。間歇場的存在使CAN控制器在下次消息發送前有時間進行內部處理 操作。

        總線空閑場可以為任意長度,此時總線處于空閑狀態,允許任何節點開始報文發送。等待報文發送的節點 緊隨間歇場后啟動報文發送,即在空閑場第一位期間就啟動報文發送。

        如圖7所示,錯誤認可節點完成一個報文發送后,在開始另一次報文發送或進入總線空閑狀態之前,緊隨間 歇場發送8個隱性位的暫停發送場。發送暫停發送場期間,若其他節點開始發送報文,則本節點停止送出暫 停發送場,并變為報文接收器。   圖7 包含暫停發送場的幀間空間   (6)標準數據幀。

          標準數據幀的結構如圖8所示。

        圖8 標準幀格式   

        (7)擴展幀。

        擴展幀的結構如圖9所示。

        圖9 擴展幀格式   

        3.傳輸過程中的可靠性和同步問題   

        (1)可靠性。

        CAN網絡通信要求信息可靠傳送,但由于外界干擾不可避免地會對通信線路造成影響,誤碼總是客觀存在 的,所以網絡通信中必須采取某些差錯控制措施。

        當出現錯誤時,及時發現錯誤并及時加以糾正。為提高抗干擾能力和數據的可靠性,CAN采用了多種錯誤 檢測手段:發送監視、位填充錯誤檢測、CRC校驗、格式錯誤檢測以及應答錯誤檢測。

        為保證CAN網絡中節點間的正常通信,必須對報文的位定時作出規定。接收同步、網絡傳輸延遲補償及采 樣點定位均由CAN協議集成電路的可編程位定時邏輯確定。CAN中正常位速率被定義為:在不需要重同步的情 況下,每秒傳送的位數。正常位定時被定義為一位的持續時間,實際上就是正常位速率的倒數。

        (2)同步問題。

        位時間可劃分為4個互不重疊的時間段:同步段(SYNC ̄SEG:SynchronizationSegment)、傳播段(PROPˉSEG:Propagation Segment)、相位緩沖段1(PHASEˉSEG:Phase Bufer Segment1)及相位緩沖段2(PHASE-SEG2:Phase Bufer Segment2)。

        同步段用于總線上各節點消息傳輸同步,長度為一個時間份額,此段內需要一個跳變沿。傳播段用于補償網絡內的物理延遲時間,它是信號在總線上傳播時間、輸入比較器延遲和輸出驅動器延遲之和的兩倍,長度可被編程為1~8個時間份額。實際上,在CAN協議集成器件中并沒有定義此段。

        相位緩沖段用于補償上升沿或下降沿的相位誤差,通過重同步,這兩個時間段可被用戶延長或縮短。相位緩沖段1長度可編程為1~8個時間份額,相位緩沖段2長度取值為相位緩沖段1最大值和消息處理時間之和,消息處理時間個于等于兩個時間份額(這一點在CAN協議集成器件中并未嚴格遵守,實際應用中相位緩沖段1比相位緩沖段2長)。

        由采樣點開始,保留用于計算后續位電平的時間段被定義為消息處理時間,其長度小于或等于2個時間份額。總線電平在采樣點被讀取,所以此點代表該位的數值大小。采樣點位于相位緩沖段1的末尾處。

        時間份額是由振蕩器時鐘分頻得出的一個固定時間單元,在CAN協議集成器件中被稱為系統時鐘周期,可由一個預分頻器設定大小,時間份額由下式計算:   

        時間份額=m×最小時間份額   

        其中m為預分頻器系數,最小時間份額在CAN集成器件中被稱為振蕩器時鐘周期。一個位時間中時間份額總數必須被編程在8~25之間。

        網絡常采用的同步方式有兩種:準同步和標準同步。準同步又稱獨立同步,各節點均擁有時間獨立的高穩定度振蕩時鐘,它們的頻率并不一定完全相等,但必須時間相近。準同步的優點是同步體系簡單,容易實現,缺點是工作可靠性較差。

        標準同步又分為主從同步法和相互同步法兩種,主從同步方法中,各網絡節點的時鐘以在網絡中處于重要位置的節點時鐘為基準。其優點是結構相對簡單,網絡穩定性好,缺點是網絡過分依賴于主時鐘,有全網癱瘓的危險。

        和其他計算機網絡相比,CAN網絡結構相對簡單,所以采用準同步方式,每個節點都擁有自己獨立的振蕩時鐘。CAN網絡中,同步方式又分硬同步和重同步兩種形式,同步過程由器件自身完成。

        CAN模塊使用RB3/CANRX和RB2/CANTX/INT2引腳與CAN總線驅動器接口。要配置CANRX和CANTX為CAN接口,需要將TRISB〈3>位置1,TRISB(2)位清0。

        分頻器相關文章:分頻器原理
        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和平区| 壤塘县| 梅州市| 乌鲁木齐市| 梁平县| 阳朔县| 福安市| 伊宁市| 秦皇岛市| 阿坝县| 南宫市| 寿宁县| 乐陵市| 资源县| 巴中市| 永川市| 绥德县| 新源县| 玛曲县| 庆城县| 云南省| 元谋县| 哈巴河县| 峨眉山市| 师宗县| 温州市| 沙田区| 思南县| 苏尼特右旗| 武强县| 丁青县| 铁岭县| 双流县| 集贤县| 城口县| 哈巴河县| 翁源县| 吴堡县| 莫力| 阿城市| 平武县|