📄 复件 sja_pelican.h
字号:
/************************************************************************
*内部地址 01EH 备用 *
************************************************************************/
/************************************************************************
*定义命令字 *
************************************************************************/
#define CMD_SEND 0x01 //发送请求命令
#define CMD_ABORT_SEND 0x02 //夭折发送命令
#define CMD_RELEASE_RXBUFF 0x04 //释放接收缓冲区
#define CMD_CLEAR_OVER_STAT 0x08 //清除超载状态
#define CMD_GOTO_SLEEP 0x10 //自身接收请求位
/************************************************************************
*定义16M的晶体下,CAN总线波特率 *
************************************************************************/
#define ByteRate_20k 0x00 //波特率20kbps
#define ByteRate_40k 0x01 //波特率40kbps
#define ByteRate_50k 0x02 //波特率50kbps
#define ByteRate_80k 0x03 //波特率80kbps
#define ByteRate_100k 0x04 //波特率100kbps
#define ByteRate_125k 0x05 //波特率125kbps
#define ByteRate_200k 0x06 //波特率200kbps
#define ByteRate_250k 0x07 //波特率250kbps
#define ByteRate_400k 0x08 //波特率400kbps
#define ByteRate_500k 0x09 //波特率500kbps
#define ByteRate_666k 0x0a //波特率666kbps
#define ByteRate_800k 0x0b //波特率800kbps
#define ByteRate_1000k 0x0c //波特率1000kbps
/*-------------------------------------------------------------------------------------------
* 以下为PELICAN SJA1000的错误字
-------------------------------------------------------------------------------------------*/
#define CAN_INTERFACE_0K 0 //SJA1000接口正常
#define CAN_BUS_0K 0 //CAN总线工作正常
#define CAN_INTERFACE_ERR 0x31 //SJA1000接口错误
#define CAN_ENTRESET_ERR 0x32 //SJA1000不能进入复位模式
#define CAN_QUITRESET_ERR 0x33 //SJA1000不能退出复位模式
#define CAN_INITOBJECT_ERR 0x34 //初始化报文验收滤波器错
#define CAN_INITBTR_ERR 0x35 //初始化总线定时器器错
#define CAN_INITOCR_ERR 0x36 //初始化输出控制错误
#define CAN_INTCLKDIV_ERR 0x37 //初始化时钟分频控制器错
#define CAN_BUS_ERR 0x38 //SJA1000发送数据错
#define CAN_SETCDR_ERR 0x39 //SJA1000不能选择Peli模式
/************************************************************************
*以下为基本的函数说明(BasicCAN) *
************************************************************************/
/************************************************************************
*函数原型: bit PCan_SelfTest(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示SJA1000与处理器接口正常 *
* 1 ; 表示SJA1000与处理器接口不正常 *
* *
*说明:该函数用于检测CAN控制器的接口是否正常 *
************************************************************************/
bit PCan_SelfTest(void);
/************************************************************************
*函数原型: bit PCan_Enter_RstModel(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示成功进入复位工作模式 *
* 1 ; 表示不能进入复位工作模式 *
* *
*说明: CAN控制器进入复位工作模式 *
************************************************************************/
bit PCan_Enter_RstModel(void);
/************************************************************************
*函数原型: bit PCan_Set_CDR(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示选择Peli模式成功 *
* 1 ; 表示选择Peli模式失败 *
* *
*说明: CAN控制器选择Peli模式 *
************************************************************************/
bit PCan_Set_CDR(unsigned char CDR);
/************************************************************************
*函数原型: bit PCan_Quit_RstModel(void) *
*参数说明: 无 *
*返回值: *
* 0 ; 表示成功退出复位工作模式 *
* 1 ; 表示不能退出复位工作模式 *
* *
*说明: CAN控制器退出复位工作模式 *
************************************************************************/
bit PCan_Quit_RstModel(void);
/************************************************************************
;*函数原型: bit PCan_Set_Bandrate(unsigned char CAN_ByteRate) *
;************************************************************************/
bit PCan_Set_BandRate(unsigned char CAN_ByteRate);
/************************************************************************
;*函数原型: bit PCan_Set_Object(unsigned char PCan_ACR, *
unsigned char PCan_AMR) *
*参数说明: *
* PCan_ACR:存放验收代码寄存器(ACR)的参数设置 *
* PCan_AMR:存放接收屏蔽寄存器(AMR)的参数设置 *
;*返回值: *
;* 0 ;通信对象设置成功 *
;* 1 ;通信对象设置失败 *
;* *
;*说明:设置CAN节点的通讯对象 *
;* 该子程序只能用于复位模式 *
;************************************************************************/
bit PCan_Set_Object(unsigned char PCan_ACR0,
unsigned char PCan_ACR1,
unsigned char PCan_ACR2,
unsigned char PCan_ACR3,
unsigned char PCan_AMR0,
unsigned char PCan_AMR1,
unsigned char PCan_AMR2,
unsigned char PCan_AMR3);
/************************************************************************
;*函数原型: bit PCan_Set_Outclk(unsigned char Out_Control) *
;*参数说明: *
* Out_Control:存放输出控制寄存器 (OC) 的参数设置 *
* *
;*返回值: *
;* 0 ;设置成功 *
;* 1 ;设置失败 *
;* *
;*说明:设置SJA1000的输出模式和时钟分频 。该子程序只能用于复位模式 *
;************************************************************************/
bit PCan_Set_OCR(unsigned char Out_Control);
/************************************************************************
*函数原型: bit PCan_Data_Send(unsigned char *SendDataBuf) *
*参数说明: 特定帧各式的数据 *
*返回值: *
* 0 ; 表示将数据成功的送至发送缓冲区 *
* 1 ; 表示上一次的数据正在发送, *
* ; 表示发送缓冲区被锁定,不能写入数据 *
* ; 表示写入数据错误 *
*说明: 将待发送特定帧各式的数据,送入SJA1000发送缓存区中,然后启动 *
* SJA1000发送。 *
* 特定帧格式为:开始的两个字节存放 '描述符' ,以后的为数据 *
* 描述符包括11位长的ID(标志符)\1位RTR\4位描述数据长度的DLC共16位 *
* *
*注:本函数的返回值仅指示,将数据正确写入SJA1000发送缓存区中与否。 *
* 不指示SJA1000将该数据正确发送到CAN总线上完毕与否 *
************************************************************************/
bit PCan_Data_Send(unsigned char *SendDataBuf);
/************************************************************************
*函数原型: bit PCan_Data_Recv(unsigned char *RcvDataBuf); *
*参数说明: RcvDataBuf,存放微处理器保存数据缓冲区 *
*返回值: 0;接收成功 *
* 1;接收失败 *
*说明: CAN控制器接收数据,仅限于接收数据 *
************************************************************************/
bit PCan_Data_Recv(unsigned char *RcvDataBuf, unsigned char *ucBufLen);
/************************************************************************
*函数原型: bit PCan_Cmd_Prg(unsigned char cmd) *
*参数说明: unsigned char cmd: sja1000运行的命令字 *
* 0x01: 发送请求 *
* 0x02:中止发送 *
* 0x04:释放接收缓冲区 *
* 0x08:清除超载状态 *
* 0x10: 自身接收请求位 *
* *
*返回值: *
* 0 ; 表示命令执行成功 *
* 1 ; 表示命令执行失败 *
* *
*说明: 执行sja1000命令 *
************************************************************************/
bit PCan_Cmd_Prg(unsigned char cmd);
#endif /* PeliCAN */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -