📄 can.h
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: CAN.H
** Last modified Date: 2005年11月15日
** Last Version: V1.1
** Descriptions: CAN操作函数声明(为MiniARM定制的CAN驱动函数库)
**--------------------------------------------------------------------------------------------------------
** Created by: 滕欣欣
** Created date: 2007-07-01
** Version: 1.00
** Descriptions: The original version
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
*********************************************************************************************************/
#ifndef __CAN_H
#define __CAN_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*********************************************************************************************************
CAN控制器通道定义
*********************************************************************************************************/
#define CAN1 0
#define CAN2 1
#define CAN3 2
#define CAN4 3
enum LPC_AF_CANCH {AF_CH1=0, AF_CH2, AF_CH3, AF_CH4};
/*********************************************************************************************************
CAN验收滤波相关定义
*********************************************************************************************************/
typedef unsigned long long ulint64; /* 无符号64位长整形数 */
typedef unsigned long ulint32; /* 无符号32位长整形数 */
typedef struct canaftab { /* 验收滤波表格结构体定义 */
uint16 *pusSigSFTab; /* 标准帧验收滤波离散表格指针 */
uint32 uiSSFTabLen; /* 标准帧验收滤波离散表格长度 */
ulint32 *puiGrpSFTab; /* 标准帧验收滤波范围表格指针 */
uint32 uiGSFTabLen; /* 标准帧验收滤波范围表格长度 */
ulint32 *puiSigEFTab; /* 扩展帧验收滤波离散表格指针 */
uint32 uiSEFTabLen; /* 扩展帧验收滤波离散表格长度 */
ulint64 *pullGrpEFTab; /* 扩展帧验收滤波范围表格指针 */
uint32 uiGEFTabLen; /* 扩展帧验收滤波范围表格长度 */
}CANAFTAB;
/*********************************************************************************************************
CAN验收滤波表格元素格式及填充宏定义
*********************************************************************************************************/
#define AF_SSF(CH, SF) (((CH) << 13) | ((SF) & 0x7FF)) /* 标准帧验收过滤离散表格数据 */
/* 16位宽 */
#define AF_GSF(CH, LWSF, UPSF) (((AF_SSF(CH, LWSF)) << 16) | AF_SSF(CH, UPSF))
/* 标准帧验收过滤范围表格数据 */
/* 32位宽 */
#define AF_SEF(CH, EF) (((CH) << 29) | ((EF) & 0x1FFFFFFF)) /* 扩展帧验收过滤离散表格数据 */
/* 32位宽 */
#define AF_GEF(CH, LWEF, UPEF) ((((ulint64)AF_SEF(CH, LWEF)) << 32) | AF_SEF(CH, UPEF))
/*********************************************************************************************************
重新设置各种模式
*********************************************************************************************************/
#define SET_BAUDRATE 0 /* 设置CAN波特率 */
#define SET_CTRLMODE 1 /* 设置CAN模式:正常,只听,自测试*/
#define SET_AFMODE 2 /* 设置CAN验收滤波 */
/*********************************************************************************************************
发送模式定义
*********************************************************************************************************/
#define CANTxCMD_NOR 0x00 /* 正常发送 */
#define CANTxCMD_SIG 0x01 /* 单次发送 */
#define CANTxCMD_SEL 0x02 /* 自发自收 */
#define CANTxCMD_SIGSEL 0x03 /* 单次自发自收 */
/*********************************************************************************************************
** Function name: CANInit
**
** Descriptions: CAN初始化
**
** input parameters: ID : CAN设备标示
** Arg : 配置参数字符窜指针
** Rsv : 预留参数
** Returned value: 操作成功 : 1
** 操作失败 : 0
*********************************************************************************************************/
extern int32 CANInit(uint32 ID,
char *arg,
void *Rsv);
/*********************************************************************************************************
** Function name: CANSetMode
**
** Descriptions: CAN工能模式设置
**
** input parameters: ID : TIMER设备标示
** CMD : 命令参数
** Arg : 配置参数字符窜指针
** Returned value: 操作成功 : 1
** 操作失败 : 0
*********************************************************************************************************/
extern int32 CANSetMode(uint32 ID,
uint32 CMD,
char *Arg);
/*********************************************************************************************************
** Function name: CANRead
**
** Descriptions: 接收数据操作
**
** input parameters: ID : 子设备号
** buf : 数据存放地址
** n : 读取字节个数
** Rsv : 保留参数
** Returned value: 成功读取字节个数
*********************************************************************************************************/
extern int32 CANRead(uint32 ID,
stcCANFrame *buf,
uint32 n,
void *Rsv);
/*********************************************************************************************************
** Function name: CANWrite
**
** Descriptions: 发送数据操作
**
** input parameters: ID : 子设备号
** buf : 数据存放地址
** n : 读取字节个数
** Rsv : 保留参数
** Returned value: 成功发送字节个数
*********************************************************************************************************/
extern int32 CANWrite(uint32 ID,
stcCANFrame *buf,
uint32 n,
void *Rsv);
/*********************************************************************************************************
** Function name: IntEnty
**
** Descriptions: 该函数为CAN的中断处理函数,在uCosII系统中,该函数由系统设置的中断入口调用
**
** input parameters: none
** Returned value: none
*********************************************************************************************************/
void IntEnty(void);
__inline void CAN_ISR(void)
{
IntEnty();
/*
* 添加用户代码
*/
VICVectAddr = 0x00;
}
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __CAN_H */
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -