📄 csp_can.h
字号:
/*-----------------------------------------------------------------------------
* 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 + -