19 #ifndef FLEXCAN_DRIVER_H
20 #define FLEXCAN_DRIVER_H
24 #if FEATURE_CAN_HAS_DMA_ENABLE
54 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
55 FLEXCAN_EVENT_WAKEUP_TIMEOUT,
56 FLEXCAN_EVENT_WAKEUP_MATCH
112 #if FEATURE_CAN_HAS_DMA_ENABLE
113 uint8_t rxFifoDMAChannel;
228 #if FEATURE_CAN_HAS_PE_CLKSRC_SELECT
237 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
244 } flexcan_pn_id_filter_t;
250 uint8_t payload1[8U];
252 uint8_t payload2[8U];
253 } flexcan_pn_payload_filter_t;
258 FLEXCAN_FILTER_ID_PAYLOAD,
259 FLEXCAN_FILTER_ID_NTIMES,
260 FLEXCAN_FILTER_ID_PAYLOAD_NTIMES
261 } flexcan_pn_filter_combination_t;
265 FLEXCAN_FILTER_MATCH_EXACT,
266 FLEXCAN_FILTER_MATCH_GEQ,
267 FLEXCAN_FILTER_MATCH_LEQ,
268 FLEXCAN_FILTER_MATCH_RANGE
270 } flexcan_pn_filter_selection_t;
279 uint16_t matchTimeout;
280 flexcan_pn_filter_combination_t filterComb;
281 flexcan_pn_id_filter_t idFilter1;
282 flexcan_pn_id_filter_t idFilter2;
283 flexcan_pn_filter_selection_t idFilterType;
284 flexcan_pn_filter_selection_t payloadFilterType;
285 flexcan_pn_payload_filter_t payloadFilter;
286 } flexcan_pn_config_t;
300 #if defined(__cplusplus)
553 const uint8_t *mb_data,
554 uint32_t timeout_ms);
577 const uint8_t *mb_data);
634 uint32_t timeout_ms);
672 uint32_t timeout_ms);
739 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
753 void FLEXCAN_DRV_ConfigPN(uint8_t instance,
bool enable,
const flexcan_pn_config_t *pnConfig);
762 void FLEXCAN_DRV_GetWMB(uint8_t instance, uint8_t wmbIndex,
flexcan_msgbuff_t *wmb);
768 #if FEATURE_CAN_HAS_SELF_WAKE_UP
784 status_t FLEXCAN_DRV_ConfigSelfWakeUp(uint8_t instance,
bool enable,
bool lowPassFilterEn);
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.
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
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_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.
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
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.
FlexCAN bitrate related structures Implements : flexcan_time_segment_t_Class.
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
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
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.
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.
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.
void(* callback)(uint8_t instance, flexcan_event_type_t eventType, struct FlexCANState *state)
flexcan_time_segment_t bitrate_cbt
flexcan_rxfifo_transfer_type_t transfer_type
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
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.
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).
volatile flexcan_mb_handle_t mbs[FEATURE_CAN_MAX_MB_NUM]
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.
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_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.
#define FEATURE_CAN_MAX_MB_NUM