📄 canfunc.h
字号:
/****************************************Copyright (c)**************************************************
** 河南恩湃电力技术有限公司
** 测 控 部
**
**
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
** 文 件 名: CANFUNC.H
** 版 本:
** 日 期:
** 描 述: CAN模块功能操作函数定义头文件
********************************************************************************************************/
#ifndef _CANFUNC_H_
#define _CANFUNC_H_
//函数、变量定位方式定义
#ifndef _CANFUNC_GLOBAL_
#define CANFUNC_GLOBAL extern
#else
#define CANFUNC_GLOBAL
#endif
/*
***********************************************************************************************************
**函数原型 : void HwRstCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于硬件复位CAN控制器,主要是CAN模块掉电,用于省电处理
************************************************************************************************************/
CANFUNC_GLOBAL void HwRstCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : void HwEnCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于硬件使能CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL void HwEnCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : UINT32 SoftRstCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0,表示复位成功; !=0,复位不成功;
**说 明 : 本函数用于软件复位CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL UINT32 SoftRstCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : UINT32 SoftEnCAN (eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0,表示成功使CAN控制器进入工作模式; !=0,不成功;
**说 明 : 本函数用于软件使能CAN控制器
************************************************************************************************************/
CANFUNC_GLOBAL UINT32 SoftEnCAN(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : void CanSendCmd(eCANNUM CanNum,UINT32 Cmd,UINT32 TxBuf)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
Cmd à> 发送命令字
TxBuf à> 选择发送缓冲区
**返回值 :
**说 明 : 本函数用于发送命令处理
************************************************************************************************************/
#define NOM_SEND_CMD 0
#define SIG_SEND_CMD 1
#define SLF_SEND_CMD 2
#define SSR_SEND_CMD 3
#define SEND_TX_BUF1 1
#define SEND_TX_BUF2 2
#define SEND_TX_BUF3 4
CANFUNC_GLOBAL void CanSendCmd(eCANNUM CanNum,UINT32 Cmd,UINT32 TxBuf);
/*
*************************************************
验收过滤寄存器专用函数
*************************************************
*/
/*
*********************************************************************
** LUTERR寄存器的错误枚举
*********************************************************************
*/
enum LUT_BUILD_ERR
{
LUT_SETTING_OK = 0,
TOTAL_SIZE_TOO_LARGE = 1,
FCAN_SIZE_TOO_LARGE = 2,
EFF_GRP_SIZE_INVALID = 3,
FCAN_STORE_SIZE_INVALID = 4,
TABLE_CELL_TOO_LARGE = 5,
CELL_NUM_INVALID = 6,
CELL_CONTENT_INVALID = 7
};
/*
*********************************************************************
** 验收过滤控制器的模式枚举
*********************************************************************
*/
enum AFMode
{
Bypass = 1,
Normal,
FullCAN,
Ignored
};
/*
***********************************************************************************************************
**函数原型 : 宏定义函数 RelCanRecBuf(CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 :
**说 明 : 本函数用于释放接收缓冲区
************************************************************************************************************/
#define RelCanRecBuf(CanNum) CANCMR(CanNum).Bits.RRB_BIT=1
/*
***********************************************************************************************************
**函数原型 : 宏定义函数 ClrCanDataOver (CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 :
**说 明 : 本函数用于释放接收缓冲区
************************************************************************************************************/
#define ClrCanDataOver(CanNum) CANCMR(CanNum).Bits.CDO_BIT=1
/*
***********************************************************************************************************
**函数原型 : 宏定义函数 CanBufOffLinePrg(CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : 无
**说 明 : 本函数用于CAN控制器出现总线关闭错误处理
***********************************************************************************************************
*/
#define CanBufOffLinePrg(CanNum) if(CANMOD(CanNum).Bits.RM_BIT != 0) \
{ \
CANGSR(CanNum).Word=0; \
CANMOD(CanNum).Bits.RM_BIT=0x00; \
CANCMR(CanNum).Word=0x02; \
}
/*
***********************************************************************************************************
**函数原型 : UINT32 CanEntrySM(CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0;成功进入睡眠状态;
!=0;不能进入睡眠状态;
**说 明 : 本函数用于使CAN控制器进入休眠模式
***********************************************************************************************************
*/
CANFUNC_GLOBAL UINT32 CanEntrySM(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : UINT32 CanQuitSM(eCANNUM CanNum)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值 : =0;成功退出睡眠状态;
!=0;不能退出睡眠状态;
**说 明 : 本函数用于使CAN控制器退出休眠模式
***********************************************************************************************************
*/
CANFUNC_GLOBAL UINT32 CanQuitSM(eCANNUM CanNum);
/*
***********************************************************************************************************
**函数原型 : UINT32 WriteCanTxBuf(eCANNUM CanNum,UINT32 TxBufNum,
UINT32 TPM,P_stcTxBUF Buf) ;
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
TxBufNum à> 选择发送缓冲区
TPM à> 发送优先级模式
Buf à> 发送到总线的数据
**返回值 : =0;成功将数据写入发送缓冲区
!=0;写发送缓冲区操作失败
**说 明 : 本函数用于向CAN发送缓冲区TxBUF写入发送数据
***********************************************************************************************************
*/
CANFUNC_GLOBAL UINT32 WriteCanTxBuf(eCANNUM CanNum,UINT32 TxBufNum,
UINT32 TPM,P_stcTxBUF Buf) ;
/*
***********************************************************************************************************
**函数原型 : void ReadCanRxBuf(eCANNUM CanNum,P_stcRxBUF Buf)
**参数说明 : CanNum -->> CAN控制器,值不能大于CAN_MAX_NUM 规定的值
Buf à> 接收CAN总线数据
**返回值 :
**说 明 : 本函数用于从CAN控制器RxBuf中读取数据
***********************************************************************************************************
*/
CANFUNC_GLOBAL void ReadCanRxBuf(eCANNUM CanNum,P_stcRxBUF Buf);
#endif
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -