S32 SDK
flexcan_driver.h File Reference
#include "device_registers.h"
#include "osif.h"

Go to the source code of this file.

Data Structures

struct  flexcan_msgbuff_t
 FlexCAN message buffer structure Implements : flexcan_msgbuff_t_Class. More...
 
struct  flexcan_mb_handle_t
 Information needed for internal handling of a given MB. Implements : flexcan_mb_handle_t_Class. More...
 
struct  FlexCANState
 Internal driver state information. More...
 
struct  flexcan_data_info_t
 FlexCAN data info from user Implements : flexcan_data_info_t_Class. More...
 
struct  flexcan_id_table_t
 FlexCAN Rx FIFO ID filter table structure Implements : flexcan_id_table_t_Class. More...
 
struct  flexcan_time_segment_t
 FlexCAN bitrate related structures Implements : flexcan_time_segment_t_Class. More...
 
struct  flexcan_user_config_t
 FlexCAN configuration. More...
 

Typedefs

typedef struct FlexCANState flexcan_state_t
 Internal driver state information. More...
 
typedef void(* flexcan_callback_t) (uint8_t instance, flexcan_event_type_t eventType, flexcan_state_t *flexcanState)
 FlexCAN Driver callback function type Implements : flexcan_callback_t_Class. More...
 

Enumerations

enum  flexcan_rxfifo_transfer_type_t { FLEXCAN_RXFIFO_USING_INTERRUPTS, FLEXCAN_RXFIFO_USING_DMA }
 The type of the RxFIFO transfer (interrupts/DMA). Implements : flexcan_rxfifo_transfer_type_t_Class. More...
 
enum  flexcan_event_type_t { FLEXCAN_EVENT_RX_COMPLETE, FLEXCAN_EVENT_RXFIFO_COMPLETE, FLEXCAN_EVENT_TX_COMPLETE }
 The type of the event which occurred when the callback was invoked. Implements : flexcan_event_type_t_Class. More...
 
enum  flexcan_mb_state_t { FLEXCAN_MB_IDLE, FLEXCAN_MB_RX_BUSY, FLEXCAN_MB_TX_BUSY }
 The state of a given MB (idle/Rx busy/Tx busy). Implements : flexcan_mb_state_t_Class. More...
 
enum  flexcan_msgbuff_id_type_t { FLEXCAN_MSG_ID_STD, FLEXCAN_MSG_ID_EXT }
 FlexCAN Message Buffer ID type Implements : flexcan_msgbuff_id_type_t_Class. More...
 
enum  flexcan_rx_fifo_id_filter_num_t {
  FLEXCAN_RX_FIFO_ID_FILTERS_8 = 0x0, FLEXCAN_RX_FIFO_ID_FILTERS_16 = 0x1, FLEXCAN_RX_FIFO_ID_FILTERS_24 = 0x2, FLEXCAN_RX_FIFO_ID_FILTERS_32 = 0x3,
  FLEXCAN_RX_FIFO_ID_FILTERS_40 = 0x4, FLEXCAN_RX_FIFO_ID_FILTERS_48 = 0x5, FLEXCAN_RX_FIFO_ID_FILTERS_56 = 0x6, FLEXCAN_RX_FIFO_ID_FILTERS_64 = 0x7,
  FLEXCAN_RX_FIFO_ID_FILTERS_72 = 0x8, FLEXCAN_RX_FIFO_ID_FILTERS_80 = 0x9, FLEXCAN_RX_FIFO_ID_FILTERS_88 = 0xA, FLEXCAN_RX_FIFO_ID_FILTERS_96 = 0xB,
  FLEXCAN_RX_FIFO_ID_FILTERS_104 = 0xC, FLEXCAN_RX_FIFO_ID_FILTERS_112 = 0xD, FLEXCAN_RX_FIFO_ID_FILTERS_120 = 0xE, FLEXCAN_RX_FIFO_ID_FILTERS_128 = 0xF
}
 FlexCAN Rx FIFO filters number Implements : flexcan_rx_fifo_id_filter_num_t_Class. More...
 
enum  flexcan_rx_mask_type_t { FLEXCAN_RX_MASK_GLOBAL, FLEXCAN_RX_MASK_INDIVIDUAL }
 FlexCAN Rx mask type. Implements : flexcan_rx_mask_type_t_Class. More...
 
enum  flexcan_rx_fifo_id_element_format_t { FLEXCAN_RX_FIFO_ID_FORMAT_A, FLEXCAN_RX_FIFO_ID_FORMAT_B, FLEXCAN_RX_FIFO_ID_FORMAT_C, FLEXCAN_RX_FIFO_ID_FORMAT_D }
 ID formats for Rx FIFO Implements : flexcan_rx_fifo_id_element_format_t_Class. More...
 
enum  flexcan_operation_modes_t {
  FLEXCAN_NORMAL_MODE, FLEXCAN_LISTEN_ONLY_MODE, FLEXCAN_LOOPBACK_MODE, FLEXCAN_FREEZE_MODE,
  FLEXCAN_DISABLE_MODE
}
 FlexCAN operation modes Implements : flexcan_operation_modes_t_Class. More...
 
enum  flexcan_fd_payload_size_t { FLEXCAN_PAYLOAD_SIZE_8 = 0, FLEXCAN_PAYLOAD_SIZE_16, FLEXCAN_PAYLOAD_SIZE_32, FLEXCAN_PAYLOAD_SIZE_64 }
 FlexCAN payload sizes Implements : flexcan_fd_payload_size_t_Class. More...
 

Functions

Bit rate
void FLEXCAN_DRV_SetBitrate (uint8_t instance, const flexcan_time_segment_t *bitrate)
 Sets the FlexCAN bit rate for standard frames or the arbitration phase of FD frames. More...
 
void FLEXCAN_DRV_SetBitrateCbt (uint8_t instance, const flexcan_time_segment_t *bitrate)
 Sets the FlexCAN bit rate for the data phase of FD frames (BRS enabled). More...
 
void FLEXCAN_DRV_GetBitrate (uint8_t instance, flexcan_time_segment_t *bitrate)
 Gets the FlexCAN bit rate for standard frames or the arbitration phase of FD frames. More...
 
void FLEXCAN_DRV_GetBitrateFD (uint8_t instance, flexcan_time_segment_t *bitrate)
 Gets the FlexCAN bit rate for the data phase of FD frames (BRS enabled). More...
 
Rx MB and Rx FIFO masks
void FLEXCAN_DRV_SetRxMaskType (uint8_t instance, flexcan_rx_mask_type_t type)
 Sets the Rx masking type. More...
 
void FLEXCAN_DRV_SetRxFifoGlobalMask (uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint32_t mask)
 Sets the FlexCAN Rx FIFO global mask (standard or extended). More...
 
void FLEXCAN_DRV_SetRxMbGlobalMask (uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint32_t mask)
 Sets the FlexCAN Rx MB global mask (standard or extended). More...
 
void FLEXCAN_DRV_SetRxMb14Mask (uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint32_t mask)
 Sets the FlexCAN Rx MB 14 mask (standard or extended). More...
 
void FLEXCAN_DRV_SetRxMb15Mask (uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint32_t mask)
 Sets the FlexCAN Rx MB 15 mask (standard or extended). More...
 
status_t FLEXCAN_DRV_SetRxIndividualMask (uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint8_t mb_idx, uint32_t mask)
 Sets the FlexCAN Rx individual mask (standard or extended). More...
 
Initialization and Shutdown
void FLEXCAN_DRV_GetDefaultConfig (flexcan_user_config_t *config)
 Gets the default configuration structure. More...
 
status_t FLEXCAN_DRV_Init (uint8_t instance, flexcan_state_t *state, const flexcan_user_config_t *data)
 Initializes the FlexCAN peripheral. More...
 
status_t FLEXCAN_DRV_Deinit (uint8_t instance)
 Shuts down a FlexCAN instance. More...
 
void FLEXCAN_DRV_SetTDCOffset (uint8_t instance, bool enable, uint8_t offset)
 Enables/Disables the Transceiver Delay Compensation feature and sets the Transceiver Delay Compensation Offset (offset value to be added to the measured transceiver's loop delay in order to define the position of the delayed comparison point when bit rate switching is active). More...
 
uint8_t FLEXCAN_DRV_GetTDCValue (uint8_t instance)
 Gets the value of the Transceiver Delay Compensation. More...
 
bool FLEXCAN_DRV_GetTDCFail (uint8_t instance)
 Gets the value of the TDC Fail flag. More...
 
void FLEXCAN_DRV_ClearTDCFail (uint8_t instance)
 Clears the TDC Fail flag. More...
 
Send configuration
status_t FLEXCAN_DRV_ConfigTxMb (uint8_t instance, uint8_t mb_idx, const flexcan_data_info_t *tx_info, uint32_t msg_id)
 FlexCAN transmit message buffer field configuration. More...
 
status_t FLEXCAN_DRV_SendBlocking (uint8_t instance, uint8_t mb_idx, const flexcan_data_info_t *tx_info, uint32_t msg_id, const uint8_t *mb_data, uint32_t timeout_ms)
 Sends a CAN frame using the specified message buffer, in a blocking manner. More...
 
status_t FLEXCAN_DRV_Send (uint8_t instance, uint8_t mb_idx, const flexcan_data_info_t *tx_info, uint32_t msg_id, const uint8_t *mb_data)
 Sends a CAN frame using the specified message buffer. More...
 
Receive configuration
status_t FLEXCAN_DRV_ConfigRxMb (uint8_t instance, uint8_t mb_idx, const flexcan_data_info_t *rx_info, uint32_t msg_id)
 FlexCAN receive message buffer field configuration. More...
 
void FLEXCAN_DRV_ConfigRxFifo (uint8_t instance, flexcan_rx_fifo_id_element_format_t id_format, const flexcan_id_table_t *id_filter_table)
 FlexCAN Rx FIFO field configuration. More...
 
status_t FLEXCAN_DRV_ReceiveBlocking (uint8_t instance, uint8_t mb_idx, flexcan_msgbuff_t *data, uint32_t timeout_ms)
 Receives a CAN frame using the specified message buffer, in a blocking manner. More...
 
status_t FLEXCAN_DRV_Receive (uint8_t instance, uint8_t mb_idx, flexcan_msgbuff_t *data)
 Receives a CAN frame using the specified message buffer. More...
 
status_t FLEXCAN_DRV_RxFifoBlocking (uint8_t instance, flexcan_msgbuff_t *data, uint32_t timeout_ms)
 Receives a CAN frame using the message FIFO, in a blocking manner. More...
 
status_t FLEXCAN_DRV_RxFifo (uint8_t instance, flexcan_msgbuff_t *data)
 Receives a CAN frame using the message FIFO. More...
 
Transfer status
status_t FLEXCAN_DRV_AbortTransfer (uint8_t instance, uint8_t mb_idx)
 Ends a non-blocking FlexCAN transfer early. More...
 
status_t FLEXCAN_DRV_GetTransferStatus (uint8_t instance, uint8_t mb_idx)
 Returns whether the previous FlexCAN transfer has finished. More...
 
IRQ handler callback
void FLEXCAN_DRV_InstallEventCallback (uint8_t instance, flexcan_callback_t callback, void *callbackParam)
 Installs a callback function for the IRQ handler. More...