📄 can2510.h
字号:
#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 + -