新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于CAN/LIN息線的混合網關設計

        基于CAN/LIN息線的混合網關設計

        作者: 時間:2009-07-08 來源:網絡 收藏

        3.3 數據的接收
        數據接收是從總線上接收數據,進行必要的協議轉換,再將轉換后的數據存人相應的緩沖區。中有3個接收子程序,分別對應兩路控制器及一路發送器。數據接收采用中斷方式,由于不同網絡有不同的實時性要求,因此為3個接收程序設定了不同的中斷級別。高速的實時性要求最高,中斷級別也設為最高;而總線的實時性在三者中最低,故中斷級別也最低。當一個接收中斷發生后,進入接收中斷子程序,判斷相應的緩沖區是否已滿(低速的接收程序在接收到數據后需要根據數據的目的網絡確定緩存區為BUF2還是BUF3)。如果緩沖區已滿,則產生一個溢出錯誤標志;如果沒有滿,則將數據進行相應的協議轉換,并將轉換后的數據存入相應的緩存區,退出中斷并完成接收。圖6所示為低速CAN數據接收過程的簡要流程。

        3.4 數據的處理
        的數據處理是指協議的轉換和數據在緩沖區的存儲與轉發。每當接收到一組數據時,首先進行協議轉換,然后再將其存入到相應的緩存區。高低速CAN的協議相同,并不需要轉換,因此主要是進行CAN協議和協議之間的轉換。
        CAN協議和LIN協議都是以幀(frame)為數據單位進行通信的。在進行LIN協議到CAN協議的轉換時,首先是將LIN幀分解,從標識符場 (identfield)提取出其中的ID標識符,從數據場(data field)提取出有效數據,然后根據這些信息封裝成符合要求的CAN幀格式。CAN協議到LIN協議的轉換過程亦是如此。先將CAN幀分解,從仲裁域 (arbitration field)和數據域(data field)中提取出有用信息,然后封裝成符合要求的LIN幀格式。
        數據的4個緩沖區BUF1~BUF4為FIFO(First InFirst Out)緩沖區,本文采用循環隊列(circular queue)來實現數據的先進先出。兩個指針Read和Write分別指示隊頭元素和隊尾元素在緩沖區空間中的位置,它們的初值在隊列初始化時均應置為 0,每讀取或寫入一次數據,都要對緩沖區的參數進行調整。寫數據時,將新元素插入Write所指的位置,然后將Write加1;讀數據時,刪去Read所指的元素,然后將Read加1并返回被刪元素。

        4 通信測試
        將網關的高速CAN接口和低速CAN接口分別與單獨的CAN節點電路相連,LIN接口與單獨的LIN從節點相連,組成測試網絡。測試的主要內容為高速 CAN和低速CAN之間的通信,低速CAN和LIN網絡之間的通信。高速CAN網絡采用速率為500 kb/s,低速CAN網絡采用的速率為100kb/s,LIN網絡采用的速率為10 kb/s。利用PC機的串口發送測試數據,同時在另一個串口終端上進行數據的監測。測試結果表明,發送數據內容與監測到的數據內容一致。

        5 總 結
        以AT91SAM7A3為核心的一款CAN/LIN網關,實現了汽車網絡中高速CAN總線、容錯CAN總線及LIN總線三類網絡之間的通信,使汽車中的各類網絡的信息能夠有效共享,實現了不同性質網絡的互聯。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镇安县| 年辖:市辖区| 会东县| 宁国市| 汤阴县| 孝昌县| 潼关县| 嘉祥县| 离岛区| 磐石市| 田林县| 斗六市| 蒙城县| 洛阳市| 博白县| 乐至县| 平南县| 马龙县| 翁牛特旗| 平遥县| 兴隆县| 环江| 志丹县| 乐业县| 福建省| 吴桥县| 类乌齐县| 江孜县| 海阳市| 卢龙县| 什邡市| 海伦市| 金堂县| 嘉定区| 长武县| 永清县| 筠连县| 积石山| 尤溪县| 揭阳市| 莎车县|