?? can18xx8.h
字號:
* PreCondition: MCU must be in Configuration mode or else these
* values will be ignored.
*
* Input: SJW - SJW value as defined in 18CXX8 datasheet
* (Must be between 1 thru 4)
* BRP - BRP value as defined in 18CXX8 datasheet
* (Must be between 1 thru 64)
* PHSEG1 - PHSEG1 value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* PHSEG2 - PHSEG2 value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* PROPSEG - PROPSEG value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* flags - Value of type enum CAN_CONFIG_FLAGS
*
* Output: CAN bit rate is set.
* All masks registers are set '0'
* to allow all messages.
* Filter registers are set according to flag value.
* If (config & CAN_CONFIG_VALID_XTD_MSG)
* Set all filters to XTD_MSG
* Else if (config & CONFIG_VALID_STD_MSG)
* Set all filters to STD_MSG
* Else
* Set half of the filters to STD while rests to
* XTD_MSG.
*
* Side Effects: All pending transmissions are aborted.
********************************************************************/
void CANInitialize(BYTE SJW,
BYTE BRP,
BYTE PHSEG1,
BYTE PHSEG2,
BYTE PROPSEG,
enum CAN_CONFIG_FLAGS config);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: void CANSetOperationMode(CAN_OP_MODE mode)
*
* PreCondition: None
*
* Input: mode - Operation mode code
* must be of type enum CAN_OP_MODES
*
* Output: MCU is set to requested mode
*
* Side Effects: None
*
* Note: This is a blocking call. It will not return until
* requested mode is set.
********************************************************************/
void CANSetOperationMode(enum CAN_OP_MODE mode);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: void CANSetOperationModeNoWait(CAN_OP_MODE mode)
*
* PreCondition: None
*
* Input: mode - Operation mode code
* must be of type enum CAN_OP_MODES
*
* Output: MCU is set to requested mode
*
* Side Effects: None
*
* Note: This is a non-blocking call.
* It does not verify that
* CAN module is switched to requested mode or not.
* Caller must use CANGetOperationMode() to verify
* correct operation mode before performing mode
* specific operation.
*
********************************************************************/
#define CANSetOperationModeNoWait(mode) (CANCON = mode)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: CAN_OP_MODE CANSetOperationMode()
*
* PreCondition: None
*
* Input: None
*
* Output: Current operational mode of CAN module is returned
*
* Side Effects: None
*
********************************************************************/
#define CANGetOperationMode() (CANCON & CAN_OP_MODE_BITS)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: void CANSetBaudRate(BYTE SJW,
* BYTE BRP,
* BYTE PHSEG1,
* BYTE PHSEG2,
* BYTE PROPSEG,
* enum CAN_CONFIG_FLAGS flags)
*
* PreCondition: MCU must be in Configuration mode or else these
* values will be ignored.
*
* Input: SJW - SJW value as defined in 18CXX8 datasheet
* (Must be between 1 thru 4)
* BRP - BRP value as defined in 18CXX8 datasheet
* (Must be between 1 thru 64)
* PHSEG1 - PHSEG1 value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* PHSEG2 - PHSEG2 value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* PROPSEG - PROPSEG value as defined in 18CXX8
* datasheet
* (Must be between 1 thru 8)
* flags - Value of type enum CAN_CONFIG_FLAGS
*
* Output: CAN bit rate is set as per given values.
*
* Side Effects: None
*
********************************************************************/
void CANSetBaudRate(BYTE SJW,
BYTE BRP,
BYTE PHSEG1,
BYTE PHSEG2,
BYTE PROPSEG,
enum CAN_CONFIG_FLAGS);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: void CANSetMask(enum CAN_MASK code,
* unsigned long val,
* enum CAN_CONFIG_FLAGS type)
*
* PreCondition: MCU must be in Configuration mode. If not, all
* values
* will be ignored.
*
* Input: code - One of CAN_MASK value
* val - Actual mask register value.
* type - Type of message to filter either
* CAN_CONFIG_XTD_MSG or CAN_CONFIG_STD_MSG
*
* Output: Given value is bit adjusted to appropriate buffer
* mask registers.
*
* Side Effects: None
********************************************************************/
void CANSetMask(enum CAN_MASK code,
unsigned long Value,
enum CAN_CONFIG_FLAGS type);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: void CANSetFilter(enum CAN_FILTER code,
* unsigned long val,
* enum CAN_CONFIG type)
*
* PreCondition: MCU must be in Configuration mode. If not, all
* values will be ignored.
*
* Input: code - One of CAN_FILTER value
* val - Actual filter register value.
* type - Type of message to filter either
* CAN_CONFIG_XTD_MSG or CAN_CONFIG_STD_MSG
*
* Output: Given value is bit adjusted to appropriate buffer
* filter registers.
*
* Side Effects: None
********************************************************************/
void CANSetFilter( enum CAN_FILTER code,
unsigned long Value,
enum CAN_CONFIG_FLAGS);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: BOOL CANSendMessage(unsigned long id,
* BYTE *Data,
* BYTE DataLen,
* enum CAN_TX_MSG_FLAGS MsgFlags)
*
* PreCondition: None
*
* Input: id - CAN message identifier.
* Only 11 or 29 bits may be used
* depending on standard or extended
* message type.
* Data - Data bytes of upto 8 bytes in length
* DataLen - Data length from 1 thru 8.
* MsgFlags - One or CAN_TX_MSG_FLAGS values ANDed
* together
*
* Output: If at least one empty transmit buffer is found,
* given message is queued to be transmitted. If none
* found FALSE value is returned.
*
* Side Effects: None
*
********************************************************************/
BOOL CANSendMessage(unsigned long id,
BYTE *Data,
BYTE DataLen,
enum CAN_TX_MSG_FLAGS MsgFlags);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Function: BOOL CANReceiveMessage(unsigned long *id,
* BYTE *Data,
* BYTE *DataLen,
* enum CAN_RX_MSG_FLAGS *MsgFlags)
*
* PreCondition: None
*
* Input: None
*
* Output: id - CAN message identifier.
* Data - Data bytes of upto 8 bytes in length
* DataLen - Data length from 1 thru 8.
* MsgFlags - One or CAN_RX_MSG_FLAGS values ANDed
* together
*
* Output: If at least one full receive buffer is found,
* it is extrated and returned. If none found FALSE
* value is returned.
*
* Side Effects: None
*
********************************************************************/
BOOL CANReceiveMessage(unsigned long* id,
BYTE *Data,
BYTE *DataLen,
enum CAN_RX_MSG_FLAGS *MsgFlags);
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BYTE CANGetTxErrorCount()
*
* PreCondition: None
*
* Input: None
*
* Output: Current transmit error count as defined by
* CAN specifications.
*
* Side Effects: None
*
********************************************************************/
#define CANGetTxErrorCount() (TXERRCNT)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BYTE CANGetRxErrorCount()
*
* PreCondition: None
*
* Input: None
*
* Output: Current receive error count as defined by
* CAN specifications.
*
* Side Effects: None
*
********************************************************************/
#define CANGetRxErrorCount() (RXERRCNT)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BOOL CANIsBusOff()
*
* PreCondition: None
*
* Input: None
*
* Output: TRUE if CAN Module is off due to excessive error
* FALSE is it is not off.
*
* Side Effects: None
*
********************************************************************/
#define CANIsBusOff() (COMSTAT_TXB0)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BOOL CANIsTxPassive()
*
* PreCondition: None
*
* Input: None
*
* Output: TRUE if CAN transmit module is error passive as
* defined by CAN specifications.
*
* Side Effects: None
*
********************************************************************/
#define CANIsTxPassive() (COMSTAT_TXBP)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BYTE CANIsRxPassive()
*
* PreCondition: None
*
* Input: None
*
* Output: TRUE if CAN receive module is error active as
* defined by CAN specifications.
*
* Side Effects: None
*
********************************************************************/
#define CANIsRxPassive() (COMSTAT_RXBP)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: void CANAbortAll()
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
********************************************************************/
#define CANAbortAll() (CANCON_ABAT = 1)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BOOL CANIsRxReady()
*
* PreCondition: None
*
* Input: None
*
* Output: TRUE if at least one of the CAN receive buffer is
* empty FALSE if none receive buffers are empty.
*
* Side Effects: None
*
********************************************************************/
#define CANIsRxReady() (RXB0CON_RXFUL || RXB1CON_RXFUL)
//////////////////////////////////////////////////////////////////////
/*********************************************************************
* Macro: BOOL CANIsTxReady()
*
* PreCondition: None
*
* Input: None
*
* Output: TRUE if at least one CAN transmit buffer is empty
* FALSE if all CAN transmit buffers are full
*
* Side Effects: None
*
********************************************************************/
#define CANIsTxReady() (!TXB0CON_TXREQ || \
!TXB1CON_TXREQ || \
!TXB2CON_TXREQ )
#endif // CAN18XX8_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -