當(dāng)前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]獨(dú)立的CAN控制器芯片需要外接一個(gè)微處理器,接受外部CPU的控制才能運(yùn)行。如果微處理器內(nèi)部帶有CAN控制器,無疑會(huì)大大簡化應(yīng)用系統(tǒng)的硬件設(shè)計(jì),系統(tǒng)的可靠性也有很大提高 ,同時(shí)還可以大幅度降低生成成本。Philips的新產(chǎn)品P87C591內(nèi)部集成了CAN控制器。本文主要介紹如何利用P87C591進(jìn)行CAN節(jié)點(diǎn)的設(shè)計(jì)和應(yīng)用。

   摘要:獨(dú)立的CAN控制器芯片需要外接一個(gè)微處理器,接受外部CPU的控制才能運(yùn)行。如果微處理器內(nèi)部帶有CAN控制器,無疑會(huì)大大簡化應(yīng)用系統(tǒng)的硬件設(shè)計(jì),系統(tǒng)的可靠性也有很大提高 ,同時(shí)還可以大幅度降低生成成本。Philips的新產(chǎn)品P87C591內(nèi)部集成了CAN控制器。本文主要介紹如何利用P87C591進(jìn)行CAN節(jié)點(diǎn)的設(shè)計(jì)和應(yīng)用。

    關(guān)鍵詞:P87C591 CAN 節(jié)點(diǎn) PeliCAN 應(yīng)用設(shè)計(jì)

引言

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

1 P87C591簡介

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

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

P87C591包括Philips半導(dǎo)體公司的獨(dú)立CAN控制器SJA1000具有的所有功能,并在此基礎(chǔ)上擴(kuò)展了以下功能:①增強(qiáng)的CAN接收中斷,有接收緩沖區(qū)級(jí)的接收中斷;用于接收中斷的高優(yōu)先級(jí)驗(yàn)收濾波器。②擴(kuò)展的驗(yàn)收濾波器,8個(gè)濾波器用于標(biāo)準(zhǔn)幀格式,4個(gè)濾波器用于擴(kuò)展幀格式;驗(yàn)收濾波器的“運(yùn)行中改變”特性。

圖1

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

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

3 特殊功能寄存器

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

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

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

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

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

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

4 基于P87C591的CAN節(jié)點(diǎn)接口應(yīng)用電路

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

圖3

5 CPU對(duì)PeliCAN的軟件訪問

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

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

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

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

CANADR=BTR0;/*將地址設(shè)置到BTR0寄存器*/

CANDAT=0x45;/*將數(shù)據(jù)寫入BTR0寄存器*/

CANADR=BTR1;/*將地址設(shè)置到BTR1寄存器*/

CANDAT=0x2B;/*將數(shù)據(jù)寫入BTR1*/

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

#include<reg591.h>

void ini_can_controller(void)

{

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

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

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

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

CANDAT=0x45;

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

CANDAT=0x2B;/*用戶可根據(jù)具體的CAN網(wǎng)絡(luò)來調(diào)整BTR0、BRT1的參數(shù)*/

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

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

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

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

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

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

CANDAT=0x01;/*設(shè)定BANK1為單濾波模式,標(biāo)準(zhǔn)幀*/

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

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

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

while(CANSTA & 0x80);/*等待總線激活*/

}

結(jié)語

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉