标题: SJA1000初始化标准程序
pola
游客




UID 24
精华 0
积分 6365
帖子 6365
威望 0
金钱 0
阅读权限 1
注册 2007-7-28
状态 离线
发表于 2007-7-28 11:52  资料  短消息  加为好友 

SJA1000初始化标准程序

很多CAN初学者,对SJA1000的初始化感到没有头绪,这里给出一个BASIC模式初始化实验程序。实际上,对一个通信控制器初始化应该是很简单的几条语句。而且像CDR、OCR等等这样的寄存器一般实验中都是标准设置。不必人人都去化时间研究它的设置原理。应该像操作系统一样,有人做过了,只管调用就行。节省下时间,多做些有创意的工作。还有波特率设置参数,有人算过了,我们就不必重复再去计算,只要会调用就行。#pragma MALL#include<reg51.h>#include&;lt jaregb1.h>#define uchar u igned charuchar xdata *SJA_Adr=0x7f00;#define can_read(RegAdr) JA_Adr[RegAdr]#define can_write(RegAdr,Val) JA_Adr[RegAdr]=Val//BASIC模式初始化程序,调用时直接输入标识符ID、屏蔽码、波特率3个参数.//例如:initial(0x78,0,500k);void initial(uchar _ACR,uchar _AMR,uchar F ) { uchar c, _CDR=0x40, _OCR=0xfa can_write(CDR,B_CDR) //时钟分频寄存器,默认0x40 IE=0 c=can_read(IR) can_write(CR,0x61) //进入复位模式can_write(OCR,B_OCR) //输出控制寄存器,默认0xfacan_write(BTR0,BTR_TAB[F ]) //波特率设置 can_write(BTR1,BTR_TAB[F  1]) can_write(ACR,B_ACR) //验收代码寄存器can_write(AMR,B_AMR) //验收屏蔽寄存器can_write(CR,0x06) //进入工作模式}void main(void){uchar c;initial(0x54,0,250k) //SJA1000初始化 . . . . . .}其他在sjaregb1.h里,实际程序initial( )也应在sjaregb1.h里。

顶部
[广告]
 


Google

当前时区 GMT+8, 现在时间是 2008-11-22 20:33
粤ICP备07500170号

By Discuz! 5.5.0 © 2007-2008
Processed in 0.078883 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - Autooo! Inc. - Archiver - 繁体中文