直播推薦
企業(yè)動態(tài)
- 紛享銷客發(fā)布首個企業(yè)級智能CRM平臺ShareAI
- 揭秘西企業(yè)數(shù)字化+低碳化轉(zhuǎn)型“工具箱”:西門子Xcelerator
- 企業(yè)AI賦能數(shù)智制造,用友U9 cloud世界級云ERP煥新升級
- 《“智“領(lǐng)石化,“質(zhì)“造未來——威圖石化行業(yè)數(shù)智化實踐白皮書》隆重發(fā)布
- 攜手共贏!德國Agfa搭載瑞典IPCO鋼帶,實現(xiàn)印刷設(shè)備振動銳減6倍,提升印刷速度與精度
- 創(chuàng)四方集團榮獲“知名商標(biāo)品牌閃亮”證書,助力品牌戰(zhàn)略升級
- 皇冠CAD(CrownCAD)2025 R3版本來了,率先開啟C“Ai”D時代!
- 電費砍半!中國制冷展:海爾發(fā)布AI建筑最新成果
推薦展會
摘 要:介紹了can總線控制器sja1000芯片,并給出用c51語言編寫sja1000總線控制器的初始化程序,方便使用者學(xué)習(xí)和掌握。
關(guān)鍵詞:sja1000;can總線;c51;寄存器
0 引 言
隨著自動化底層設(shè)備通信的需要,使現(xiàn)場總線技術(shù)得到了迅速的發(fā)展,各廠家都紛紛推出自己的總線控制器。sja1000 就是philips公司推出的一種高性能的can總線控制器,它得到了廣泛的應(yīng)用,但是有關(guān)sja1000初始化的文章比較少見,介紹的程序也不*,這給使用者增加了難度。為了方便使用者掌握和使用can總線,本文作者成功地運用c51語言初始化sja1000為核心的can總線控制器,縮短了程序開發(fā)周期,提高了工作效率。
1 sja1000的新功能與內(nèi)部結(jié)構(gòu)
1.1 sja1000的主要新功能
sja1000是philips公司早期can總線控制器pca82c200的替代品,功能更強大,與pca82c200相比,具有許多優(yōu)點,詳見文獻[4].
1.2 sja1000的內(nèi)部寄存器
sja1000的寄存器和管腳配置允許它使用于各種各樣的集成的或分立的can 收發(fā)器,這使不同微控制器之間的接口能夠被靈活運用。若要正確、靈活的運用sja1000,就必須了解內(nèi)部寄存器的地址、功能和作用。sja1000內(nèi)部寄存器的結(jié)構(gòu)如表1所示(具體每一位的作用,請參閱文獻[2]).
1.3 sja1000與89c52的連線原理
為了連接到主控制器,sja1000提供一個復(fù)用的地址/數(shù)據(jù)總線和附加的讀/寫控制信號,見圖1.sja1000能被看作外圍存儲器并為主控制器映射i/o設(shè)備。為了保證系統(tǒng)的同步,本電路使用了一個24 mhz的晶振作為sja1000的振蕩器,用它的7號引腳(clkout)作為89c52的時鐘脈沖。本文中sja1000的片選由微控制器的p2.7口控制,其內(nèi)部寄存器的地址由p0口和p2口共同來決定,p0口為低8位,p2口為高8位。
圖1 原理接線圖
2 程 序
c語言是一種常用的計算機程序設(shè)計語言,它既有語言的各種特征,又能直接操作系統(tǒng)硬件,而且可以進行結(jié)構(gòu)化程序設(shè)計,用c語言編寫的程序很容易移植。近年來出現(xiàn)的各種專為微型計算機設(shè)計的c語言編譯器,如美國franklin軟件公司推出的franklin c51,德國keil公司推出keil c軟件,都是高性能的c編譯器,它編譯的目標(biāo)代碼簡潔且運行速度高。后者是現(xiàn)在比較流行的軟件,它深受單片機開發(fā)人員的喜愛。下面就以keil c51為平臺,系統(tǒng)的介紹如何用c51語言對sja1000 can總線控制器進行初始化。 從圖1可以看到,主控制器89c52的p0.0-p0.7直接與sja1000的ad0-ad7相連,主控制器既要傳送地址,又要傳送數(shù)據(jù),就必須對p0口進行分時控制,而sja1000的ad0-ad7正好提供一個復(fù)用的地址/數(shù)據(jù)總線和附加的讀/寫控制信號。 sja1000由主控制器的程序進行功能配置和激活,因此sja1000能滿足不同屬性的can總線系統(tǒng)的要求。主控制器89c52和sja1000之間的數(shù)據(jù)交換經(jīng)過一系列的寄存器控制段和一個ram 信息緩沖器完成,對于主控制器來說,構(gòu)成發(fā)送和接收 | sja1000初始化流程圖 |
緩沖器的寄存器和一部份ram的地址窗口,就象是外圍的寄存器。
sja1000初始化的流程圖如圖2所示。
為了讓工程技術(shù)人員更加深入的學(xué)習(xí)和使用can總線,這里完整的給出了sja1000的初始化程序。
程序如下:
#define crxbyte[0x8000] // 控制寄存器地址
#define cmrxbyte[0x8001] // 命令寄存器地址
#define srxbyte[0x8002] // 狀態(tài)寄存器地址
#define irxbyte[0x8003] // 中斷寄存器地址
#define acrxbyte[0x8004] // 驗收碼寄存器地址
#define amrxbyte[0x8005] // 驗收屏蔽寄存器地址
#define btr0xbyte[0x8006] // 總線定時寄存器0地址
#define btr1xbyte[0x8007] // 總線定時寄存器1地址
#define ocrxbyte[0x8008] // 輸出控制寄存器地址
#define trxbyte[0x8009] // 測試寄存器地址
#define transbuffer1xbyte[0x800a] // 發(fā)送緩沖器
#define transbuffer2xbyte[0x800b]
#define transbuffer3xbyte[0x800c]
#define transbuffer4xbyte[0x800d]
#define transbuffer5xbyte[0x800e]
#define transbuffer6xbyte[0x800f]
#define transbuffer7xbyte[0x8010]
#define transbuffer8xbyte[0x8011]
#define transbuffer9xbyte[0x8012]
#define transbuffer10xbyte[0x8013]
#define rxbuffer1xbyte[0x8014] // 接收緩沖器
#define rxbuffer2xbyte[0x8015]
#define rxbuffer3xbyte[0x8016]
#define rxbuffer4xbyte[0x8017]
#define rxbuffer5xbyte[0x8018]
#define rxbuffer6xbyte[0x8019]
#define rxbuffer7xbyte[0x801a]
#define rxbuffer8xbyte[0x801b]
#define rxbuffer9xbyte[0x801c]
#define rxbuffer10xbyte[0x801d]
#define cdrxbyte[0x801f] // 時鐘頻分寄存器
#Include “at89x52.h”
#Include “stdio.h”
#Include “math.h”
#Include “intrins.h”
#Include “ctype.h”
#Include “mylib.h”
#Include “absacc.h”
void init?_can(void) // 初始化sja1000主控制器子函數(shù)
{
cr=0x01; // 控制寄存器為復(fù)位
cdr=0; // 設(shè)置時鐘分頻器
acr=0; // 驗收碼寄存器
amr=0xff; // 驗收屏蔽寄存器
btr0=0x31; // 總線定時寄存器0
btr1=0x18; &
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2025第十一屆中國國際機電產(chǎn)品交易會 暨先進制造業(yè)博覽會
展會城市:合肥市展會時間:2025-09-20