143 lines
3.5 KiB
C
143 lines
3.5 KiB
C
/*
|
||
* 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_ */
|