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

📄 can.h

📁 我个人编写的车载dvd上的程序
💻 H
字号:
/*******************************************************************************
| File Name    : can.h

*******************************************************************************/

/* user transmmit structure */
typedef volatile struct
{
	unsigned short stdid;
	unsigned short extid;
	unsigned char dlc;
	unsigned char data[8];
	unsigned char Flag;
} tCanMsgOject;


extern volatile unsigned char Can_Page;

/* Exported constants --------------------------------------------------------*/
#define CanSavePg()     (Can_Page = CAN_FPSR)
#define CanRestorePg()  (CAN_FPSR = Can_Page)

/*-- Bit defines -----------------------------------------------------------*/
#define CAN_TXMB0_PG       ((unsigned char) 0) /* CAN TX mailbox 0 reg page */
#define CAN_TXMB1_PG       ((unsigned char) 1) /* CAN TX mailbox 1 reg page */
#define CAN_FILTER01_PG    ((unsigned char) 2) /* CAN Filters 0 & 1 reg page*/
#define CAN_FILTER23_PG    ((unsigned char) 3) /* CAN Filters 2 & 3 reg page*/
#define CAN_FILTER45_PG    ((unsigned char) 4) /* CAN Filters 4 & 5 reg page*/
#define CAN_TXMB2_PG       ((unsigned char) 5) /* CAN TX mailbox 2 reg page */
#define CAN_CTRL_PG        ((unsigned char) 6) /* CAN control/status reg page*/
#define CAN_FIFO_PG        ((unsigned char) 7) /* CAN FIFO registers page */

#define MCSR_ABRQ          ((unsigned char)0x40)
#define MCSR_TXRQ          ((unsigned char)0x01)
#define MCSR_RQCP          ((unsigned char)0x04)

#define CMCR_TTCN          ((unsigned char)0x80)
#define CMCR_ABOM          ((unsigned char)0x40)
#define CMCR_AWUM          ((unsigned char)0x20)
#define CMCR_NART          ((unsigned char)0x10)
#define CMCR_RFLM          ((unsigned char)0x08)
#define CMCR_TXFP          ((unsigned char)0x04)
#define CMCR_SLEEP         ((unsigned char)0x02)
#define CMCR_INRQ          ((unsigned char)0x01)

#define CMSR_SLAK          ((unsigned char)0x02)
#define CMSR_INAK          ((unsigned char)0x01)
#define CMSR_ERRI          ((unsigned char)0x04)
#define CMSR_WKUI          ((unsigned char)0x08)
#define CMSR_REC           ((unsigned char)0x20)

#define CTSR_RQCP0         ((unsigned char)0x01)
#define CTSR_RQCP1         ((unsigned char)0x02)
#define CTSR_RQCP2         ((unsigned char)0x04)
#define CTSR_TXOK0         ((unsigned char)0x10)
#define CTSR_TXOK1         ((unsigned char)0x20)

#define CTPR_TME0          ((unsigned char)0x04)
#define CTPR_TME1          ((unsigned char)0x08)
#define CTPR_TME2          ((unsigned char)0x10)

#define CRFR_RFOM          ((unsigned char)0x20)
#define CRFR_FOVR          ((unsigned char)0x10)
#define CRFR_FULL          ((unsigned char)0x08)
#define CRFR_FMP01         ((unsigned char)0x03)

#define CESR_BOFF          ((unsigned char)0x04)
#define CESR_EPVF          ((unsigned char)0x02)
#define CESR_EWGF          ((unsigned char)0x01)

#define CDGR_RX            ((unsigned char)0x08)
#define CDGR_3TX           ((unsigned char)0x10)
#define CDGR_LBKM          ((unsigned char)0x01)
#define CDGR_SILM          ((unsigned char)0x02)


#define CIER_WKUIE         0x80
#define CIER_FOVIE         0x08
#define CIER_FFIE          0x04
#define CIER_FMPIE         0x02
#define CIER_TMEIE         0x01

#define CEIER_ERRIE        0x80
#define CEIER_LECIE        0x10
#define CEIER_BOFIE        0x04
#define CEIER_EPVIE        0x02
#define CEIER_EWGIE        0x01

/* Return Status by the driver function */ 
#define KCANTXFAILED	((unsigned char) 0x00)
#define KCANTXOK		((unsigned char) 0x01)


/*-- CAN bit timing parameters ------------------------------------------------*/
/* Note: 8 <= total number of TIME QUANTUM (Tq) <= 25 */
/*******************************************************************************
 Constant Name: SJW
 Description  : Resynchronization Jump Width
 Value range  : from 1 to 4
 Comments     : The decrease by 1 for register write is made automatically.
*******************************************************************************/
#define CAN_SJW ((unsigned char) 3)

/*******************************************************************************
Constant name: BRP
Description  : Baud Rate Prescaler - define length of Tq
Value range  : from 1 to 64
Comments     : The decrease by 1 for register write is made automatically.
*******************************************************************************/
/* Baud rate = 125 Kbps @ (16 Tq & Fcpu = 8 MHz) */
//#define CAN_BRP ((unsigned char) 8)

/* Baud rate = 100 Kbps @ (16 Tq & Fcpu = 8 MHz) */
#define CAN_BRP ((unsigned char) 10)

/*******************************************************************************
Constant name: TSEG1
Description  : Time Segment 1 (+ prop. seg.)
Value range  : from 1 to 16              
Comments     : The decrease by 1 for register write is made automatically.
*******************************************************************************/
#define CAN_TSEG1 ((unsigned char) 4)

/*******************************************************************************
Constant name: TSEG2
Description  : Time Segment 2
Value range  : from 1 to 8        
Comments     : The decrease by 1 for register write is made automatically.
*******************************************************************************/
#define CAN_TSEG2 ((unsigned char) 3)


/* CAN BIT TIMING REGISTERS */
#define CAN_CBTR0_REGISTER (unsigned char)  ( ((CAN_SJW-1 & 0x03)<<6) | ((CAN_BRP-1) & 0x3f) )
#define CAN_CBTR1_REGISTER (unsigned char)  ( ((CAN_TSEG2-1 & 0x07)<<4) | ((CAN_TSEG1-1) & 0x0f) )


/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
extern void CAN_Init (unsigned char);
extern void CAN_WakeUp (void);
extern void CAN_EnableDiagMode (unsigned char);
extern void CAN_DisableDiagMode (void);
extern unsigned char CanMsgTransmit (tCanMsgOject*);
extern void CAN_Sleep (void);
extern void CanCanInterruptDisable (void);
extern void CanCanInterruptRestore (void);



/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

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