新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT90CAN128的CAN總線設計

        基于AT90CAN128的CAN總線設計

        作者: 時間:2013-03-01 來源:網絡 收藏

        初始化:

        GCON | = 0X01;

        for( i= 0; i 15; i+ + )

        {

        PAGE = i 4; / /將15個MOB 都初始化一次

        CANCDMOB = 0;

        CANSTMOB= 0;

        CAN IDT1= 0;

        CAN IDT2= 0;

        ……

        for( j= 0; j 8; j+ + )

        CANMSG= 0;

        CANBT1= 0X1E; / /設置CAN 傳輸波特率, 16分頻

        CANBT2= 0X40;

        CANBT3= 0X49;

        CANPAGE = ( 0 4) ; / /選擇MOB0作為接收MOB, 并設定標識碼

        CAN IDT1= 0X00;

        CAN IDM1= 0X00;

        ……

        CANPAGE = ( 1 4); / /選擇MOB1作為發送MOB, 并設定標識碼

        CAN IDT1= 0X00;

        ……

        }

        發送模塊代碼:

        CANPAGE = ( 1 4); / /選定MOB1

        If( ( CANGSTA 0X10) = = 0) / /查詢CAN 狀態寄存器的TXBSY 位, 為0, 則可以發送

        for( i= 0; i 8; i+ + )

        {

        CANMSG= my _dada[ i] ; / /將要發送的數據裝入數據寄存器中, 共8 by te

        CANCDMOB | = 0X48; / /發送

        }

        接收模塊代碼是類似的, 思路都是在判斷發送允許標志之后, 如果允許, 就將數據裝入到指定的MOB中, 而每個MOB 一個發送周期一共可以發送8byte的數據。而CAN 的另一端是NXP公司LPC2294的CAN外圍, 其結構和原理都差不多, 當然, 在寄存器設置中會有一點差別, 但只要兩個CPU 約定好數據幀的標識符編號是什么, 傳輸速率相同, 就可以進行數據交換了。由于篇幅有限,LPC2294的CAN接口設置在此就不作介紹了。

        最后給出了CAN 應用CPU 外部的硬件原理參考圖, 如圖4所示。

        5 CAN 總線收發器TJA1050硬件連接圖

        圖中CAN 收發器為NXP公司的TJA1050, TXD和RXD分別連接到CPU 的CAN接口, CANL和CANH 則為與另一個CPU 連接的總線, CANL 和CANH 之間電阻值約為120歐姆, 開關S可以作為CAN 總線的硬件啟用開關。另外, 如果在抗干擾要求高的場合, 可以對TXD 和RXD使用光電隔離。

        圖4 CPU 外圍收發器的硬件原理圖。

        6 結束語

        at90can128的CAN 總線模塊的電梯系統調試器, 經過長時間的檢驗, 使用良好, 通信正常無誤。在眾多的現場總線當中, CAN 總線憑借其優秀的特性已經為越來越多的工程人員認同和偏愛, 而隨著越來越多的高端CPU 對CAN 控制器的集成和綜合成本的下降, CAN 總線的使用必定會越來越普遍, 其中集成CAN 控制器的8位AVR 也會受到越來越多人的青睞。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 叶城县| 天柱县| 陕西省| 达日县| 和龙市| 瓮安县| 南汇区| 怀远县| 五家渠市| 旅游| 康定县| 榕江县| 淮阳县| 淅川县| 成武县| 桓仁| 三原县| 西林县| 临邑县| 游戏| 常德市| 微博| 东源县| 龙游县| 蒲城县| 乌拉特前旗| 扎赉特旗| 东兰县| 吉木乃县| 永新县| 资源县| 清河县| 苍山县| 德江县| 夏河县| 吴忠市| 贵南县| 亚东县| 梓潼县| 日喀则市| 萨迦县|