大地资源网视频在线观看新浪,日本春药精油按摩系列,成人av骚妻潮喷,国产xxxx搡xxxxx搡麻豆

您現在的位置:智能制造網>技術中心>CAN總線控制器的初始化程序

直播推薦

更多>

企業動態

更多>

推薦展會

更多>

CAN總線控制器的初始化程序

2009年03月24日 17:49:10人氣:1883來源:浙江啟揚智能科技有限公司

摘  要:介紹了can總線控制器sja1000芯片,并給出用c51語言編寫sja1000總線控制器的初始化程序,方便使用者學習和掌握。

關鍵詞:sja1000;can總線;c51;寄存器

 

0  引  言

隨著自動化底層設備通信的需要,使現場總線技術得到了迅速的發展,各廠家都紛紛推出自己的總線控制器。sja1000 就是philips公司推出的一種高性能的can總線控制器,它得到了廣泛的應用,但是有關sja1000初始化的文章比較少見,介紹的程序也不*,這給使用者增加了難度。為了方便使用者掌握和使用can總線,本文作者成功地運用c51語言初始化sja1000為核心的can總線控制器,縮短了程序開發周期,提高了工作效率。

 

1  sja1000的新功能與內部結構

1.1  sja1000的主要新功能

sja1000是philips公司早期can總線控制器pca82c200的替代品,功能更強大,與pca82c200相比,具有許多優點,詳見文獻[4].

1.2  sja1000的內部寄存器

sja1000的寄存器和管腳配置允許它使用于各種各樣的集成的或分立的can 收發器,這使不同微控制器之間的接口能夠被靈活運用。若要正確、靈活的運用sja1000,就必須了解內部寄存器的地址、功能和作用。sja1000內部寄存器的結構如表1所示(具體每一位的作用,請參閱文獻[2]).

1.3  sja1000與89c52的連線原理

為了連接到主控制器,sja1000提供一個復用的地址/數據總線和附加的讀/寫控制信號,見圖1.sja1000能被看作外圍存儲器并為主控制器映射i/o設備。為了保證系統的同步,本電路使用了一個24 mhz的晶振作為sja1000的振蕩器,用它的7號引腳(clkout)作為89c52的時鐘脈沖。本文中sja1000的片選由微控制器的p2.7口控制,其內部寄存器的地址由p0口和p2口共同來決定,p0口為低8位,p2口為高8位。

圖1  原理接線圖

 

 

 

2  程  序

c語言是一種常用的計算機程序設計語言,它既有語言的各種特征,又能直接操作系統硬件,而且可以進行結構化程序設計,用c語言編寫的程序很容易移植。近年來出現的各種專為微型計算機設計的c語言編譯器,如美國franklin軟件公司推出的franklin c51,德國keil公司推出keil c軟件,都是高性能的c編譯器,它編譯的目標代碼簡潔且運行速度高。后者是現在比較流行的軟件,它深受單片機開發人員的喜愛。下面就以keil c51為平臺,系統的介紹如何用c51語言對sja1000 can總線控制器進行初始化。

從圖1可以看到,主控制器89c52的p0.0-p0.7直接與sja1000的ad0-ad7相連,主控制器既要傳送地址,又要傳送數據,就必須對p0口進行分時控制,而sja1000的ad0-ad7正好提供一個復用的地址/數據總線和附加的讀/寫控制信號。

sja1000由主控制器的程序進行功能配置和激活,因此sja1000能滿足不同屬性的can總線系統的要求。主控制器89c52和sja1000之間的數據交換經過一系列的寄存器控制段和一個ram 信息緩沖器完成,對于主控制器來說,構成發送和接收

  sja1000初始化流程圖

緩沖器的寄存器和一部份ram的地址窗口,就象是外圍的寄存器。

sja1000初始化的流程圖如圖2所示。

為了讓工程技術人員更加深入的學習和使用can總線,這里完整的給出了sja1000的初始化程序。

程序如下:

#define crxbyte[0x8000]                 // 控制寄存器地址

#define cmrxbyte[0x8001]                // 命令寄存器地址

#define srxbyte[0x8002]                 // 狀態寄存器地址

#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]       // 發送緩沖器

#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主控制器子函數

{

cr=0x01;                              // 控制寄存器為復位

cdr=0;                                // 設置時鐘分頻器

acr=0;                                // 驗收碼寄存器

amr=0xff;                             // 驗收屏蔽寄存器

btr0=0x31;                            // 總線定時寄存器0

btr1=0x18;                           &

全年征稿/資訊合作 聯系郵箱:1271141964@qq.com

免責聲明

  • 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
  • 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
  • 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。

<
更多 >

工控網機器人儀器儀表物聯網3D打印工業軟件金屬加工機械包裝機械印刷機械農業機械食品加工設備制藥設備倉儲物流環保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


我要投稿
  • 投稿請發送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
  • 聯系電話0571-89719789
工業4.0時代智能制造領域“互聯網+”服務平臺
智能制造網APP

功能豐富 實時交流

智能制造網小程序

訂閱獲取更多服務

微信公眾號

關注我們

抖音

智能制造網

抖音號:gkzhan

打開抖音 搜索頁掃一掃

視頻號

智能制造網

公眾號:智能制造網

打開微信掃碼關注視頻號

快手

智能制造網

快手ID:gkzhan2006

打開快手 掃一掃關注
意見反饋
關閉
企業未開通此功能
詳詢客服 : 0571-87858618
主站蜘蛛池模板: 惠州市| 遂溪县| 莒南县| 定陶县| 土默特右旗| 曲麻莱县| 松江区| 吴旗县| 杨浦区| 迁安市| 正镶白旗| 无极县| 泸西县| 滕州市| 新干县| 乐亭县| 西青区| 蓬安县| 温州市| 南汇区| 兴安县| 含山县| 盐源县| 康马县| 庆云县| 尼勒克县| 沈阳市| 安义县| 双桥区| 顺平县| 涪陵区| 镇赉县| 伊川县| 怀仁县| 静海县| 陈巴尔虎旗| 高唐县| 永靖县| 堆龙德庆县| 玉田县| 霞浦县|