⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.h

📁 ZLG MINIARM-N20源代码
💻 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 + -