2025-04-30 16:24:29 +08:00

143 lines
3.5 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */