/* * can_api.h * * Created on: 2010-5-31 * Author: zhl */ #ifndef CAN_API_H_ #define CAN_API_H_ #include "em9x60_drivers.h" /* special address description flags for the CAN_ID */ #define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */ #define CAN_RTR_FLAG 0x40000000U /* remote transmission request */ #define CAN_ERR_FLAG 0x20000000U /* error frame */ /** * struct can_frame - basic CAN frame structure * @can_id: the CAN ID of the frame and CAN_*_FLAG flags, see above. * bit 0-28: CAN identifier (11/29 bit) * bit 29 : error frame flag (0 = data frame, 1 = error frame) * bit 30 : remote transmission request flag (1 = rtr frame) * bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit) * @can_dlc: the data length field of the CAN frame * @data: the CAN frame payload. */ #ifdef EMTRONIX_EM9360 struct can_frame{ unsigned int can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ unsigned char can_dlc; /* data length code: 0 .. 8 */ unsigned char data[8] __attribute__((aligned(8))); } ; #elif defined (WIN32) struct can_frame{ unsigned int can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ unsigned char can_dlc; /* data length code: 0 .. 8 */ unsigned char data[8]; } ; #endif /* * 功能描述:设置CAN控制芯片为操作模式。 * 输入参数: * fd: CAN设备文件描述符 * 返回值: * 0: 成功 * <0: 失败 */ int CAN_StartChip( int fd ); /* * 功能描述:设置CAN控制芯片为复位模式。 * 输入参数: * fd: CAN设备文件描述符 * 返回值: * 0: 成功 * <0: 失败 */ int CAN_StopChip( int fd ); /* * 功能描述:设置CAN通讯的波特率 * 输入参数: * fd: CAN设备文件描述符 * Baud: 枚举变量,分别对应不同的波特率 * CAN_BAUDRATE_10K = 0: 10Kbps * CAN_BAUDRATE_20K = 1: 20Kbps * CAN_BAUDRATE_50K = 2: 50Kbps * CAN_BAUDRATE_100K = 3: 100Kbps * CAN_BAUDRATE_125K = 4: 125Kbps * CAN_BAUDRATE_250K = 5: 250Kbps * CAN_BAUDRATE_500K = 6: 500Kbps * CAN_BAUDRATE_1000K = 7: 1Mbps * CAN_BAUDRATE_60K = 8: 60Kbps * 返回值: * 0: 成功 * <0: 失败 */ int CAN_SetBaudRate( int fd , CAN_BAUDRATE Baud ); /* * 功能描述:设置CAN通讯验收滤波器配置 * 输入参数: * fd: CAN设备文件描述符 * *AcceptanceFilter: 验收滤波器结构指针 * struct accept_filter * { * unsigned int accept_code; * unsigned int accept_mask; * unsigned char filter_mode; * }; * accept_code: 滤波器接收码 * accept_mask: 滤波器屏蔽码 * filter_mode: 0-双滤波器 1-单滤波器 * * 返回值: * 0: 成功 * <0: 失败 */ int CAN_SetGlobalAcceptanceFilter( int fd , accept_filter *AcceptanceFilter ); /* * 功能描述:用于启动或关闭CAN自检测模式 * 输入参数: * fd: CAN设备文件描述符 * Mode: 1-启动自检测模式 * 0-关闭自检测模式,返回正常模式 * 返回值: * 0: 成功 * <0: 失败 */ int CAN_SelfTest( int fd , int Mode ); /* * 功能描述:获取CAN通讯时的错误编码 * 输入参数: * fd: CAN设备文件描述符 * 输出参数: * *ErrorPtr:错误编码 * 返回值: * 0: 成功 * <0: 失败 */ int CAN_GetError( int fd , unsigned int *ErrorPtr); /* * 功能描述:获取CAN通讯中相关统计数据以及CAN控制芯片的状态寄存器值 * 输入参数: * fd: CAN设备文件描述符 * 输出参数: * *DriverStatistics:得到相应统计结构数据 * 返回值: * 0: 成功 * <0: 失败 */ int CAN_GetCANDriverStatistics( int fd , drv_statistics *DriverStatistics ); #endif /* CAN_API_H_ */