⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sjabca~3.c

📁 SMALLrtos下的CAN通信远码
💻 C
字号:
/*
********************************************************************************************************************
**描述:    独立的CAN 控制器SJA1000应用函数实现,用户可自由修改
**文件名:   SJABcanOS.c
**应用语言: KEIL C51
**版本 :    V1.0
**广州周立功单片机发展有限公司 保留所有的版权
********************************************************************************************************************
*/
#define		_SJABCANOS_GLOBAL_
		
/*
************************************************************************************************************************
**							 导入头文件
************************************************************************************************************************
*/
#include	"includes.H"

/*
***********************************************************************
*以下为应用函数实现源代码                                 *
***********************************************************************
*/
	/*
	***********************************************************************
	 *函数原型: bit   BCAN_HW_INIT(unsigned char  BCAN_ACR, 				*
	 *										 unsigned char	BCAN_AMR,		*
	 *										 unsigned char	Bus_Timing0,	*
	 *										 unsigned char	Bus_Timing1,	*
	 *										 unsigned char	Out_Control,	*
	 *										 unsigned char	Clock_Out		*
	 *										 )								*
	 *参数说明: 															*
	 *	  BCAN_ACR:存放验收代码寄存器(ACR)的参数设置						*
	 *	  BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置						*
	 *	  Bus_Timing0:存放总线定时0寄存器(BTR0)的参数设置					*
	 *	  Bus_Timing1:存放总线定时1寄存器(BTR1)的参数设置					*
	 *	  Out_Control:存放输出控制寄存器 (OC)  的参数设置					*
	 *	  Clock_Out:存放时钟分频寄存器 (CDR) 的参数设置 					*
	 *																		*						 
	 *返回值:																*
	 *			 0 ; 表示初始化成功 										*
	 *			 1 ; 表示初始化失败 										*
	 *																		* 
	 *说明:CAN控制器的初始化只能在复位模式下才能完成。初始化操作之前请先进入*
	 *	   到复位操作模式,并将要初始化的各参数的值按数据手册中的计算方法,正 *
	 *	   确的按实际需要计算好参数后,将参数写入对应的寄存器 。			*
	 *注: 为了CAN控制器的正确运行,请务必仔细的阅读SJA1000的数据手册		*
	 *																		*
	 *示例:设应用系统中晶体频率16MHZ,节点只接收ID(标志符)高八位为		*
	 *		'10101010'的消息,系统波特率为50Kbit/s,关闭CLKOUT输出。 		*
	 *		则根据数据手册中的计算方法的各参数如下:						*
	 *		ACR==0AAH,AMR==00H,BTR0==0C9H,BTR1==0C9H,OC==0FFH,CDR=48H		*
	 * 则调用本函数为: 													*
	 *	   BCAN_HW_INIT(0xaa,0x00,0xc9,0xc9,0xff,0x48)						*					  
	 ***********************************************************************
	 */
	  bit	BCAN_HW_INIT(unsigned char	BCAN_ACR,		
						  unsigned char  BCAN_AMR,		
						  unsigned char  BandRate,	
						  unsigned char  Out_Control,	 
						  unsigned char  Clock_Out		
						  )
	{
		bit 	Flag =1;
		if(BCAN_CREATE_COMMUNATION() != 0)
		{
			return Flag;				
		}
		if(BCAN_ENTRY_RETMODEL() != 0)
		{
			return Flag;	
		}
		if(BCAN_SET_OBJECT(BCAN_ACR,BCAN_AMR)!=0)
		{
			return Flag;	
		}
		if(BCAN_SET_BANDRATE(BandRate) !=0)
		{
			return Flag;
		}
		if(BCAN_SET_OUTCLK(Out_Control,Clock_Out) !=0)
		{
			return Flag;
		}
		if(BCAN_QUIT_RETMODEL() !=0)
		{
			return Flag;
		}
		Flag=0;
		return Flag;
	}
	/*
	************************************************************************************************************************
	**函数原型:  void	SJASendData(unsigned	char			*databuf,
	**									unsigned	char	cmd
	**									)
	**参数说明:  databuf	存放要发送到总线的特定帧格式的数据的缓冲区首地址
	**				cmd 	发送命令	
	**返回值:	
	**说明:	本函数用于向can总线发送数据
	************************************************************************************************************************
	*/
	void	SJASendData(unsigned	char			*databuf,
							unsigned	char	cmd
													)
	{
		
		if(BCAN_DATA_WRITE(databuf) == 0)
		{
			BCAN_CMD_PRG(cmd);
		}
	}
	
	/*
	************************************************************************************************************************
	**函数原型:  void	SJARcvData(unsigned char			*databuf)
	**参数说明:  databuf	存放要接收数据缓冲区首地址
	**			 
	**返回值:		
	**说明:	本函数用于接收can总线数据
	************************************************************************************************************************
	*/
	unsigned char	SJARcvData(unsigned char	*databuf)
	{
		if(BCAN_DATA_RECEIVE(databuf) == 0)
		{
			BCAN_CMD_PRG(RRB_CMD);
			return 0;
		}
		else
			return 1;
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -