• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線的汽車CAN節點測試儀設計

    基于CAN總線的汽車CAN節點測試儀設計

    作者: 時間:2011-08-17 來源:網絡 收藏

      CAN通訊程序包括SJA1000芯片的初始化、接收數據和發送數據。測試儀上電后進行SJA1000的初始化,該操作必須正確可靠,這是接收數據和發送數據的前提。根據SJA1000的手冊,設計 代碼如下:

    writesja1000(MODADDR, 0x09);

       //設置方式寄存器,進入復位操作以初始化

    writesja1000(CDRADDR, 0x88);

       //設置時鐘分頻寄存器,選PeliCAN模式

    writesja1000(AMR0ADDR, AMR0 );

       //設置接收屏蔽寄存器0

    writesja1000(AMR1ADDR, AMR1);

       //設置接收屏蔽寄存器1

    writesja1000(AMR2ADDR, AMR2);

       //設置接收屏蔽寄存器2

    writesja1000(AMR3ADDR, AMR3);

       //設置接收屏蔽寄存器3

    writesja1000(ACR0ADDR, ACR0);

       //設置接收驗收代碼寄存器0

    writesja1000(ACR1ADDR, ACR1);

       //設置接收驗收代碼寄存器1

    writesja1000(ACR2ADDR, ACR2);

       //設置接收驗收代碼寄存器2

    writesja1000(ACR3ADDR, ACR3);

       //設置接收驗收代碼寄存器3

    writesja1000(BTR0ADDR, 0x03);

       //設置總線定時器0

    writesja1000(BTR1ADDR, 0xFF);

       //設置總線定時器1

    writesja1000(OCRADDR, 0xAA);

       //設置輸出寄存器

    writesja1000(RBSAADDR, 0x00);

       //設置接收數據緩沖區首地址

    writesja1000(TXERRADDR, 0x00);

       //清除發送錯誤寄存器

    writesja1000(RXERRADDR, 0x00);

       //清除接收錯誤寄存器

    readsja1000(ECCADDR);

       //清除錯誤代碼捕捉寄存器

    writesja1000(IERADDR, 0xFF);

       //打開中斷使能寄存器

    writesja1000(MODADDR, 0x08);

       //設置方式寄存器,進入政黨操作模式以收發數據

    writesja1000()和readsja1000()是封裝好的底層函數,其具體實現如下:

    static void writesja1000(unsigned char addr, unsigned char data)

    {
      *SJAADDR = addr;

      *SJADATA = data;
    }

    static unsigned char readsja1000(unsigned char addr)

    {
      *SJAADDR = addr;

       return *SJADATA;
    }

      其中SJADATA、SJAADDR分別是為讀/寫SJA1000的數據或地址所分配的AT91RM9200地址。

      接收數據和發送數據均采用中斷來實現,基于中斷的數據處理流程是CAN通訊程序的重點,其具體實現流程如圖4所示:

      結束語

      與傳統的8/16位單片機測試儀系統相比,本文介紹的測試儀基于32位ARM9處理器,運行速度可高達180MHz,擴展能力強;采用Linux操作系統,軟件更加模塊化,更新和移植更加方便,運行更穩定;采用虛擬儀器技術實現測試儀的操作面板,便于功能擴展,通用性強。在對汽車CAN節點現場測試時,該測試儀運行穩定快速,保證了該產品的順利生產。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 清徐县| 曲麻莱县| 宿州市| 合山市| 兰考县| 朝阳市| 祁阳县| 建德市| 肥西县| 宿州市| 杭锦旗| 鄄城县| 康定县| 象州县| 衡山县| 平乡县| 大名县| 尤溪县| 昔阳县| 阳朔县| 镶黄旗| 贵南县| 吉林省| 壤塘县| 岗巴县| 定兴县| 辽源市| 榆社县| 申扎县| 锦屏县| 越西县| 建瓯市| 女性| 宜宾市| 株洲县| 酉阳| 蒙山县| 田阳县| 通州市| 西充县| 鹿邑县|