<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > P87C591內嵌CAN控制器的應用設計

P87C591內嵌CAN控制器的應用設計

作者: 時(shí)間:2005-04-01 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:獨立的芯片需要外接一個(gè)微處理器,接受外部CPU的控制才能運行。如果微處理器內部帶有,無(wú)疑會(huì )大大簡(jiǎn)化系統的硬件,系統的可靠性也有很大提高 ,同時(shí)還可以大幅度降低生成成本。Philips的新產(chǎn)品內部集成了。本文主要介紹如何利用進(jìn)行CAN節點(diǎn)的。

關(guān)鍵詞: CAN 節點(diǎn) PeliCAN

引言

CAN屬于總線(xiàn)式串行通信網(wǎng)絡(luò )。由于其獨特的設計,與一般的通信總線(xiàn)相比,CAN總線(xiàn)的數據通信具有突出的可靠性、實(shí)時(shí)性和靈活性。CAN總線(xiàn)早已成為國際標準,其應用范圍也從最初的汽車(chē)電控逐步擴展到工業(yè)控制的各個(gè)領(lǐng)域,成為最有前途的現場(chǎng)總線(xiàn)之一。CAN總線(xiàn)上的節點(diǎn)一般采用單片機外加CAN控制器的設計方法,不利于產(chǎn)品的集成和成本的降低?,F在Philips公司推出的P87C591集成了CAN控制器SJA1000。本文將詳細介紹基于P87C591的CAN智能節點(diǎn)軟硬件設計及其應用。

1 P87C591簡(jiǎn)介

P87C591有44個(gè)引腳,是一個(gè)單片8位高性能微控制器,具有片內CAN控制器。它從MCS-51微控制器家族派生而來(lái),采用了強大的80C51指令集并包括了Philips半導體SJA1000 CAN控制器的PeliCAN功能。全靜態(tài)內核提供了擴展的節點(diǎn)方式。振蕩器可停止和恢復而不丟失數據。改進(jìn)的1:1內部時(shí)鐘分頻器,在12MHz外部時(shí)鐘速率是實(shí)現500ns指令周期。中央處理器CPU使用的操作數來(lái)自3個(gè)存儲空間:16KB內部程序存儲器,可擴展到64KB;512B內部數據存儲器;最大64KB外部數據存儲器。圖1為P87C591的功能框圖。

有關(guān)芯片的引腳定義和更多的擴展功能可參閱P87C591芯片資料,在此不多講。芯片引腳P3.0和P3.1作為復用腳使用,除了具有普通C1單片機功能外,還可分別復用為CAN的RxD和TxD輸入輸出腳。

P87C591包括Philips半導體公司的獨立CAN控制器SJA1000具有的所有功能,并在此基礎上擴展了以下功能:①增強的CAN接收中斷,有接收緩沖區級的接收中斷;用于接收中斷的高優(yōu)先級驗收濾波器。②擴展的驗收濾波器,8個(gè)濾波器用于標準幀格式,4個(gè)濾波器用于擴展幀格式;驗收濾波器的“運行中改變”特性。

圖1

2 PeliCAN控制器的CPU之間的通信

CPU與CAN之間的接口功能框圖如圖2所示。80C51CPU接口將PeliCAN與P87C591微控制器內部總線(xiàn)相連,通過(guò)5個(gè)特殊功能寄存器CANADR、CANDAT、CANMOD、CANSTA和CANCON對PeliCAN寄存器和RAM區進(jìn)行快捷的訪(fǎng)問(wèn)。由于支持大范圍的地址,基于尋址的間接指針允許使用自動(dòng)增加模式對寄存器進(jìn)行快速訪(fǎng)問(wèn),這樣就將所需的SFR的數目減少到5個(gè)。需要注意的是,CANCON和CANSTA根據訪(fǎng)問(wèn)方向的不同而具有不同的寄存器結構。PeliCAN寄存器可以通過(guò)兩種不同的訪(fǎng)問(wèn)訪(fǎng)問(wèn)。那些控制CAN主要功能最重要的幾個(gè)寄存器,支持軟件輪詢(xún),可以像單獨的SFRs一樣直接訪(fǎng)問(wèn);而PeliCAN模塊中的其它部分通過(guò)一個(gè)間接的指針機制進(jìn)行訪(fǎng)問(wèn)。為了達到高數據吞吐量,在使用間接尋址時(shí)也包含了地址增加的特性。

3 特殊功能寄存器

下面簡(jiǎn)要介紹5個(gè)特殊功能寄存器。

①CANDAR。該讀/寫(xiě)寄存器定義通過(guò)CANDAT訪(fǎng)問(wèn)的PeliCAN內部寄存器的地址,可以將其解釋為對PeliCAN的一個(gè)指針。對PeliCAN塊寄存器的讀/寫(xiě)訪(fǎng)問(wèn)通過(guò)CANDAT寄存器執行。通過(guò)地址自動(dòng)增加模式,為CAN控制寄存器提供了快速的類(lèi)似棧的讀/寫(xiě)。如果CANADR內當前定義的地址大于或等于32(十進(jìn)制),CANADR的內容在任意對CANDAT讀/寫(xiě)操作后自動(dòng)增加。例如,將一個(gè)信息裝入發(fā)送緩沖區可通過(guò)將發(fā)送緩沖區的首地址(112)寫(xiě)入CANADR,然后將信息字節一個(gè)接一個(gè)寫(xiě)入CANDAT。CANADR超過(guò)FFH后復位為00H。如果CANADR小于32,不會(huì )執行自動(dòng)地址增加。即使CANDAT執行讀或寫(xiě),CANADR的值仍保持不變。這允許在PeliCAN控制器的低地址空間進(jìn)行寄存器輪詢(xún)。

②CANDAT CANDAT作為一個(gè)讀/寫(xiě)寄存器。特殊功能寄存器CANDAT看上去是對CANADR所選的CAN控制器內部寄存器的一個(gè)端口。對CANDAT寄存器的讀寫(xiě)等效于對該內部寄存器的訪(fǎng)問(wèn)。需要注意的是,如果CANADR中當前的地址大于等于32,那么任何對CANDAT的訪(fǎng)問(wèn)將使LANADR自動(dòng)增加。

③CANMOD對PeliCAN模塊寄存器CANMOD是直接進(jìn)行讀寫(xiě)訪(fǎng)問(wèn)的,模式寄存器位于PeliCAN模塊中的地址00H。

④CANSTA根據訪(fǎng)問(wèn)方向的不同,CANSTA提供對PeliCAN的狀態(tài)寄存器和中斷使能寄存器的直接訪(fǎng)問(wèn)。對CANSTA的讀操作是對PeliCAN的狀態(tài)寄存器(地址2)進(jìn)行訪(fǎng)問(wèn)。對CANSTA的寫(xiě)操作是對中斷使能寄存器(地址4)進(jìn)行訪(fǎng)問(wèn)。

⑤CANCON。根據訪(fǎng)問(wèn)方向的不同,CANCON提供對PeliCAN的狀態(tài)寄存器中斷使能寄存器的直接訪(fǎng)問(wèn)。對CANSTA的CANSTA的讀操作是對PeliCAN的狀態(tài)寄存器(地址2)進(jìn)行訪(fǎng)問(wèn)。對CANSTA的寫(xiě)操作是對中斷使能寄存器(地址4)進(jìn)行訪(fǎng)問(wèn)。

4 基于P87C591的CAN節點(diǎn)接口應用電路

基于87C591的CAN節點(diǎn)接口應用電路十分簡(jiǎn)單,只需要附加一些CAN收發(fā)電路就可以進(jìn)行CAN總線(xiàn)數據傳輸。CAN收發(fā)芯片采用philips公司的TJA1050收發(fā)器。為了增強CAN總線(xiàn)節點(diǎn)的抗干擾能力 ,SJA1000的TX0和RX0并不是直接與TJA1050的TXD和RXF相連,而是通過(guò)高速光電耦合器6N167與TJA1050相連。這樣,就可以很好地實(shí)現總線(xiàn)上的總CAN節點(diǎn)間的電器隔離。不過(guò),應該特別說(shuō)明的一點(diǎn)是,光電耦合器采用的是兩個(gè)獨立的電源供電,電源Vcc和CAN_V必須完全隔離,否則光耦也就失去了意義。電源的完全隔離可采用小功率的電源隔離模塊或通過(guò)帶多路5V隔離輸出的開(kāi)關(guān)電源模塊實(shí)現。這樣雖然電路復雜些,但卻提高了節瞇的穩定性和安全性,具體節點(diǎn)電路如圖3所示。

圖3

5 CPU對PeliCAN的軟件訪(fǎng)問(wèn)

除了CANMOD、CANSTA、CANCON等PeliCAN常用特殊寄存器可以進(jìn)行直接讀/寫(xiě)訪(fǎng)問(wèn)除外,所有其它的CAN寄存器都需要進(jìn)行間接尋址。CANADR寄存器指向PeliCAN寄存器的地址,在寫(xiě)操作時(shí)將要送到被尋址寄存器的數據寫(xiě)入CANDAT;讀操作時(shí)被尋址寄存器的數據可以從CANDAT中讀出。下面的例子說(shuō)明了對PeliCAN寄存器的直接和間接尋址功能。

/*模式寄存器的直接尋址*/

CANMOD=0x01;/*位RM置1進(jìn)入復位模式*/

/*對位定時(shí)寄存器0和1的間接尋址*/

CANADR=BTR0;/*將地址設置到BTR0寄存器*/

CANDAT=0x45;/*將數據寫(xiě)入BTR0寄存器*/

CANADR=BTR1;/*將地址設置到BTR1寄存器*/

CANDAT=0x2B;/*將數據寫(xiě)入BTR1*/

下面給出上述節點(diǎn)電路的CAN初始化部分的程序。該程序可以直接應用到其它的系統程序之中。初始化部分的源程序如下:

#includereg591.h>

void ini_can_controller(void)

{

CANMOD=0x01;/*進(jìn)入復位模式,啟動(dòng)CAN初始化*/

P1M2=P1M2 I 0x02;/*引腳TXDC設置為推挽模式*/

CANSTA=0x03;/*使能接收和發(fā)送中斷*/

CANADR=BTR0;/*BTR0和BTR1編程為125kb/s,在12MHz條件下*/

CANDAT=0x45;

CANADR=BTR1;/*TSEG1=12,TSEG2=3,SJW=2*/

CANDAT=0x2B;/*用戶(hù)可根據具體的CAN網(wǎng)絡(luò )來(lái)調整BTR0、BRT1的參數*/

CANADR=AMR10;/*設定接收屏蔽寄存器的址*/

CANDAT=0xFF;/*Bank1:與接收屏蔽寄存器1無(wú)關(guān),允許任何數據通過(guò)濾波器*/

CANDAT=0xFF;/*Bank1:與接收屏蔽寄存器無(wú)關(guān),允許任何數據通過(guò)濾波器*/

CANDAT=0xFF;/*Bank1:與接收屏蔽寄存器3無(wú)關(guān),允許任何數據通過(guò)濾波器*/

CANDAT=0xFF;/*Bank1:與接收屏蔽寄存4無(wú)關(guān),允許任何數據通過(guò)濾波器*/

CANADR=ACFMODE;/*設定接收濾波器模式寄存器的地址*/

CANDAT=0x01;/*設定BANK1為單濾波模式,標準幀*/

CANADR=ACFENA;/*設定接收濾波器使能寄存器的地址*/

CANDAT=0x01;/*使能BANK1的濾波器*/

CANMOD=0x00;/*請求進(jìn)入CAN的激活模式*/

while(CANSTA 0x80);/*等待總線(xiàn)激活*/

}

結語(yǔ)

在CAN網(wǎng)絡(luò )節點(diǎn)的設計中,使用集成的CAN控制器是大勢所趨。本文從硬件和軟件的角度對CAN控制器(SJA1000)的P87C591進(jìn)行了詳細的介紹。不僅給出了P87C591 CAN應用的外圍電路接法,還給出了應用的初始化程序,這為以后的系開(kāi)發(fā)提供了一個(gè)很好的基礎。



關(guān)鍵詞: 應用 設計 控制器 CAN 內嵌 P87C591

評論


相關(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>