新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于CAN/LIN息線的汽車混合網關設計

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

        作者: 時間:2010-03-09 來源:網絡 收藏
         

        數據接收是從上接收數據,進行必要的協議轉換,再將轉換后的數據存人相應的緩沖區。中有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 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 綦江县| 康平县| 固始县| 伊宁县| 宁晋县| 南丰县| 惠东县| 延安市| 香河县| 永新县| 无棣县| 获嘉县| 新宁县| 鹤峰县| 鹤壁市| 当涂县| 怀仁县| 漾濞| 达州市| 常德市| 仪征市| 高邮市| 特克斯县| 曲松县| 建湖县| 屏东县| 大新县| 北安市| 甘泉县| 阿拉善左旗| 夏津县| 麟游县| 宁国市| 九寨沟县| 鹰潭市| 涟源市| 夏邑县| 溆浦县| 梁平县| 黎平县| 苍溪县|