CAN总线的实现SJA1000实例Word文件下载.docx
- 文档编号:13709492
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:12
- 大小:19.70KB
CAN总线的实现SJA1000实例Word文件下载.docx
《CAN总线的实现SJA1000实例Word文件下载.docx》由会员分享,可在线阅读,更多相关《CAN总线的实现SJA1000实例Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
0:
初始化成功
1:
复位失败
2:
测试sja1000失败
3:
设置失败
4:
设置验收滤波器失败
5:
设置波特率失败
*****************************************************/
unsignedcharSja_1000_Init(void)
{
bits;
EA=0;
s=BCAN_ENTER_RETMODEL();
if(s==1)return1;
s=BCAN_CREATE_COMMUNATION();
if(s==1)return2;
s=BCAN_SET_OUTCLK(0xc0);
//Pelican
if(s==1)return3;
s=BCAN_SET_OBJECT(0xFF,0x4E,0x16,0x00,0xff,0x00,0x00,0x00);
if(s==1)return4;
s=BCAN_SET_BANDRATE(CAN_BPS_1M);
if(s==1)return5;
SJA_BCANAdr=REG_OCR;
*SJA_BCANAdr=0x1a;
SJA_BCANAdr=REG_IER;
*SJA_BCANAdr=0x03;
s=BCAN_SET_CONTROL(0x08);
if(s==1)return6;
EA=1;
return0;
}
}
/********************************************************************
*函数原型:
bitBCAN_SET_OUTCLK(unsignedcharClock_Out)
*
*参数说明:
*
Clock_Out:
存放时钟分频寄存器(CDR)的参数设置
*返回值:
0;
设置成功
1;
设置失败
*说明:
设置SJA1000的时钟分频。
该子程序只能用于复位模式
*******************************************************************/
bitBCAN_SET_OUTCLK(unsignedcharClock_Out)
SJA_BCANAdr=REG_CDR;
*SJA_BCANAdr=Clock_Out;
if(*SJA_BCANAdr!
=Clock_Out)
return1;
else
return0;
bitBCAN_SET_OBJECT(unsignedchar
BCAN_ACR0,BCAN_ACR1,BCAN_ACR2,BCAN_ACR3,
BCAN_AMR0,BCAN_AMR1,BCAN_AMR2,BCAN_AMR3
)
BCAN_ACR(0-3):
存放验收代码寄存器(ACR)的参数设置
BCAN_AMR(0-3):
存放接收屏蔽寄存器(AMR)的参数设置
设置CAN节点的通讯对象,允许接收的报文,是由AMR和ACR共同决定的.
********************************************************************/
bitBCAN_SET_OBJECT(unsignedchar
BCAN_ACR0,BCAN_ACR1,BCAN_ACR2,BCAN_ACR3,BCAN_AMR0,BCAN_AMR1,BCAN_AMR2,BCAN_AMR3)
SJA_BCANAdr=REG_TxBuffer1;
*SJA_BCANAdr=BCAN_ACR0;
//写入参数
SJA_BCANAdr=REG_TxBuffer2;
*SJA_BCANAdr=BCAN_ACR1;
SJA_BCANAdr=REG_TxBuffer3;
*SJA_BCANAdr=BCAN_ACR2;
SJA_BCANAdr=REG_TxBuffer4;
*SJA_BCANAdr=BCAN_ACR3;
//校验写入值
if(*SJA_BCANAdr!
=BCAN_ACR3)
return1;
SJA_BCANAdr=REG_TxBuffer5;
*SJA_BCANAdr=BCAN_AMR0;
SJA_BCANAdr=REG_TxBuffer6;
*SJA_BCANAdr=BCAN_AMR1;
SJA_BCANAdr=REG_TxBuffer7;
*SJA_BCANAdr=BCAN_AMR2;
SJA_BCANAdr=REG_TxBuffer8;
*SJA_BCANAdr=BCAN_AMR3;
=BCAN_AMR3)return1;
return0;
;
bitBCAN_SET_BANDRATE(unsignedcharCAN_ByteRate)
波特率设置成功
波特率设置失败
*
设置CAN控制器SJA1000通讯波特率.SJA1000的晶振必须为16MHz,
其它晶体的频率的值的波特率,需自己计算。
该子程序只能用于
复位模式
*
******************************************************************/
bitBCAN_SET_BANDRATE(unsignedintCAN_ByteRate)
//将波特率的的预设值装入sja1000的总线定时器
SJA_BCANAdr=REG_BTR0;
*SJA_BCANAdr=CAN_ByteRate>
>
8;
//取CAN_ByteRate的高8位写入写入参数
=(CAN_ByteRate>
8))return1;
SJA_BCANAdr=REG_BTR1;
*SJA_BCANAdr=CAN_ByteRate;
=CAN_ByteRate)return1;
bitBCAN_SET_CONTROL(unsigendcharCMD)
设置控制寄存器
bitBCAN_SET_CONTROL(unsignedcharCMD)
{
unsignedcharTempData;
SJA_BCANAdr=REG_CONTROL;
//SJA_BaseAdr+0x00
控制寄存器
TempData=
*SJA_BCANAdr;
*SJA_BCANAdr=CMD;
if(*SJA_BCANAdr==CMD)
else
/****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAN 总线 实现 SJA1000 实例