30 #ifndef FLEXCAN_DRIVER_H
31 #define FLEXCAN_DRIVER_H
35 #if FEATURE_CAN_HAS_DMA_ENABLE
65 #if FEATURE_CAN_HAS_DMA_ENABLE
85 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
86 FLEXCAN_EVENT_WAKEUP_TIMEOUT,
87 FLEXCAN_EVENT_WAKEUP_MATCH
125 #if FEATURE_CAN_HAS_DMA_ENABLE
126 uint8_t rxFifoDMAChannel;
178 #if FEATURE_CAN_HAS_PE_CLKSRC_SELECT
197 #if defined(__cplusplus)
367 const uint8_t *mb_data,
368 uint32_t timeout_ms);
392 const uint8_t *mb_data);
461 uint32_t timeout_ms);
500 uint32_t timeout_ms);
528 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
535 void FLEXCAN_DRV_WakeUpHandler(uint8_t instance);
561 #if FEATURE_CAN_HAS_PRETENDED_NETWORKING
570 void FLEXCAN_DRV_ConfigPN(uint8_t instance,
bool enable,
const flexcan_pn_config_t *pnConfig);
const IRQn_Type g_flexcanOredMessageBufferIrqId[CAN_INSTANCE_COUNT][FEATURE_CAN_MB_IRQS_MAX_COUNT]
Table to save message buffer IRQ numbers for FlexCAN instances.
const IRQn_Type g_flexcanBusOffIrqId[CAN_INSTANCE_COUNT]
Table to save Bus off IRQ numbers for FlexCAN instances.
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.
status_t FLEXCAN_DRV_Deinit(uint8_t instance)
Shuts down a FlexCAN instance.
Internal driver state information.
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.
flexcan_time_segment_t bitrate
flexcan_rx_fifo_id_filter_num_t num_id_filters
status_t FLEXCAN_DRV_RxFifo(uint8_t instance, flexcan_msgbuff_t *data)
Receives a CAN frame using the message FIFO.
#define FEATURE_CAN_MAX_MB_NUM
flexcan_rx_fifo_id_filter_num_t
FlexCAN Rx FIFO filters number Implements : flexcan_rx_fifo_id_filter_num_t_Class.
IRQn_Type
Defines the Interrupt Numbers definitions.
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.
const IRQn_Type g_flexcanRxWarningIrqId[CAN_INSTANCE_COUNT]
Table to save RX Warning IRQ numbers for FlexCAN instances.
flexcan_msgbuff_id_type_t msg_id_type
flexcan_event_type_t
The type of the event which occured 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.
dma_request_source_t
Structure for the DMA hardware request.
#define CAN_INSTANCE_COUNT
struct FlexCANState flexcan_state_t
Internal driver state information.
flexcan_rxfifo_transfer_type_t transferType
const IRQn_Type g_flexcanWakeUpIrqId[CAN_INSTANCE_COUNT]
Table to save wakeup IRQ numbers for FlexCAN instances.
void FLEXCAN_DRV_SetRxMaskType(uint8_t instance, flexcan_rx_mask_type_t type)
Sets the RX masking type.
FlexCAN timing 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.
const IRQn_Type g_flexcanTxWarningIrqId[CAN_INSTANCE_COUNT]
Table to save TX Warning IRQ numbers for FlexCAN instances.
status_t FLEXCAN_DRV_GetTransferStatus(uint32_t instance, uint8_t mb_idx)
Returns whether the previous FLEXCAN transfer has finished.
#define FEATURE_CAN_MB_IRQS_MAX_COUNT
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
status_t FLEXCAN_DRV_Init(uint32_t instance, flexcan_state_t *state, const flexcan_user_config_t *data)
Initializes the FlexCAN peripheral.
flexcan_operation_modes_t
FlexCAN operation modes Implements : flexcan_operation_modes_t_Class.
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.
const dma_request_source_t g_flexcanDmaRequests[]
status_t FLEXCAN_DRV_AbortTransfer(uint32_t instance, uint8_t mb_idx)
Ends a non-blocking FlexCAN transfer early.
flexcan_rx_fifo_id_element_format_t
ID formats for RxFIFO Implements : flexcan_rx_fifo_id_element_format_t_Class.
FlexCAN message buffer structure Implements : flexcan_msgbuff_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.
CAN_Type *const g_flexcanBase[CAN_INSTANCE_COUNT]
Table of base addresses for FlexCAN instances.
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
Pretended Networking configuration structure Implements : flexcan_pn_config_t_Class.
const IRQn_Type g_flexcanErrorIrqId[CAN_INSTANCE_COUNT]
Table to save error IRQ numbers for FlexCAN instances.
void FLEXCAN_DRV_SetRxFifoGlobalMask(uint8_t instance, flexcan_msgbuff_id_type_t id_type, uint32_t mask)
Sets the FlexCAN RX FIFO global standard or extended mask.
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 FD BRS.
flexcan_msgbuff_id_type_t
FlexCAN Message Buffer ID type Implements : flexcan_msgbuff_id_type_t_Class.
flexcan_clk_source_t
FlexCAN clock source Implements : flexcan_clk_source_t_Class.
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 standard or extended mask.
void FLEXCAN_DRV_IRQHandler(uint8_t instance)
Interrupt handler for a FlexCAN instance.
flexcan_fd_payload_size_t
FlexCAN payload sizes Implements : flexcan_fd_payload_size_t_Class.
FlexCAN data info from user Implements : flexcan_data_info_t_Class.
flexcan_rx_mask_type_t
FlexCAN RX mask type. Implements : flexcan_rx_mask_type_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 standard or extended mask.
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.
void FLEXCAN_DRV_GetBitrate(uint8_t instance, flexcan_time_segment_t *bitrate)
Gets the FlexCAN bit rate.