<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM處理器的CAN節點(diǎn)設計

基于A(yíng)RM處理器的CAN節點(diǎn)設計

作者: 時(shí)間:2012-03-26 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/149346.htm

隨著(zhù)信息技術(shù)的飛速發(fā)展,在嵌入式系統方面的優(yōu)勢和總線(xiàn)的廣泛應用,目前越來(lái)越多的內部自帶了控制器,極大的方便了開(kāi)發(fā)人員對總線(xiàn)的開(kāi)發(fā)。本課題是2104的微CAN總線(xiàn)系統開(kāi)發(fā),采用CAN總線(xiàn)可以將控制器直接安裝在現場(chǎng),數據經(jīng)處理后發(fā)送到總線(xiàn)上,實(shí)現了信息的全數字方式傳輸,提高了傳輸的抗干擾能力,增加了信息的傳輸量。

總體方案

本課題中所的是CAN總線(xiàn)系統,系統節點(diǎn)結構圖如圖1。

圖1 系統節點(diǎn)結構圖

CAN總線(xiàn)系統應用要求:CAN總線(xiàn)接口的擴展、點(diǎn)對點(diǎn)通信。

CAN節點(diǎn)的主要是CAN通信控制器與微之間、CAN總線(xiàn)收發(fā)器與物理總線(xiàn)之間的電路的設計。微控制器主要負責CAN控制器的初始化,進(jìn)行與CAN控制器的數據傳遞,并按照預定的程序進(jìn)行處理;CAN的通信協(xié)議主要由CAN控制器完成,CAN控制器主要負責將數據以CAN報文的形式傳遞,并進(jìn)行系統的診斷、測試以及處理CAN總線(xiàn)上的錯誤等;而CAN總線(xiàn)收發(fā)器是CAN控制器和CAN總線(xiàn)之間的接口,完成物理電平的轉換,功能是增大通信距離,提高系統的瞬間抗干擾能力,保護總線(xiàn),降低射頻干擾(RFI)。

通常一個(gè)完整的CAN節點(diǎn)應該包括三個(gè)部分:微控制器、CAN控制器、CAN收發(fā)器。目前廣泛流行的CAN總線(xiàn)器件有兩大類(lèi):一類(lèi)是獨立的CAN控器,另一類(lèi)是帶有在片CAN的微控制器。

CAN節點(diǎn)硬件電路設計

對于CAN節點(diǎn)硬件電路的的各接口電路的設計有:CAN接口電路、CPU模塊、外圍電路(復位電路和JATG接口電路)。其中CPU及電源電路如下圖2所示:

圖2  CPU及電源模塊

圖2 CPU及電源模塊

LPC2104要使用兩組電源,I/O供電電源為3.3V應用系統。首先,電源DW1將電源整流,經(jīng)過(guò)C1、C3濾波,然后通過(guò)78M05將電源穩壓至5V,再使用LDO芯片(低差壓電源芯片)穩壓輸出3.3V及1.8V電壓。LD0芯片采用S-1131B33UC和S-1131B18UC,其特點(diǎn)為輸出電流大、精度高、穩定性高、功耗低。

設計中的CPU芯片與控制器SJA1000的配腳圖如圖3所示。

圖3  模擬總線(xiàn)硬件圖

圖3 模擬總線(xiàn)硬件圖

CAN節點(diǎn)的軟件設計

CAN節點(diǎn)的軟件設計主要包括ARM處理器的編程和SJA1000驅動(dòng)程序的設計。在硬件電路確定以后,系統控制的主要功能將依賴(lài)于軟件來(lái)實(shí)現。系統能否正??煽康墓ぷ?,除了硬件的合理設計以外,與功能完善的軟件設計是分不開(kāi)的。

軟件程序流程圖如下圖4所示:

圖4 主程序流程圖

配置軟件包使用的GPIO必須在文件config.h中進(jìn)行,其程序清單如列表1所示,其中程序清單(1)設置地址總線(xiàn)的寬度,只能為8、16、和24三個(gè)值之一。清單(2)設置信號AD0對應GPIO,其中0對應P0.0,1對應P0.1,以此類(lèi)推。地址/數據總線(xiàn)的其它信號以這個(gè)信號為基準,順序定義。清單(3)信號ALE對應GPIO,其中0對應P0.0,1對應P0.1,以此類(lèi)推。清單(4)信號WR對應GPIO,其中0對應P0.0,1對應P0.1,以此類(lèi)推。

程序清單列表1 配置總線(xiàn)使用的GPIO

#define ADDR_N_BIT 16 (1)

#define AD0_PIN_NUM 8 (2)

#define ALE_PIN_NUM 0 (3)

#define WR_PIN_NUM 1 (4)

#define RD_PIN_NUM 4 (5)

#include“exbus.h” (6)

本系統CAN控制器采用SJA1000,SJA1000控制器在微控制器正常通訊前,都必須先在相應地址寄存器中加載,確定接收標識碼、總線(xiàn)接收波特率以及輸出控制等,這就是CAN控制器的初始化。系統所用的CAN總線(xiàn)控制器SJA1000和CAN2.0A以及CAN2.0B兩個(gè)版本的協(xié)議同時(shí)兼容。本系統設計以CAN2.0A的Basic CAN為協(xié)議標準進(jìn)行設計。

測試之前編寫(xiě)的程序前首先要確定SJA1000的片選地址,確定與其他外部存儲器無(wú)沖突。其次,微處理器對SJA1000的控制訪(fǎng)問(wèn)是以外部存儲器的方式,來(lái)訪(fǎng)問(wèn)SJA1000的內部寄存器,所以應該正確定義微處理器訪(fǎng)問(wèn)SJA1000時(shí),SJA1000內部寄存器的訪(fǎng)問(wèn)地址。

整個(gè)流程進(jìn)行測試之后,SJA1000有8個(gè)不同的中斷,這些中斷可使主控制器立即作用在CAN控制器的某些狀態(tài)上。一旦CAN產(chǎn)生中斷,SJA1000就將中斷輸出(管腳16)設為低電平,直到主控制器通過(guò)讀SJA1000的中斷寄存器對中斷采取相應措施,在主控制器響應后中斷,或接收INFO里有更多有效數據,SJA1000立刻將中斷輸出再次設為低電平。采用中斷接收的方式來(lái)接收數據,LPC2104的P0.16設置為外部中斷INT,整個(gè)數據接收模塊由數據接收函數void ReceiveData(uint8 *Rt)、中斷處理函數CANException(void)構成。當SJA1000接收到CAN總線(xiàn)數據,通過(guò)接收中斷使得LPC2104產(chǎn)生外部中斷INT而使其進(jìn)入中斷處理函數,進(jìn)而對接收到的數據進(jìn)行處理。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>