19 #ifndef FLEXCAN_DRIVER_H
20 #define FLEXCAN_DRIVER_H
24 #if FEATURE_CAN_HAS_DMA_ENABLE
44 #if FEATURE_CAN_HAS_DMA_ENABLE
58 #if FEATURE_CAN_HAS_WAKE_UP_IRQ
83 #if FEATURE_CAN_HAS_PE_CLKSRC_SELECT
139 #if FEATURE_CAN_HAS_DMA_ENABLE
152 #if FEATURE_CAN_HAS_FD
222 #if FEATURE_CAN_HAS_FD
258 #if FEATURE_CAN_HAS_FD
262 #if FEATURE_CAN_HAS_PE_CLKSRC_SELECT
266 #if FEATURE_CAN_HAS_FD
270 #if FEATURE_CAN_HAS_DMA_ENABLE
275 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
288 uint8_t payload1[8U];
290 uint8_t payload2[8U];
344 #if defined(__cplusplus)
361 #if FEATURE_CAN_HAS_FD
379 #if FEATURE_CAN_HAS_FD
517 #if FEATURE_CAN_HAS_FD
598 const uint8_t *mb_data);
622 const uint8_t *mb_data,
623 uint32_t timeout_ms);
646 const uint8_t *mb_data);
725 uint32_t timeout_ms);
763 uint32_t timeout_ms);
839 void *callbackParam);
851 void *callbackParam);
855 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
884 #if FEATURE_CAN_HAS_SELF_WAKE_UP
900 status_t FLEXCAN_DRV_ConfigSelfWakeUp(uint8_t instance,
bool enable,
bool lowPassFilterEn);
flexcan_pn_filter_selection_t
Pretended Networking matching schemes.
Pretended Networking ID filter.
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.
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).
status_t FLEXCAN_DRV_Deinit(uint8_t instance)
Shuts down a FlexCAN instance.
Internal driver state information.
flexcan_msgbuff_id_type_t
FlexCAN Message Buffer ID type Implements : flexcan_msgbuff_id_type_t_Class.
void FLEXCAN_DRV_GetWMB(uint8_t instance, uint8_t wmbIndex, flexcan_msgbuff_t *wmb)
Extracts one of the frames which triggered the wake up event.
flexcan_operation_modes_t flexcanMode
flexcan_fd_payload_size_t payload
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.
void FLEXCAN_DRV_GetDefaultConfig(flexcan_user_config_t *config)
Gets the default configuration structure.
flexcan_time_segment_t bitrate
flexcan_rx_mask_type_t
FlexCAN Rx mask type. Implements : flexcan_rx_mask_type_t_Class.
flexcan_rx_fifo_id_filter_num_t num_id_filters
flexcan_clk_source_t
FlexCAN PE clock sources Implements : flexcan_clk_source_t_Class.
void FLEXCAN_DRV_SetTDCOffset(uint8_t instance, bool enable, uint8_t offset)
Enables/Disables the Transceiver Delay Compensation feature and sets the Transceiver Delay Compensati...
status_t FLEXCAN_DRV_RxFifo(uint8_t instance, flexcan_msgbuff_t *data)
Receives a CAN frame using the message FIFO.
flexcan_pn_filter_combination_t filterComb
flexcan_rx_fifo_id_filter_num_t
FlexCAN Rx FIFO filters number Implements : flexcan_rx_fifo_id_filter_num_t_Class.
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.
status_t FLEXCAN_DRV_GetTransferStatus(uint8_t instance, uint8_t mb_idx)
Returns whether the previous FlexCAN transfer has finished.
flexcan_msgbuff_id_type_t msg_id_type
flexcan_event_type_t
The type of the event which occurred when the callback was invoked. Implements : flexcan_event_type_t...
void FLEXCAN_DRV_InstallEventCallback(uint8_t instance, flexcan_callback_t callback, void *callbackParam)
Installs a callback function for the IRQ handler.
flexcan_pn_filter_combination_t
Pretended Networking filtering combinations.
flexcan_pn_id_filter_t idFilter2
void FLEXCAN_DRV_ClearTDCFail(uint8_t instance)
Clears the TDC Fail flag.
struct FlexCANState flexcan_state_t
Internal driver state information.
flexcan_rxfifo_transfer_type_t transferType
flexcan_pn_payload_filter_t payloadFilter
#define FEATURE_CAN_MAX_MB_NUM
status_t FLEXCAN_DRV_AbortTransfer(uint8_t instance, uint8_t mb_idx)
Ends a non-blocking FlexCAN transfer early.
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).
void FLEXCAN_DRV_SetRxMaskType(uint8_t instance, flexcan_rx_mask_type_t type)
Sets the Rx masking type.
volatile flexcan_mb_state_t state
FlexCAN bitrate related structures Implements : flexcan_time_segment_t_Class.
void * errorCallbackParam
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.
status_t FLEXCAN_DRV_ConfigRemoteResponseMb(uint8_t instance, uint8_t mb_idx, const flexcan_data_info_t *tx_info, uint32_t msg_id, const uint8_t *mb_data)
Configures a transmit message buffer for remote frame response.
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
void(* callback)(uint8_t instance, flexcan_event_type_t eventType, uint32_t buffIdx, struct FlexCANState *driverState)
void FLEXCAN_DRV_InstallErrorCallback(uint8_t instance, flexcan_error_callback_t callback, void *callbackParam)
Installs an error callback function for the IRQ handler and enables error interrupts.
flexcan_mb_handle_t mbs[(32U)]
bool FLEXCAN_DRV_GetTDCFail(uint8_t instance)
Gets the value of the TDC Fail flag.
FlexCAN message buffer structure Implements : flexcan_msgbuff_t_Class.
flexcan_rx_fifo_id_element_format_t
ID formats for Rx FIFO Implements : flexcan_rx_fifo_id_element_format_t_Class.
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.
void(* error_callback)(uint8_t instance, flexcan_event_type_t eventType, struct FlexCANState *driverState)
flexcan_rxfifo_transfer_type_t
The type of the RxFIFO transfer (interrupts/DMA). Implements : flexcan_rxfifo_transfer_type_t_Class.
FlexCAN Rx FIFO ID filter table structure Implements : flexcan_id_table_t_Class.
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.
flexcan_time_segment_t bitrate_cbt
flexcan_rxfifo_transfer_type_t transfer_type
Pretended Networking configuration structure Implements : flexcan_pn_config_t_Class.
uint8_t FLEXCAN_DRV_GetTDCValue(uint8_t instance)
Gets the value of the Transceiver Delay Compensation.
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).
Information needed for internal handling of a given MB. Implements : flexcan_mb_handle_t_Class.
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.
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).
flexcan_msgbuff_t * mb_message
uint32_t FLEXCAN_DRV_GetErrorStatus(uint8_t instance)
Returns reported error conditions.
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).
FlexCAN data info from user Implements : flexcan_data_info_t_Class.
status_t FLEXCAN_DRV_Init(uint8_t instance, flexcan_state_t *state, const flexcan_user_config_t *data)
Initializes the FlexCAN peripheral.
flexcan_fd_payload_size_t
FlexCAN payload sizes Implements : flexcan_fd_payload_size_t_Class.
flexcan_mb_state_t
The state of a given MB (idle/Rx busy/Tx busy). Implements : flexcan_mb_state_t_Class.
void(* flexcan_error_callback_t)(uint8_t instance, flexcan_event_type_t eventType, flexcan_state_t *flexcanState)
FlexCAN Driver error callback function type Implements : flexcan_error_callback_t_Class.
Pretended Networking payload filter.
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.
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).
void(* flexcan_callback_t)(uint8_t instance, flexcan_event_type_t eventType, uint32_t buffIdx, flexcan_state_t *flexcanState)
FlexCAN Driver callback function type Implements : flexcan_callback_t_Class.
flexcan_pn_filter_selection_t idFilterType
flexcan_pn_id_filter_t idFilter1
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.
flexcan_clk_source_t pe_clock
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).
flexcan_pn_filter_selection_t payloadFilterType
flexcan_operation_modes_t
FlexCAN operation modes Implements : flexcan_operation_modes_t_Class.
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.
void FLEXCAN_DRV_ConfigPN(uint8_t instance, bool enable, const flexcan_pn_config_t *pnConfig)
Configures Pretended Networking settings.