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

📄 csp_can.h

📁 IAR 平台ATMEL 的例程, 和说明
💻 H
📖 第 1 页 / 共 2 页
字号:
/*-----------------------------------------------------------------------------
*   EUROPE TECHNOLOGIES Software Support
*------------------------------------------------------------------------------
* The software is delivered "AS IS" without warranty or condition of any
* kind, either express, implied or statutory. This includes without
* limitation any warranty or condition with respect to merchantability or
* fitness for any particular purpose, or against the infringements of
* intellectual property rights of others.
*------------------------------------------------------------------------------
*
* File Name       : csp_can.h
* Description     : Definitions, Macros and function declarations for
*                   Controller Area Network module
* Library Version : 2.00
* Module Version  : 1.XX
*
*       +----- (NEW | MODify | ADD | DELete)                                 
*       |                                                                    
*  No   |   When       Who                What               
*-----+---+----------+------------------+--------------------------------------
* 000  NEW  01/05/99   Patrice VILCHEZ    Creation
* 001  ADD  28/07/00   Patrice VILCHEZ    Add peripheral & bits declaration
* 002  MOD  01/04/01   Olivier MAZUYER    Clean up
* 003  ADD  24/05/01   Tristan BONHOMME   Add Spy bit
* 004  ADD  26/05/01   Patrice VILCHEZ    Add CSP_CAN_GET_ID(ID) Macro
                                          Add CSP_CAN_SET_ID(ID) Macro
* 005  MOD  08/06/01   Frederic SAMSON    Clean Up
* 006  MOD  26/10/01   Christophe GARDIN  Clean Up
* 007  MOD  11/03/02   Christophe GARDIN  Add macros
* 008  MOD  24/06/02   Christophe GARDIN  Modify BD and DATA bits
* 006  MOD  21/11/02   Bruno SALLE		  Modification for SmartCAN1 (Nb channels = 16)
*----------------------------------------------------------------------------*/

#ifndef CSP_CAN_H
#define CSP_CAN_H


/******************************************************************************
************************** CAN Structure Definition ***************************
******************************************************************************/

/* Number of CAN Channels                                                    */
#define NB_CAN_CHANNEL     16u

/******************************************************************************
* CAN Channel Structure
******************************************************************************/

/*******************************************************************************
Type: CSP_CAN_CHANNEL_T
Description: CAN Channel Structure Definition
Fields:
- 创CSP_REGISTER_T创  ReservedA[5] :   
- 创CSP_REGISTER_T创  DRA :              Data Register A Channel X             
- 创CSP_REGISTER_T创  DRB :              Data Register B Channel X             
- 创CSP_REGISTER_T创  MSK :              Mask Register Channel X               
- 创CSP_REGISTER_T创  IR :               Identifier Register Channel X         
- 创CSP_REGISTER_T创  CR :               Control Register Channel X            
- 创CSP_REGISTER_T创  STP :              Stamp Register Channel X              
- 创CSP_REGISTER_T创  CSR :              Clear Status Register Channel X        
- 创CSP_REGISTER_T创  SR :               Status Register Channel X             
- 创CSP_REGISTER_T创  IER :              Interrupt Enable Register Channel X   
- 创CSP_REGISTER_T创  IDR :              Interrupt Disable Register Channel X  
- 创CSP_REGISTER_T创  IMR :              Interrupt Mask Register Channel X     
*******************************************************************************/
typedef struct
{ 
   CSP_REGISTER_T  ReservedA[5];   
   CSP_REGISTER_T  DRA;             /* Data Register A Channel X             */
   CSP_REGISTER_T  DRB;             /* Data Register B Channel X             */
   CSP_REGISTER_T  MSK;             /* Mask Register Channel X               */
   CSP_REGISTER_T  IR;              /* Identifier Register Channel X         */
   CSP_REGISTER_T  CR;              /* Control Register Channel X            */
   CSP_REGISTER_T  STP;             /* Stamp Register Channel X              */
   CSP_REGISTER_T  CSR;             /* Clear Status Register Channel X       */ 
   CSP_REGISTER_T  SR;              /* Status Register Channel X             */
   CSP_REGISTER_T  IER;             /* Interrupt Enable Register Channel X   */
   CSP_REGISTER_T  IDR;             /* Interrupt Disable Register Channel X  */
   CSP_REGISTER_T  IMR;             /* Interrupt Mask Register Channel X     */
} CSP_CAN_CHANNEL_T;

/******************************************************************************
* CAN Structure 32 Channels
******************************************************************************/

/*******************************************************************************
Type: CSP_CAN_T
Description: CAN Structure Definition
Fields:
- 创CSP_REGISTER_T创     ReservedA[20] : 
- 创CSP_REGISTER_T创     ECR :           Enable Clock Register                 
- 创CSP_REGISTER_T创     DCR :           Disable Clock Register                
- 创CSP_REGISTER_T创     PMSR :          Power Management Status Register      
- 创CSP_REGISTER_T创     ReservedB :      
- 创CSP_REGISTER_T创     CR :            Control Register                      
- 创CSP_REGISTER_T创     MR :            Mode Register                         
- 创CSP_REGISTER_T创     ReservedC :      
- 创CSP_REGISTER_T创     CSR :           Clear Status Register                 
- 创CSP_REGISTER_T创     SR :            Status Register                       
- 创CSP_REGISTER_T创     IER :           Interrupt Enable Register             
- 创CSP_REGISTER_T创     IDR :           Interrupt Disable Register            
- 创CSP_REGISTER_T创     IMR :           Interrupt Mask Register               
- 创CSP_REGISTER_T创     CISR :          Clear Interrupt Source Register       
- 创CSP_REGISTER_T创     ISSR :          Interrupt Source Status Register      
- 创CSP_REGISTER_T创     SIER :          Source Interrupt Enable Register      
- 创CSP_REGISTER_T创     SIDR :          Source Interrupt Disable Register     
- 创CSP_REGISTER_T创     SIMR :          Source Interrupt Mask Register        
- 创CSP_REGISTER_T创     ReservedD[22] :  
- 创CSP_CAN_CHANNEL_T创  CHANNEL[NB_CAN_CHANNEL] :   CAN Channels              
*******************************************************************************/
typedef struct
{ 
   CSP_REGISTER_T     ReservedA[20]; 
   CSP_REGISTER_T     ECR;          /* Enable Clock Register                 */
   CSP_REGISTER_T     DCR;          /* Disable Clock Register                */
   CSP_REGISTER_T     PMSR;         /* Power Management Status Register      */
   CSP_REGISTER_T     ReservedB;      
   CSP_REGISTER_T     CR;           /* Control Register                      */
   CSP_REGISTER_T     MR;           /* Mode Register                         */
   CSP_REGISTER_T     ReservedC;      
   CSP_REGISTER_T     CSR;          /* Clear Status Register                 */
   CSP_REGISTER_T     SR;           /* Status Register                       */
   CSP_REGISTER_T     IER;          /* Interrupt Enable Register             */
   CSP_REGISTER_T     IDR;          /* Interrupt Disable Register            */
   CSP_REGISTER_T     IMR;          /* Interrupt Mask Register               */
   CSP_REGISTER_T     CISR;         /* Clear Interrupt Source Register       */
   CSP_REGISTER_T     ISSR;         /* Interrupt Source Status Register      */
   CSP_REGISTER_T     SIER;         /* Source Interrupt Enable Register      */
   CSP_REGISTER_T     SIDR;         /* Source Interrupt Disable Register     */
   CSP_REGISTER_T     SIMR;         /* Source Interrupt Mask Register        */
   CSP_REGISTER_T     ReservedD[22];  
   CSP_CAN_CHANNEL_T  CHANNEL[NB_CAN_CHANNEL];  /* CAN Channels              */
} CSP_CAN_T;


/******************************************************************************
************************** CAN Registers Definition ***************************
******************************************************************************/

/******************************************************************************
* ECR, DCR, PMSR : CAN Power Management Registers
******************************************************************************/
#define CAN          (0x01ul << 1)              /* CAN Clock                 */

/******************************************************************************
* CR : CAN Control Register
******************************************************************************/
#define SWRST        (0x01ul << 0)              /* CAN Software Reset        */  
#define CANEN        (0x01ul << 1)              /* CAN Enable                */ 
#define CANDIS       (0x01ul << 2)              /* CAN Disable               */ 
#define ABEN         (0x01ul << 3)              /* Abort Request Enable      */ 
#define ABDIS        (0x01ul << 4)              /* Abort Request Disable     */ 
#define OVEN         (0x01ul << 5)              /* Overload Request Enable   */ 
#define OVDIS        (0x01ul << 6)              /* Overload Request Disable  */ 

/******************************************************************************
* MR : CAN Mode Register
******************************************************************************/
/* BD : Baud rate Prescalar                                                  */
#define BD_MASK      (0x3Ful << 0)              /* Mask                      */
#define BD(val)      (((val) & 0x3Ful) << 0)    /* Writing Macro             */

/* PROP : Propagation Segment Value                                          */
#define PROP_MASK    (0x07ul << 8)              /* Mask                      */
#define PROP(val)    (((val) & 0x07ul) << 8)    /* Writing Macro             */

/* SJW : Synchronization Jump width                                          */
#define SJW_MASK     (0x03ul << 12)             /* Mask                      */
#define SJW(val)     (((val) & 0x03ul) << 12)   /* Writing Macro             */

#define SMP          (0x01ul << 14)             /* Sampling Mode             */

/* PHSEG1 : Phase Segment 1 Value                                            */
#define PHSEG1_MASK  (0x07ul << 16)             /* Mask                      */    
#define PHSEG1(val)  (((val) & 0x07ul) << 16)   /* Writing Macro             */    
                                                
/* PHSEG2 : Phase Segment 2 Value                                            */
#define PHSEG2_MASK  (0x07ul << 20)             /* Mask                      */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -