在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN總線的汽車CAN節(jié)點測試儀設計

            基于CAN總線的汽車CAN節(jié)點測試儀設計

            作者: 時間:2011-08-17 來源:網(wǎng)絡 收藏

              CAN通訊程序包括SJA1000芯片的初始化、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)。測試儀上電后進行SJA1000的初始化,該操作必須正確可靠,這是接收數(shù)據(jù)和發(fā)送數(shù)據(jù)的前提。根據(jù)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);

               //設置接收數(shù)據(jù)緩沖區(qū)首地址

            writesja1000(TXERRADDR, 0x00);

               //清除發(fā)送錯誤寄存器

            writesja1000(RXERRADDR, 0x00);

               //清除接收錯誤寄存器

            readsja1000(ECCADDR);

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

            writesja1000(IERADDR, 0xFF);

               //打開中斷使能寄存器

            writesja1000(MODADDR, 0x08);

               //設置方式寄存器,進入政黨操作模式以收發(fā)數(shù)據(jù)

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

            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的數(shù)據(jù)或地址所分配的AT91RM9200地址。

              接收數(shù)據(jù)和發(fā)送數(shù)據(jù)均采用中斷來實現(xiàn),基于中斷的數(shù)據(jù)處理流程是CAN通訊程序的重點,其具體實現(xiàn)流程如圖4所示:

              結束語

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



            評論


            相關推薦

            技術專區(qū)

            關閉