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

📄 can2510.h

📁 pic系列单片机头文件源文件(c18 开发环境)
💻 H
📖 第 1 页 / 共 2 页
字号:
#define CAN2510_INT_XMT2      0xEF
#define CAN2510_TXB2_EN       0xEF
#define CAN2510_INT_XMT1      0xF7
#define CAN2510_TXB1_EN       0xF7
#define CAN2510_INT_XMT0      0xFB
#define CAN2510_TXB0_EN       0xFB
#define CAN2510_INT_RCV1      0xFD
#define CAN2510_RXB1_EN       0xFD
#define CAN2510_INT_RCV0      0xFE
#define CAN2510_RXB0_EN       0xFE
#define CAN2510_INT_NONE      0xFF
#define CAN2510_NONE_EN       0xFF


/*****************************************************************************/
/****                                                                     ****/
/****  SPI_SYNCMODE - unsigned char (BYTE)                                ****/
/****                                                                     ****/
/*****************************************************************************/
/****  PICmicro  SPI Settings settings                           ****/
/****  CKE and CKP bits, SSPSTAT and SSPCON1 Register settings   ****/
/****  These bits are stored in (BYTE)                           ****/
/****  Specify which SPI mode is used (mode 00 or 10)            ****/
#define CAN2510_SPI_MODE00    MODE_00             // CKE = 1, CKP = 0   (10)
#define CAN2510_SPI_MODE01    MODE_01             // CKE = 0, CKP = 0   (00)


/*****************************************************************************/
/****                                                                     ****/
/****  SPI_SMPMODE - unsigned char (BYTE)                                 ****/
/****                                                                     ****/
/*****************************************************************************/
/****  PICmicro  SPI Settings settings                           ****/
/****  SMP bit, SSPSTAT Register settings                        ****/
/****  These bits are stored in (BYTE)                           ****/
/****  Specify where the data is sampled (middle or end of bit)  ****/
#define CAN2510_SPI_SMPEND    SMPEND              // 1
#define CAN2510_SPI_SMPMID    SMPMID              // 0


/*****************************************************************************/
/****                                                                     ****/
/****  SPI_BUSMODE - unsigned char (BYTE)                                 ****/
/****                                                                     ****/
/*****************************************************************************/
/****  PICmicro  SPI Settings settings                           ****/
/****  SSPM3:SSPM0 bits, SSPCON1 Register settings               ****/
/****  These bits are stored in (BYTE)                           ****/
/****  Specify the clock rate of the SPI communication           ****/
#define CAN2510_SPI_FOSC4     SPI_FOSC_4             // 0000
#define CAN2510_SPI_FOSC16    SPI_FOSC_16            // 0001
#define CAN2510_SPI_FOSC64    SPI_FOSC_64            // 0010
#define CAN2510_SPI_FOSCTMR2  SPI_FOSC_TMR2          // 0011
                                                     // 11xx  Not Applicable

/*****************************************************************************/
/****                                                                     ****/
/****      Definitions of Variables for:                                  ****/
/****              Return Values                                          ****/
/****              Values to write (with appropriate mask)                ****/
/****              comparisions                                           ****/
/****                                                                     ****/
/*****************************************************************************/

/* CAN processor mode */
#define CAN2510_MODE_NORMAL   0x00 /* Normal (send and receive messages)   */
#define CAN2510_MODE_SLEEP    0x20 /* Wait for interrupt                   */
#define CAN2510_MODE_LOOPBACK 0x40 /* Testing - messages stay internal     */
#define CAN2510_MODE_LISTEN   0x60 /* Listen only -- don't send            */
#define CAN2510_MODE_CONFIG   0x80 /* Configuration (1XX0 0000 is Config)  */

/* XMIT Message priority */
#define CAN2510_PRI_HIGHEST   0x3
#define CAN2510_PRI_HIGH      0x2
#define CAN2510_PRI_LOW       0x1
#define CAN2510_PRI_LOWEST    0x0

/* No data to be read flag */
#define CAN2510_NO_DATA      0x00  /* No data to be read                            */
#define CAN2510_XTDRTR       0x01  /* Remote transmission request (XTD Message ID)  */
#define CAN2510_STDRTR       0x02  /* Remote transmission request (STD Message ID)  */
#define CAN2510_XTDMSG       0x03  /* Extended format message received              */
#define CAN2510_STDMSG       0x04  /* Standard format message received              */

/* Handy identifiers for buffer numbers */
#define CAN2510_BUF_0        0x00
#define CAN2510_BUF_1        0x01
#define CAN2510_BUF_2        0x02

#define CAN2510_RXB0         0x00
#define CAN2510_RXB1         0x01
#define CAN2510_RXBX         0x02   // Either (or both) of RXB0 and RXB1

#define CAN2510_TXB0         0x00
#define CAN2510_TXB1         0x01
#define CAN2510_TXB2         0x02
//#define CAN2510_TXBX         0x03   // Any (or all) of TXB0, TXB1, and TXB2
#define CAN2510_TXB0_B1      0x03
#define CAN2510_TXB0_B2      0x05
#define CAN2510_TXB1_B2      0x06
#define CAN2510_TXB0_B1_B2   0x07


/* Handy identifiers for buffer masks */
#define CAN2510_RXM0         0x00               // Mask for RXB0
#define CAN2510_RXM1         0x01               // Mask for RXB1

/* Handy identifiers for buffer filters */
#define CAN2510_RXF0         0x00               // Filter 0 for RXB0
#define CAN2510_RXF1         0x01               // Filter 1 for RXB0
#define CAN2510_RXF2         0x02               // Filter 2 for RXB1
#define CAN2510_RXF3         0x03               // Filter 3 for RXB1
#define CAN2510_RXF4         0x04               // Filter 4 for RXB1
#define CAN2510_RXF5         0x05               // Filter 5 for RXB1

/* Error States */
#define CAN2510_BUS_OFF                      0x05
#define BUS_OFF                              0x05
#define CAN2510_ERROR_PASSIVE_TX             0x04
#define ERROR_PASSIVE_TX                     0x04
#define CAN2510_ERROR_PASSIVE_RX             0x03
#define ERROR_PASSIVE_RX                     0x03
#define CAN2510_ERROR_ACTIVE_WITH_TXWARN     0x02
#define ERROR_ACTIVE_WITH_TXWARN             0x02
#define CAN2510_ERROR_ACTIVE_WITH_RXWARN     0x01
#define ERROR_ACTIVE_WITH_RXWARN             0x01
#define CAN2510_ERROR_ACTIVE                 0x00
#define ERROR_ACTIVE                         0x00

/* Interrupt sources */
#define CAN2510_ERROR_INT     0x02
#define CAN2510_WAKEUP_INT    0x04
#define CAN2510_TXB2_INT      0x0A
#define CAN2510_TXB1_INT      0x08
#define CAN2510_TXB0_INT      0x06
#define CAN2510_RXB1_INT      0x0E
#define CAN2510_RXB0_INT      0x0C
#define CAN2510_NO_INTS       0x00



/*****************************************************************************/
/*****************************************************************************/
/****                                                                     ****/
/****                       Function prototypes                           ****/
/****                                                                     ****/
/*****************************************************************************/
/*****************************************************************************/

void CAN2510Initialize( auto unsigned int configuration,
                        auto unsigned char brp,
                        auto unsigned char interruptFlags,
                        auto unsigned char SPI_syncMode,
                        auto unsigned char SPI_busMode,
                        auto unsigned char SPI_smpPhase );

unsigned char CAN2510Init( auto unsigned short long BufferConfig,
                           auto unsigned short long BitTimeConfig,
                           auto unsigned char interruptEnables,
                           auto unsigned char SPI_syncMode,
                           auto unsigned char SPI_busMode,
                           auto unsigned char SPI_smpPhase );

void CAN2510Enable( void );

void CAN2510Disable( void );

void CAN2510Reset( void );

void CAN2510SetMode( auto unsigned char mode );

unsigned char CAN2510ReadMode( void );

unsigned char CAN2510ReadStatus( void );

unsigned char CAN2510ErrorState( void );

unsigned char CAN2510InterruptStatus( void );

void CAN2510InterruptEnable( unsigned char interruptFlags );

unsigned char CAN2510ByteRead( auto unsigned char addr );

void CAN2510ByteWrite( auto unsigned char addr, auto unsigned char value );

void CAN2510SequentialRead( auto unsigned char *DataArray,
                            auto unsigned char CAN2510addr,
                            auto unsigned char numbytes );

void CAN2510SequentialWrite( auto unsigned char *DataArray,
                             auto unsigned char CAN2510addr,
                             auto unsigned char numbytes );

void CAN2510BitModify( auto unsigned char address,
                       auto unsigned char mask,
                       auto unsigned char data );

void CAN2510SetSingleMaskStd( auto unsigned char maskNum, auto unsigned int mask );

void CAN2510SetSingleMaskXtd( auto unsigned char maskNum, auto unsigned long mask );

void CAN2510SetSingleFilterStd( auto unsigned char filterNum, auto unsigned int  filter );

void CAN2510SetSingleFilterXtd( auto unsigned char filterNum, auto unsigned long filter );

unsigned char CAN2510SetMsgFilterStd( auto unsigned char bufferNum,
                                      auto unsigned int  mask,
                                      auto unsigned int  *filters );

unsigned char CAN2510SetMsgFilterXtd( auto unsigned char bufferNum,
                                      auto unsigned long mask,
                                      auto unsigned long *filters );

unsigned char CAN2510WriteStd( auto unsigned int  msgId,
                               auto unsigned char msgPriority,
                               auto unsigned char numBytes,
                               auto unsigned char *data );

unsigned char CAN2510WriteXtd( auto unsigned long msgId,
                               auto unsigned char msgPriority,
                               auto unsigned char numBytes,
                               auto unsigned char *data );

void CAN2510LoadBufferStd( auto unsigned char bufferNum,
                           auto unsigned int  msgId,
                           auto unsigned char numBytes,
                           auto unsigned char *data );

void CAN2510LoadBufferXtd( auto unsigned char bufferNum,
                           auto unsigned long msgId,
                           auto unsigned char numBytes,
                           auto unsigned char *data );

void CAN2510LoadRTRStd( auto unsigned char bufferNum,
                        auto unsigned int  msgId,
                        auto unsigned char numBytes );

void CAN2510LoadRTRXtd( auto unsigned char bufferNum,
                        auto unsigned long msgId,
                        auto unsigned char numBytes );

void CAN2510SetBufferPriority( auto unsigned char bufferNum,
                               auto unsigned char bufferPriority );

void CAN2510SendBuffer( auto unsigned char bufferNumber );

unsigned char CAN2510WriteBuffer( auto unsigned char bufferNum );

unsigned char CAN2510DataReady( auto unsigned char bufferNum );

unsigned char CAN2510DataRead( auto unsigned char bufferNum,
                               auto unsigned long *msgId,
			       auto unsigned char *numBytes,
			       auto unsigned char *data );

#endif  /* __CAN2510_H */

⌨️ 快捷键说明

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