/*
********************************************************************************************************************
**描述: 独立的CAN 控制器SJA1000基本硬件头文件定义(BasicCAN 工作方式)
**文件名: SJA_BcanFunc.H
**应用语言: KEIL C51
**版本 : V1.0
**广州周立功单片机发展有限公司 保留所有的版权
********************************************************************************************************************
*/
/*$page*/
#include "SJA_BCANCONF.H"
#include <string.h>
/************************************************************************
*以下为基本的函数说明(BasicCAN) *
************************************************************************/
/************************************************************************
*函数原型: bit BCAN_CREATE_COMMUNATION(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示SJA1000接口正常 *
* 1 ; 表示SJA1000与处理器接口不正常 *
* *
*说明:该函数用于检测CAN控制器的接口是否正常 *
************************************************************************/
bit BCAN_CREATE_COMMUNATION(void)
{
SJA_BCANAdr=REG_TEST; //访问测试寄存器
*SJA_BCANAdr =0xaa; //写入测试值
if(*SJA_BCANAdr == 0xaa)
{
return 0; //读测试正确
}
else
{
return 1;
}
}
/************************************************************************
*函数原型: bit BCAN_ENTER_RETMODEL(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示成功进入复位工作模式 *
* 1 ; 表示不能进入复位工作模式 *
* *
*说明: CAN控制器进入复位工作模式 *
************************************************************************/
bit BCAN_ENTER_RETMODEL(void)
{
unsigned char TempData;
SJA_BCANAdr = REG_CONTROL; //访问地址指向控制寄存器
TempData= *SJA_BCANAdr; //保存原始值
*SJA_BCANAdr=(TempData|0x01); //置位复位请求
if((*SJA_BCANAdr&0x01) == 1)
{
return 0;
}
else
{
return 1;
}
}
/************************************************************************
*函数原型: bit BCAN_QUIT_RETMODEL(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示成功退出复位工作模式 *
* 1 ; 表示不能退出复位工作模式 *
* *
*说明: CAN控制器退出复位工作模式 *
************************************************************************/
bit BCAN_QUIT_RETMODEL(void)
{
unsigned char TempData;
SJA_BCANAdr = REG_CONTROL; //访问地址指向控制寄存器
TempData = *SJA_BCANAdr; //保存原始值
*SJA_BCANAdr=(TempData&0xfe); //清除复位请求
if((*SJA_BCANAdr&0x01) == 0)
{
return 0; //
}
else
{
return 1; //退出成功
}
}
/************************************************************************
;*函数原型: bit BCAN_SET_BANDRATE(unsigned char CAN_ByteRate) *
;*参数说明: R7 波特率(Kbit/s) BTR0 BTR1 *
;* 0 20 053H, 02FH *
;* 1 40 087H, 0FFH *
;* 2 50 047H, 02FH *
;* 3 80 083H, 0FFH *
;* 4 100 043H, 02fH *
;* 5 125 03H, 01cH *
;* 6 200 081H, 0faH *
;* 7 250 01H, 01cH *
;* 8 400 080H, 0faH *
;* 9 500 00H, 01cH *
;* 10 666 080H, 0b6H *
;* 11 800 00H, 016H *
;* 12 1000 00H, 014H *
;*返回值: *
;* 0 ;波特率设置成功 *
;* 1 ;波特率设置失败 *
;* *
;*说明:设置CAN控制器SJA1000通讯波特率.SJA1000的晶振为必须为16MHZ, *
;* 其它晶体的频率的值的波特率,需自己计算 。该子程序只能用于 *
;* 复位模式 *
;************************************************************************/
unsigned char code SJA_BTR_CODETAB[]={
0x53,0x2F, // ;20KBPS的预设值
0x87,0xFF, //;40KBPS的预设值
0x47,0x2F, //;50KBPS的预设值
0x83,0xFF, //;80KBPS的预设值
0x43,0x2f, //;100KBPS的预设值
0x03,0x1c, //;125KBPS的预设值
0x81,0xfa, //;200KBPS的预设值
0x01,0x1c, //;250KBPS的预设值
0x80,0xfa, //;400KBPS的预设值
0x00,0x1c, //;500KBPS的预设值
0x80,0xb6, //;666KBPS的预设值
0x00,0x16, //;800KBPS的预设值
0x00,0x14 //;1000KBPS的预设值
};
bit BCAN_SET_BANDRATE(unsigned char CAN_ByteRate)
{
unsigned char BTR0_num,BTR1_num;
BTR0_num = SJA_BTR_CODETAB[CAN_ByteRate*2];
BTR1_num = SJA_BTR_CODETAB[CAN_ByteRate*2+1];
//将波特率的的预设值装入sja1000的总线定时器
SJA_BCANAdr=REG_BTR0; //访问地址指向总线定时寄存器0
*SJA_BCANAdr=BTR0_num; //写入参数
if(*SJA_BCANAdr != BTR0_num) //校验写入值
{
return 1;
}
SJA_BCANAdr=REG_BTR1; //访问地址指向总线定时寄存器0
*SJA_BCANAdr=BTR1_num; //写入参数
if(*SJA_BCANAdr != BTR1_num) //校验写入值
{
return 1;
}
return 0;
}
/************************************************************************
;*函数原型: BCAN_SET_OBJECT *
*参数说明: *
* BCAN_ACR:存放验收代码寄存器(ACR)的参数设置 *
* BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置 *
;*返回值: *
;* 0 ;通信对象设置成功 *
;* 1 ;通信对象设置失败 *
;* *
;*说明:设置CAN节点的通讯对象,允许接收的报文ID号的高8位(D10--D3) 。 *
;* 允许接收的报文,是由AMR和ACR共同决定的.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ZLGSJA1000.zip (44个子文件)
ZLGSJA1000
SJA1000芯片BasicCAN模块 _V1.00
BasicCAN_V1.0
c51
SJA_BCANCONF.h 22KB
SJA_BCANFUNC.c 20KB
a51
SJA_BCANDEMO.ASM.OBJ 7KB
SJA_BCANDEMO.ASM.LST 115KB
SJA_Uv2.Bak 2KB
test2.LST 115KB
SJA_Opt.Bak 1KB
test2.OBJ 7KB
SJA.hex 3KB
SJA.plg 0B
SJA_BCANDEMO.ASM.ASM 12KB
SJA_BCANCONF.ASM 19KB
SJA.Opt 1KB
SJA.M51 23KB
test2.ASM 12KB
SJA 7KB
SJA.Uv2 2KB
SJA_BCANFUNC.ASM 28KB
SJA.lnp 51B
bcan_test
main.OBJ 58KB
sjabcan.M51 63KB
main.c 19KB
sjabcan_Opt.Bak 2KB
main.LST 38KB
sjabcan_Uv2.Bak 2KB
sjabcan.Uv2 2KB
Keyled.c 12KB
sjabcan 48KB
sjabcan.Opt 2KB
SJA_BCANCONF.h 22KB
sjabcan.plg 377B
Seriele.c 3KB
time_module.c 3KB
SJA_BCANFUNC.c 20KB
A测试程序
SJA.plg 0B
SJA_BCANDEMO.ASM.ASM 12KB
SJA_BCANCONF.ASM 19KB
SJA.Opt 821B
test2.ASM 12KB
SJA.Uv2 2KB
SJA_BCANFUNC.ASM 28KB
Test3.ASM 12KB
CAN控制器SJA1000的控制模块BCAN_20020924.PDF 319KB
www.pudn.com.txt 218B
共 44 条
- 1
资源评论
- wenddy882014-07-21是基于BasicCAN的,内容还不错
- 月穿塘底2014-07-08周立功的技术支持做的不错,CAN的操作不容易!
- sclzmmm2013-11-26不太详细,而且现在都是内嵌的,很少用SJA1000了
- famousyl2012-11-14不错的材料,如果程序是用C写的就完美了~
xiaogangcrazyboy
- 粉丝: 3
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功