HPM SDK
HPMicro Software Development Kit
MCAN driver APIs

MCAN driver APIs. More...

Data Structures

struct  mcan_bit_timing_param_struct
 CAN Bit Timing Parameters. More...
 
struct  mcan_tx_message_struct
 CAN Transmit Message Frame. More...
 
struct  mcan_rx_message_struct
 CAN Receive Message Frame. More...
 
union  mcan_tx_event_fifo_elem_struct
 TX Event Fifo Element Structure. More...
 
union  mcan_filter_config_struct
 MCAN Filter Configuration. More...
 
union  mcan_rxfifo_config_struct
 MCAN RXFIFO Configuration. More...
 
struct  mcan_rxbuf_config_t
 MCAN RXBUF Configuration. More...
 
union  mcan_rx_fifo_or_buf_elem_config_struct
 MCAN RXBUF or RXFIFO Element Configuration. More...
 
union  mcan_txbuf_config_struct
 
struct  mcan_txbuf_elem_config_struct
 
union  mcan_tx_evt_fifo_config_t
 MCAN TX Event FIFO Structure. More...
 
struct  mcan_ram_flexible_config_struct
 MCAN RAM Flexible Configuration. More...
 
struct  mcan_ram_config_struct
 MCAN RAM configuration. More...
 
struct  mcan_global_filter_config_struct
 MCAN Global CAN configuration. More...
 
struct  mcan_std_id_filter_elem_struct
 MCAN Filter Element definitions. More...
 
struct  mcan_filter_elem_list_struct
 MCAN Filter Element List structure. More...
 
struct  mcan_all_filters_config_struct
 MCAN Configuration for all filters. More...
 
struct  mcan_timestamp_value_struct
 MCAN Timestamp Value. More...
 
struct  mcan_tsu_config_struct
 MCAN TSU Configuration. More...
 
struct  mcan_internal_timestamp_config_struct
 MCAN Internal timestamp configuration. More...
 
struct  mcan_timeout_config_struct
 MCAN Timeout configuration structure. More...
 
struct  mcan_config_struct
 MCAN Configuration Structure. More...
 
struct  mcan_timeout_counter_config_struct
 MCAN Timeout Counter Configuration. More...
 
struct  mcan_error_count_struct
 MCAN Error Count Information. More...
 
struct  mcan_protocol_status
 MCAN Protocol Status. More...
 
struct  mcan_tdc_config_t
 MCAN Transmitter Delay Compensation Configuration. More...
 
struct  mcan_high_priority_message_status_struct
 MCAN High Priority Message Status Information. More...
 

Macros

#define MCAN_INT_ACCESS_TO_RESERVED_ADDR   MCAN_IR_ARA_MASK
 CAN Interrupt Mask. More...
 
#define MCAN_INT_PROTOCOL_ERR_IN_DATA_PHASE   MCAN_IR_PED_MASK
 
#define MCAN_INT_PROTOCOL_ERR_IN_ARB_PHASE   MCAN_IR_PEA_MASK
 
#define MCAN_INT_WATCHDOG_INT   MCAN_IR_WDI_MASK
 
#define MCAN_INT_BUS_OFF_STATUS   MCAN_IR_BO_MASK
 
#define MCAN_INT_WARNING_STATUS   MCAN_IR_EW_MASK
 
#define MCAN_INT_ERROR_PASSIVE   MCAN_IR_EP_MASK
 
#define MCAN_INT_ERROR_LOGGING_OVERFLOW   MCAN_IR_ELO_MASK
 
#define MCAN_INT_BIT_ERROR_UNCORRECTED   MCAN_IR_BEU_MASK
 
#define MCAN_INT_BIT_ERROR_CORRECTED   MCAN_IR_BEC_MASK
 
#define MCAN_INT_MSG_STORE_TO_RXBUF   MCAN_IR_DRX_MASK
 
#define MCAN_INT_TIMEOUT_OCCURRED   MCAN_IR_TOO_MASK
 
#define MCAN_INT_MSG_RAM_ACCESS_FAILURE   MCAN_IR_MRAF_MASK
 
#define MCAN_INT_TIMESTAMP_WRAPAROUND   MCAN_IR_TSW_MASK
 
#define MCAN_INT_TX_EVT_FIFO_EVT_LOST   MCAN_IR_TEFL_MASK
 
#define MCAN_INT_TX_EVT_FIFO_FULL   MCAN_IR_TEFF_MASK
 
#define MCAN_INT_TX_EVT_FIFO_WMK_REACHED   MCAN_IR_TEFW_MASK
 
#define MCAN_INT_TX_EVT_FIFO_NEW_ENTRY   MCAN_IR_TEFN_MASK
 
#define MCAN_INT_TXFIFO_EMPTY   MCAN_IR_TFE_MASK
 
#define MCAN_INT_TX_CANCEL_FINISHED   MCAN_IR_TCF_MASK
 
#define MCAN_INT_TX_COMPLETED   MCAN_IR_TC_MASK
 
#define MCAN_INT_HIGH_PRIORITY_MSG   MCAN_IR_HPM_MASK
 
#define MCAN_INT_RXFIFO1_MSG_LOST   MCAN_IR_RF1L_MASK
 
#define MCAN_INT_RXFIFO1_FULL   MCAN_IR_RF1F_MASK
 
#define MCAN_INT_RXFIFO1_WMK_REACHED   MCAN_IR_RF1W_MASK
 
#define MCAN_INT_RXFIFO1_NEW_MSG   MCAN_IR_RF1N_MASK
 
#define MCAN_INT_RXFIFO0_MSG_LOST   MCAN_IR_RF0L_MASK
 
#define MCAN_INT_RXFIFO0_FULL   MCAN_IR_RF0F_MASK
 
#define MCAN_INT_RXFIFO0_WMK_REACHED   MCAN_IR_RF0W_MASK
 
#define MCAN_INT_RXFIFO0_NEW_MSG   MCAN_IR_RF0N_MASK
 
#define MCAN_EVENT_RECEIVE   (MCAN_INT_RXFIFO0_NEW_MSG | MCAN_INT_RXFIFO1_NEW_MSG | MCAN_INT_MSG_STORE_TO_RXBUF)
 MCAN Receive Event Flags. More...
 
#define MCAN_EVENT_TRANSMIT   (MCAN_INT_TX_COMPLETED)
 MCAN Transmit Event Flags. More...
 
#define MCAN_EVENT_ERROR
 MCAN Error Event Flags. More...
 
#define MCAN_TX_RETRY_COUNT_MAX   (10000000UL)
 Maximum Transmission Retry Count. More...
 
#define MCAN_RX_RETRY_COUNT_MAX   (80000000UL)
 Maximum Receive Wait Retry Count. More...
 
#define MCAN_RAM_WORD_SIZE   (640U)
 
#define MCAN_FILTER_ELEM_STD_ID_SIZE   (4U)
 
#define MCAN_FILTER_ELEM_EXT_ID_SIZE   (8U)
 
#define MCAN_STD_FILTER_ELEM_SIZE_MAX   (128U)
 
#define MCAN_EXT_FILTER_ELEM_SIZE_MAX   (64U)
 
#define MCAN_TXRX_ELEM_SIZE_CAN_MAX   (4U * sizeof(uint32_t))
 
#define MCAN_FILTER_SIZE_CAN_DEFAULT   (32U)
 
#define MCAN_TXBUF_SIZE_CAN_DEFAULT   (32U)
 
#define MCAN_RXFIFO_SIZE_CAN_DEFAULT   (32U)
 
#define MCAN_RXBUF_SIZE_CAN_DEFAULT   (16U)
 
#define MCAN_TXRX_ELEM_SIZE_CANFD_MAX   (18U * sizeof(uint32_t))
 
#define MCAN_FILTER_SIZE_CANFD_DEFAULT   (16U)
 
#define MCAN_TXBUF_SIZE_CANFD_DEFAULT   (8U)
 
#define MCAN_RXFIFO_SIZE_CANFD_DEFAULT   (8U)
 
#define MCAN_RXBUF_SIZE_CANFD_DEFAULT   (4U)
 
#define MCAN_TXEVT_ELEM_SIZE   (8U)
 
#define MCAN_MESSAGE_HEADER_SIZE_IN_BYTES   (8U)
 CAN Message Header Size. More...
 
#define MCAN_MESSAGE_HEADER_SIZE_IN_WORDS   (2U)
 
#define MCAN_CAN_ID_TYPE_STANDARD   (0U)
 CAN Identifier Types. More...
 
#define MCAN_CAN_ID_TYPE_EXTENDED   (1U)
 
#define MCAN_DATA_FIELD_SIZE_8BYTES   (0U)
 MCAN Data Field Size Definitions. More...
 
#define MCAN_DATA_FIELD_SIZE_12BYTES   (1U)
 
#define MCAN_DATA_FIELD_SIZE_16BYTES   (2U)
 
#define MCAN_DATA_FIELD_SIZE_20BYTES   (3U)
 
#define MCAN_DATA_FIELD_SIZE_24BYTES   (4U)
 
#define MCAN_DATA_FIELD_SIZE_32BYTES   (5U)
 
#define MCAN_DATA_FIELD_SIZE_48BYTES   (6U)
 
#define MCAN_DATA_FIELD_SIZE_64BYTES   (7U)
 
#define MCAN_FIFO_OPERATION_MODE_BLOCKING   (0U)
 MCAN FIFO Operation Mode types. More...
 
#define MCAN_FIFO_OPERATION_MODE_OVERWRITE   (1U)
 
#define MCAN_TXBUF_OPERATION_MODE_FIFO   (0U)
 MCAN TXBUF operation mode types. More...
 
#define MCAN_TXBUF_OPERATION_MODE_QUEUE   (1U)
 
#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO0   (0U)
 MCAN Accept Non-Matching Frame options. More...
 
#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO1   (1U)
 
#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_REJECT   (2U)
 
#define MCAN_FILTER_TYPE_RANGE_FILTER   (0U)
 MCAN Filter type definitions. More...
 
#define MCAN_FILTER_TYPE_SPECIFIED_ID_FILTER   (1U)
 
#define MCAN_FILTER_TYPE_CLASSIC_FILTER   (2U)
 
#define MCAN_FILTER_TYPE_FILTER_DISABLED   (3U)
 
#define MCAN_FILTER_TYPE_DUAL_ID_EXT_FILTER_IGNORE_MASK
 
#define MCAN_FILTER_ELEM_CFG_DISABLED   (0)
 MCAN Filter Configuration Options. More...
 
#define MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO0_IF_MATCH   (1U)
 
#define MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO1_IF_MATCH   (2U)
 
#define MCAN_FILTER_ELEM_CFG_REJECT_ID_IF_MATCH   (3U)
 
#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_IF_MATCH   (4U)
 
#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO0_IF_MATCH   (5U)
 
#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO1_IF_MATCH   (6U)
 
#define MCAN_FILTER_ELEM_CFG_STORE_INTO_RX_BUFFER_OR_AS_DBG_MSG   (7U)
 
#define MCAN_TIMESTAMP_SEL_MIN   (0U)
 MCAN Timestamp Select. More...
 
#define MCAN_TIMESTAMP_SEL_VALUE_ALWAYS_ZERO   (0U)
 
#define MCAN_TIMESTAMP_SEL_VALUE_INCREMENT   (1U)
 
#define MCAN_TIMESTAMP_SEL_EXT_TS_VAL_USED   (2U)
 
#define MCAN_TIMESTAMP_SEL_MAX   (MCAN_TIMESTAMP_SEL_EXT_TS_VAL_USED)
 
#define MCAN_TIMEOUT_SEL_TYPE_CONTINUOUS_OPERATION   (0U)
 MCAN Timeout Selection Options. More...
 
#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_TX_EVT_FIFO   (1U)
 
#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO0   (2U)
 
#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO1   (3U)
 
#define MCAN_MESSAGE_STORAGE_INDICATOR_NO_FIFO_SELECTED   (0U)
 MCAN Message Storage Indicator Types. More...
 
#define MCAN_MESSAGE_STORAGE_INDICATOR_FIFO_MESSAGE_LOST   (1U)
 
#define MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO0   (2U)
 
#define MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO1   (3U)
 

Typedefs

typedef enum mcan_last_error_code mcan_last_err_code_t
 MCAN Last Error Code. More...
 
typedef enum mcan_activity_enum mcan_activity_state_t
 MCAN Communication State. More...
 
typedef struct mcan_bit_timing_param_struct mcan_bit_timing_param_t
 CAN Bit Timing Parameters. More...
 
typedef enum mcan_bit_timing_option mcan_bit_timing_option_t
 CAN Bit Timing Options. More...
 
typedef struct mcan_tx_message_struct mcan_tx_frame_t
 CAN Transmit Message Frame. More...
 
typedef struct mcan_rx_message_struct mcan_rx_message_t
 CAN Receive Message Frame. More...
 
typedef union mcan_tx_event_fifo_elem_struct mcan_tx_event_fifo_elem_t
 TX Event Fifo Element Structure. More...
 
typedef union mcan_filter_config_struct mcan_filter_config_t
 MCAN Filter Configuration. More...
 
typedef union mcan_rxfifo_config_struct mcan_rxfifo_config_t
 MCAN RXFIFO Configuration. More...
 
typedef union mcan_rx_fifo_or_buf_elem_config_struct mcan_rx_fifo_or_buf_elem_config_t
 MCAN RXBUF or RXFIFO Element Configuration. More...
 
typedef union mcan_txbuf_config_struct mcan_txbuf_config_t
 
typedef struct mcan_txbuf_elem_config_struct mcan_txbuf_elem_config_t
 
typedef struct mcan_ram_flexible_config_struct mcan_ram_flexible_config_t
 MCAN RAM Flexible Configuration. More...
 
typedef struct mcan_ram_config_struct mcan_ram_config_t
 MCAN RAM configuration. More...
 
typedef struct mcan_global_filter_config_struct mcan_global_filter_config_t
 MCAN Global CAN configuration. More...
 
typedef struct mcan_std_id_filter_elem_struct mcan_filter_elem_t
 MCAN Filter Element definitions. More...
 
typedef struct mcan_filter_elem_list_struct mcan_filter_elem_list_t
 MCAN Filter Element List structure. More...
 
typedef struct mcan_all_filters_config_struct mcan_all_filters_config_t
 MCAN Configuration for all filters. More...
 
typedef enum mcan_node_mode_enum mcan_node_mode_t
 CAN Node Mode types. More...
 
typedef struct mcan_timestamp_value_struct mcan_timestamp_value_t
 MCAN Timestamp Value. More...
 
typedef struct mcan_tsu_config_struct mcan_tsu_config_t
 MCAN TSU Configuration. More...
 
typedef struct mcan_internal_timestamp_config_struct mcan_internal_timestamp_config_t
 MCAN Internal timestamp configuration. More...
 
typedef enum mcan_timeout_sel_enum mcan_timeout_sel_t
 MCAN Timeout Selection Options. More...
 
typedef struct mcan_timeout_config_struct mcan_timeout_config_t
 MCAN Timeout configuration structure. More...
 
typedef struct mcan_config_struct mcan_config_t
 MCAN Configuration Structure. More...
 
typedef struct mcan_timeout_counter_config_struct mcan_timeout_counter_config_t
 MCAN Timeout Counter Configuration. More...
 
typedef struct mcan_error_count_struct mcan_error_count_t
 MCAN Error Count Information. More...
 
typedef struct mcan_protocol_status mcan_protocol_status_t
 MCAN Protocol Status. More...
 
typedef struct mcan_tdc_config_t mcan_tdc_config_t
 MCAN Transmitter Delay Compensation Configuration. More...
 
typedef struct mcan_high_priority_message_status_struct mcan_high_priority_message_status_t
 MCAN High Priority Message Status Information. More...
 

Enumerations

enum  {
  status_mcan_filter_index_out_of_range = ((uint32_t)( status_group_mcan )*1000U + (uint32_t)( 0 )) , status_mcan_rxfifo_empty , status_mcan_rxfifo_full , status_mcan_txbuf_full ,
  status_mcan_txfifo_full , status_mcan_rxfifo0_busy , status_mcan_rxfifo1_busy , status_mcan_txbuf_index_out_of_range ,
  status_mcan_rxbuf_index_out_of_range , status_mcan_rxbuf_empty , status_mcan_tx_evt_fifo_empty , status_mcan_timestamp_not_exist ,
  status_mcan_ram_out_of_range , status_mcan_timeout
}
 
enum  mcan_last_error_code {
  mcan_last_error_code_no_error = 0 , mcan_last_error_code_stuff_error , mcan_last_error_code_format_error , mcan_last_error_code_ack_error ,
  mcan_last_error_code_bit1_error , mcan_last_error_code_bit0_error , mcan_last_error_code_crc_error , mcan_last_error_code_no_change
}
 MCAN Last Error Code. More...
 
enum  mcan_activity_enum { mcan_activity_sync = 0 , mcan_activity_idle , mcan_activity_receiver , mcan_activity_transmitter }
 MCAN Communication State. More...
 
enum  mcan_bit_timing_option { mcan_bit_timing_can2_0 , mcan_bit_timing_canfd_nominal , mcan_bit_timing_canfd_data }
 CAN Bit Timing Options. More...
 
enum  mcan_node_mode_enum { mcan_mode_normal = 0 , mcan_mode_loopback_internal = 1 , mcan_mode_loopback_external = 2 , mcan_mode_listen_only = 3 }
 CAN Node Mode types. More...
 
enum  mcan_timeout_sel_enum { mcan_timeout_continuous_operation = 0 , mcan_timeout_triggered_by_tx_evt_fifo = 1 , mcan_timeout_triggered_by_rx_fifo0 = 2 , mcan_timeout_triggered_by_rx_fifo1 = 3 }
 MCAN Timeout Selection Options. More...
 

Functions

static void mcan_enable_transmit_pause (MCAN_Type *ptr)
 Enable Transmit Pause. More...
 
static void mcan_disable_transmit_pause (MCAN_Type *ptr)
 Disable Transmit Pause. More...
 
static void mcan_enable_edge_filtering (MCAN_Type *ptr)
 Enable Edge Filtering. More...
 
static void mcan_disable_edge_filtering (MCAN_Type *ptr)
 Disable Edge Filtering. More...
 
static void mcan_enable_protocol_exception_handling (MCAN_Type *ptr)
 Enable Protocol Exception Handling. More...
 
static void mcan_disable_protocol_exception_handling (MCAN_Type *ptr)
 Disable Protocol Exception Handling. More...
 
static void mcan_enable_wide_message_marker (MCAN_Type *ptr)
 Enable Wide Message Marker. More...
 
static void mcan_disable_wide_message_marker (MCAN_Type *ptr)
 Disable Wide Message Marker. More...
 
static void mcan_enable_tsu (MCAN_Type *ptr)
 Enable External Timestamp Unit. More...
 
static void mcan_disable_tsu (MCAN_Type *ptr)
 Disable External Timestamp Unit. More...
 
static bool mcan_is_tsu_used (MCAN_Type *ptr)
 Check whether TSU is used. More...
 
static bool mcan_is_64bit_tsu_timestamp_used (MCAN_Type *ptr)
 Check whether 64-bit TSU timestamp is used. More...
 
static void mcan_enable_bitrate_switch (MCAN_Type *ptr)
 Enable Bit Rate Switch. More...
 
static void mcan_disable_bitrate_switch (MCAN_Type *ptr)
 Disable Bit Rate Switch. More...
 
static void mcan_enable_auto_retransmission (MCAN_Type *ptr)
 Enable Auto Retransmission. More...
 
static void mcan_disable_auto_retransmission (MCAN_Type *ptr)
 Disable Auto Transmission. More...
 
static void mcan_enable_bus_monitoring_mode (MCAN_Type *ptr)
 Enable Bus monitoring Mode. More...
 
static void mcan_stop_clock (MCAN_Type *ptr)
 Stop MCAN clock. More...
 
static void mcan_enable_clock (MCAN_Type *ptr)
 Enable MCAN clock. More...
 
static bool mcan_is_clock_enabled (MCAN_Type *ptr)
 
static void mcan_disable_bus_monitoring_mode (MCAN_Type *ptr)
 Disable Bus monitoring Mode. More...
 
static bool mcan_is_clock_stopped (MCAN_Type *ptr)
 Check whether CAN clock is stopped or not. More...
 
static void mcan_enable_restricted_operation_mode (MCAN_Type *ptr)
 Enable Restricted Operation Mode. More...
 
static void mcan_disable_restricted_operation_mode (MCAN_Type *ptr)
 Disable Restricted Operation Mode. More...
 
static void mcan_enable_write_to_prot_config_registers (MCAN_Type *ptr)
 Enable Write Access to Protected Configuration Registers. More...
 
static void mcan_disable_write_to_prot_config_registers (MCAN_Type *ptr)
 Disalbe Write Access to Protected Configuration Registers. More...
 
static uint16_t mcan_get_timestamp_counter_value (MCAN_Type *ptr)
 Get Timestamp Counter Value. More...
 
static void mcan_enter_init_mode (MCAN_Type *ptr)
 Switch MCAN to Initialization mode. More...
 
static void mcan_enter_normal_mode (MCAN_Type *ptr)
 Switch MCAN to Normal mode. More...
 
static uint16_t mcan_get_timeout_counter_value (MCAN_Type *ptr)
 Get Timeout value. More...
 
static void mcan_reset_timeout_counter_value (MCAN_Type *ptr)
 Reset Timeout counter value. More...
 
static void mcan_get_error_counter (MCAN_Type *ptr, mcan_error_count_t *err_cnt)
 Get Error Counter Information. More...
 
static uint8_t mcan_get_last_error_code (MCAN_Type *ptr)
 Get Last Error Code. More...
 
static uint8_t mcan_get_last_data_error_code (MCAN_Type *ptr)
 Get Last Data Phase Error Code. More...
 
static uint8_t mcan_get_activity (MCAN_Type *ptr)
 Get CAN Activity. More...
 
static bool mcan_is_in_err_passive_state (MCAN_Type *ptr)
 Check whether the CAN node is under error passive state. More...
 
static bool mcan_is_in_error_warning_state (MCAN_Type *ptr)
 Check whether the CAN mode is under Warning State. More...
 
static bool mcan_is_in_busoff_state (MCAN_Type *ptr)
 Check whether the CAN node is under Bus-off state. More...
 
static uint8_t mcan_get_data_phase_last_error_code (MCAN_Type *ptr)
 Get the Last Data Phase Error. More...
 
static bool mcan_is_error_state_indicator_flag_set_in_last_received_canfd_msg (MCAN_Type *ptr)
 Check Whether the Error Status Indicator Flag is set in the last received CANFD message. More...
 
static bool mcan_is_bitrate_switch_flag_set_in_last_received_canfd_msg (MCAN_Type *ptr)
 Check whether the Bitrate Switch Flag is set in the last received CANFD message. More...
 
static bool mcan_is_canfd_message_received (MCAN_Type *ptr)
 Check whether CANFD messages were received. More...
 
static bool mcan_is_protocol_exception_event_occurred (MCAN_Type *ptr)
 Check whether Protocol Exception Events were occurred. More...
 
static uint8_t mcan_get_transmitter_delay_compensation_value (MCAN_Type *ptr)
 Get the Transmitter Delay Compensation Value. More...
 
static uint32_t mcan_get_interrupt_flags (MCAN_Type *ptr)
 Get Interrupt Flags. More...
 
static void mcan_clear_interrupt_flags (MCAN_Type *ptr, uint32_t mask)
 Clear Interrupt Flags. More...
 
static void mcan_enable_interrupts (MCAN_Type *ptr, uint32_t mask)
 Enable Interrupts. More...
 
static void mcan_enable_txbuf_interrupt (MCAN_Type *ptr, uint32_t mask)
 Enable TXBUF Interrupt. More...
 
static void mcan_disable_txbuf_interrupt (MCAN_Type *ptr, uint32_t mask)
 Disable TXBUF Interrupt. More...
 
static void mcan_disable_interrupts (MCAN_Type *ptr, uint32_t mask)
 Disable Interrupts. More...
 
static void mcan_enable_txbuf_transmission_interrupt (MCAN_Type *ptr, uint32_t mask)
 Enable TXBUF Transmission interrupt. More...
 
static void mcan_disable_txbuf_transmission_interrupt (MCAN_Type *ptr, uint32_t mask)
 Disable TXBUF Transmission interrupt. More...
 
static void mcan_enable_txbuf_cancel_finish_interrupt (MCAN_Type *ptr, uint32_t mask)
 Enable TXBUF Cancellation Finish interrupt. More...
 
static void mcan_disable_txbuf_cancel_finish_interrupt (MCAN_Type *ptr, uint32_t mask)
 Disable TXBUF Cancellation Finish interrupt. More...
 
static void mcan_interrupt_line_select (MCAN_Type *ptr, uint32_t mask, uint8_t line_index)
 Select Interrupt Line. More...
 
static bool mcan_is_transmit_request_pending (MCAN_Type *ptr, uint32_t index)
 Check whether a TXFIFO/TXBUF transmission request is pending. More...
 
static bool mcan_is_txfifo_full (MCAN_Type *ptr)
 Check whether TXFIFO is full. More...
 
static uint32_t mcan_get_txfifo_put_index (MCAN_Type *ptr)
 Get the TXFIFO Put Index. More...
 
static void mcan_send_add_request (MCAN_Type *ptr, uint32_t index)
 Request A Transmission via specified TXBUF Index. More...
 
static bool mcan_is_transmit_occurred (MCAN_Type *ptr, uint32_t index)
 Check whether the Transmission completed via specified TXBUF/TXFIFO. More...
 
static bool mcan_is_rxbuf_data_available (MCAN_Type *ptr, uint32_t index)
 Check Whether there are data available in specified RXBUF. More...
 
static void mcan_clear_rxbuf_data_available_flag (MCAN_Type *ptr, uint32_t index)
 Clear RXBUF Data available Flag for specified RXBUF. More...
 
static bool mcan_is_interrupt_flag_set (MCAN_Type *ptr, uint32_t mask)
 Check whether specified Interrupt is set. More...
 
static bool mcan_is_tsu_timestamp_available (MCAN_Type *ptr, uint32_t index)
 Check whether the TSU timestamp is available. More...
 
uint32_t mcan_read_32bit_tsu_timestamp (MCAN_Type *ptr, uint32_t index)
 Read 32bit Timestamp value from TSU. More...
 
uint64_t mcan_read_64bit_tsu_timestamp (MCAN_Type *ptr, uint32_t index)
 Read 64bit Timestamp value from TSU. More...
 
void mcan_get_high_priority_message_status (MCAN_Type *ptr, mcan_high_priority_message_status_t *status)
 Get High Priority Message Status. More...
 
void mcan_get_default_config (MCAN_Type *ptr, mcan_config_t *config)
 Get Default CAN configuration. More...
 
uint8_t mcan_get_message_size_from_dlc (uint8_t dlc)
 Get message Size from Data Length Code. More...
 
uint8_t mcan_get_data_field_size (uint8_t data_field_size_option)
 Get the Data field size from data field size option. More...
 
void mcan_get_default_ram_flexible_config (MCAN_Type *ptr, mcan_ram_flexible_config_t *ram_config, bool enable_canfd)
 Get Default Full MCAN RAM configuration If the device is configured as classic CAN node, the default CAN RAM settings are as below: More...
 
void mcan_get_default_ram_config (MCAN_Type *ptr, mcan_ram_config_t *simple_config, bool enable_canfd)
 Get Default MCAN RAM configuration If the device is configured as classic CAN node, the default CAN RAM settings are as below: More...
 
hpm_stat_t mcan_init (MCAN_Type *ptr, mcan_config_t *config, uint32_t src_clk_freq)
 Initialize CAN controller. More...
 
void mcan_deinit (MCAN_Type *ptr)
 De-Initialize CAN controller. More...
 
hpm_stat_t mcan_config_ram_with_flexible_config (MCAN_Type *ptr, mcan_ram_flexible_config_t *config)
 Configure MCAN RAM will Full RAM configuration. More...
 
hpm_stat_t mcan_config_ram (MCAN_Type *ptr, mcan_ram_config_t *config)
 Configure MCAN RAM will Simplified RAM configuration. More...
 
hpm_stat_t mcan_config_all_filters (MCAN_Type *ptr, mcan_all_filters_config_t *config)
 Configure All CAN filters. More...
 
hpm_stat_t mcan_config_transmitter_delay_compensation (MCAN_Type *ptr, mcan_tdc_config_t *config)
 Configure Transmitter Delay Compensation. More...
 
hpm_stat_t mcan_set_global_filter_config (MCAN_Type *ptr, mcan_global_filter_config_t *filter_config)
 Configure Global Filter. More...
 
hpm_stat_t mcan_set_filter_element (MCAN_Type *ptr, const mcan_filter_elem_t *filter_elem, uint32_t index)
 Set CAN filter element. More...
 
hpm_stat_t mcan_write_txbuf (MCAN_Type *ptr, uint32_t index, mcan_tx_frame_t *tx_frame)
 Write Frame to CAN TX Buffer. More...
 
hpm_stat_t mcan_write_txfifo (MCAN_Type *ptr, mcan_tx_frame_t *tx_frame)
 Write Frame CAN to TXFIFO. More...
 
hpm_stat_t mcan_read_rxbuf (MCAN_Type *ptr, uint32_t index, mcan_rx_message_t *rx_frame)
 Read message from CAN RXBUF. More...
 
hpm_stat_t mcan_read_rxfifo (MCAN_Type *ptr, uint32_t fifo_index, mcan_rx_message_t *rx_frame)
 Read message from CAN RXBUF. More...
 
hpm_stat_t mcan_read_tx_evt_fifo (MCAN_Type *ptr, mcan_tx_event_fifo_elem_t *tx_evt)
 Read TX Event from CAN TX EVENT FIFO. More...
 
hpm_stat_t mcan_transmit_blocking (MCAN_Type *ptr, mcan_tx_frame_t *tx_frame)
 Transmit CAN message in blocking way. More...
 
hpm_stat_t mcan_transmit_via_txfifo_nonblocking (MCAN_Type *ptr, mcan_tx_frame_t *tx_frame, uint32_t *fifo_index)
 Transmit CAN message via TX FIFO in non-blocking way. More...
 
hpm_stat_t mcan_transmit_via_txbuf_nonblocking (MCAN_Type *ptr, uint32_t index, mcan_tx_frame_t *tx_frame)
 Transmit CAN message via TX in non-blocking way. More...
 
hpm_stat_t mcan_receive_from_buf_blocking (MCAN_Type *ptr, uint32_t index, mcan_rx_message_t *rx_frame)
 Receive CAN Frame from RXBUF in blocking way. More...
 
hpm_stat_t mcan_receive_from_fifo_blocking (MCAN_Type *ptr, uint32_t fifo_index, mcan_rx_message_t *rx_frame)
 Receive CAN Frame from RXFIFO in blocking way. More...
 
hpm_stat_t mcan_get_timestamp_from_tx_event (MCAN_Type *ptr, const mcan_tx_event_fifo_elem_t *tx_evt, mcan_timestamp_value_t *timestamp)
 Get Timstamp from MCAN TX Event. More...
 
hpm_stat_t mcan_get_timestamp_from_received_message (MCAN_Type *ptr, const mcan_rx_message_t *rx_msg, mcan_timestamp_value_t *timestamp)
 Get Timstamp from MCAN RX frame. More...
 
hpm_stat_t mcan_parse_protocol_status (uint32_t psr, mcan_protocol_status_t *protocol_status)
 Parse the Protocol Status register value. More...
 
hpm_stat_t mcan_get_protocol_status (MCAN_Type *ptr, mcan_protocol_status_t *protocol_status)
 Get MCAN Protocol Status. More...
 

Detailed Description

MCAN driver APIs.

Macro Definition Documentation

◆ MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO0

#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO0   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Accept Non-Matching Frame options.

Save non-matching frame to RXFIFO0

◆ MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO1

#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_IN_RXFIFO1   (1U)

#include <drivers/inc/hpm_mcan_drv.h>

Save non-matching frame to RXFIFO1

◆ MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_REJECT

#define MCAN_ACCEPT_NON_MATCHING_FRAME_OPTION_REJECT   (2U)

#include <drivers/inc/hpm_mcan_drv.h>

Reject non-matching frame

◆ MCAN_CAN_ID_TYPE_EXTENDED

#define MCAN_CAN_ID_TYPE_EXTENDED   (1U)

#include <drivers/inc/hpm_mcan_drv.h>

Extended Identifier

◆ MCAN_CAN_ID_TYPE_STANDARD

#define MCAN_CAN_ID_TYPE_STANDARD   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

CAN Identifier Types.

Standard Identifier

◆ MCAN_DATA_FIELD_SIZE_12BYTES

#define MCAN_DATA_FIELD_SIZE_12BYTES   (1U)

◆ MCAN_DATA_FIELD_SIZE_16BYTES

#define MCAN_DATA_FIELD_SIZE_16BYTES   (2U)

◆ MCAN_DATA_FIELD_SIZE_20BYTES

#define MCAN_DATA_FIELD_SIZE_20BYTES   (3U)

◆ MCAN_DATA_FIELD_SIZE_24BYTES

#define MCAN_DATA_FIELD_SIZE_24BYTES   (4U)

◆ MCAN_DATA_FIELD_SIZE_32BYTES

#define MCAN_DATA_FIELD_SIZE_32BYTES   (5U)

◆ MCAN_DATA_FIELD_SIZE_48BYTES

#define MCAN_DATA_FIELD_SIZE_48BYTES   (6U)

◆ MCAN_DATA_FIELD_SIZE_64BYTES

#define MCAN_DATA_FIELD_SIZE_64BYTES   (7U)

◆ MCAN_DATA_FIELD_SIZE_8BYTES

#define MCAN_DATA_FIELD_SIZE_8BYTES   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Data Field Size Definitions.

◆ MCAN_EVENT_ERROR

#define MCAN_EVENT_ERROR

#include <drivers/inc/hpm_mcan_drv.h>

Value:
#define MCAN_INT_BUS_OFF_STATUS
Definition: hpm_mcan_drv.h:52
#define MCAN_INT_ERROR_PASSIVE
Definition: hpm_mcan_drv.h:54
#define MCAN_INT_PROTOCOL_ERR_IN_DATA_PHASE
Definition: hpm_mcan_drv.h:48
#define MCAN_INT_WARNING_STATUS
Definition: hpm_mcan_drv.h:53
#define MCAN_INT_BIT_ERROR_UNCORRECTED
Definition: hpm_mcan_drv.h:56
#define MCAN_INT_PROTOCOL_ERR_IN_ARB_PHASE
Definition: hpm_mcan_drv.h:49

MCAN Error Event Flags.

◆ MCAN_EVENT_RECEIVE

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Receive Event Flags.

◆ MCAN_EVENT_TRANSMIT

#define MCAN_EVENT_TRANSMIT   (MCAN_INT_TX_COMPLETED)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Transmit Event Flags.

◆ MCAN_EXT_FILTER_ELEM_SIZE_MAX

#define MCAN_EXT_FILTER_ELEM_SIZE_MAX   (64U)

#include <drivers/inc/hpm_mcan_drv.h>

Maximum Extended Filter Element Count

◆ MCAN_FIFO_OPERATION_MODE_BLOCKING

#define MCAN_FIFO_OPERATION_MODE_BLOCKING   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN FIFO Operation Mode types.

◆ MCAN_FIFO_OPERATION_MODE_OVERWRITE

#define MCAN_FIFO_OPERATION_MODE_OVERWRITE   (1U)

◆ MCAN_FILTER_ELEM_CFG_DISABLED

#define MCAN_FILTER_ELEM_CFG_DISABLED   (0)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Filter Configuration Options.

Disable Filter Element

◆ MCAN_FILTER_ELEM_CFG_REJECT_ID_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_REJECT_ID_IF_MATCH   (3U)

#include <drivers/inc/hpm_mcan_drv.h>

Reject ID if matching

◆ MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO0_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO0_IF_MATCH   (5U)

#include <drivers/inc/hpm_mcan_drv.h>

Set Priority and store into RXFIFO1 if matching

◆ MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO1_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_AND_STORE_IN_FIFO1_IF_MATCH   (6U)

◆ MCAN_FILTER_ELEM_CFG_SET_PRIORITY_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_SET_PRIORITY_IF_MATCH   (4U)

#include <drivers/inc/hpm_mcan_drv.h>

Set Priority if matching Set Priority and store into RXFIFO0 if matching

◆ MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO0_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO0_IF_MATCH   (1U)

#include <drivers/inc/hpm_mcan_drv.h>

Store data into RXFIFO0 if matching

◆ MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO1_IF_MATCH

#define MCAN_FILTER_ELEM_CFG_STORE_IN_RX_FIFO1_IF_MATCH   (2U)

#include <drivers/inc/hpm_mcan_drv.h>

Store data into RXFIFO1 if matching

◆ MCAN_FILTER_ELEM_CFG_STORE_INTO_RX_BUFFER_OR_AS_DBG_MSG

#define MCAN_FILTER_ELEM_CFG_STORE_INTO_RX_BUFFER_OR_AS_DBG_MSG   (7U)

#include <drivers/inc/hpm_mcan_drv.h>

Store into RXBUF if matching

◆ MCAN_FILTER_ELEM_EXT_ID_SIZE

#define MCAN_FILTER_ELEM_EXT_ID_SIZE   (8U)

#include <drivers/inc/hpm_mcan_drv.h>

Extended Filter Element SIze in Bytes

◆ MCAN_FILTER_ELEM_STD_ID_SIZE

#define MCAN_FILTER_ELEM_STD_ID_SIZE   (4U)

#include <drivers/inc/hpm_mcan_drv.h>

Standard Filter Element Size in Bytes

◆ MCAN_FILTER_SIZE_CAN_DEFAULT

#define MCAN_FILTER_SIZE_CAN_DEFAULT   (32U)

◆ MCAN_FILTER_SIZE_CANFD_DEFAULT

#define MCAN_FILTER_SIZE_CANFD_DEFAULT   (16U)

◆ MCAN_FILTER_TYPE_CLASSIC_FILTER

#define MCAN_FILTER_TYPE_CLASSIC_FILTER   (2U)

#include <drivers/inc/hpm_mcan_drv.h>

CAN classic filter

◆ MCAN_FILTER_TYPE_DUAL_ID_EXT_FILTER_IGNORE_MASK

#define MCAN_FILTER_TYPE_DUAL_ID_EXT_FILTER_IGNORE_MASK

#include <drivers/inc/hpm_mcan_drv.h>

CAN Identifier Range filter, ignoring extended ID mask

◆ MCAN_FILTER_TYPE_FILTER_DISABLED

#define MCAN_FILTER_TYPE_FILTER_DISABLED   (3U)

#include <drivers/inc/hpm_mcan_drv.h>

CAN filter disabled

◆ MCAN_FILTER_TYPE_RANGE_FILTER

#define MCAN_FILTER_TYPE_RANGE_FILTER   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Filter type definitions.

CAN Identifier Range filter

◆ MCAN_FILTER_TYPE_SPECIFIED_ID_FILTER

#define MCAN_FILTER_TYPE_SPECIFIED_ID_FILTER   (1U)

#include <drivers/inc/hpm_mcan_drv.h>

CAN Identifier ID filter

◆ MCAN_INT_ACCESS_TO_RESERVED_ADDR

#define MCAN_INT_ACCESS_TO_RESERVED_ADDR   MCAN_IR_ARA_MASK

#include <drivers/inc/hpm_mcan_drv.h>

CAN Interrupt Mask.

Access to Reserved Address

◆ MCAN_INT_BIT_ERROR_CORRECTED

#define MCAN_INT_BIT_ERROR_CORRECTED   MCAN_IR_BEC_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Bit Error was corrected

◆ MCAN_INT_BIT_ERROR_UNCORRECTED

#define MCAN_INT_BIT_ERROR_UNCORRECTED   MCAN_IR_BEU_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Bit Error was not corrected

◆ MCAN_INT_BUS_OFF_STATUS

#define MCAN_INT_BUS_OFF_STATUS   MCAN_IR_BO_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Bus-off State Change

◆ MCAN_INT_ERROR_LOGGING_OVERFLOW

#define MCAN_INT_ERROR_LOGGING_OVERFLOW   MCAN_IR_ELO_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Error Logging Overflow

◆ MCAN_INT_ERROR_PASSIVE

#define MCAN_INT_ERROR_PASSIVE   MCAN_IR_EP_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Error Passive State Change

◆ MCAN_INT_HIGH_PRIORITY_MSG

#define MCAN_INT_HIGH_PRIORITY_MSG   MCAN_IR_HPM_MASK

#include <drivers/inc/hpm_mcan_drv.h>

High Priority Message

◆ MCAN_INT_MSG_RAM_ACCESS_FAILURE

#define MCAN_INT_MSG_RAM_ACCESS_FAILURE   MCAN_IR_MRAF_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Message RAM Access Failure

◆ MCAN_INT_MSG_STORE_TO_RXBUF

#define MCAN_INT_MSG_STORE_TO_RXBUF   MCAN_IR_DRX_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Message was stored to RX Buffer

◆ MCAN_INT_PROTOCOL_ERR_IN_ARB_PHASE

#define MCAN_INT_PROTOCOL_ERR_IN_ARB_PHASE   MCAN_IR_PEA_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Protocol Error Happened at Arbitration Phase

◆ MCAN_INT_PROTOCOL_ERR_IN_DATA_PHASE

#define MCAN_INT_PROTOCOL_ERR_IN_DATA_PHASE   MCAN_IR_PED_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Protocol Error Happened at Data Phase

◆ MCAN_INT_RXFIFO0_FULL

#define MCAN_INT_RXFIFO0_FULL   MCAN_IR_RF0F_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO0 Full

◆ MCAN_INT_RXFIFO0_MSG_LOST

#define MCAN_INT_RXFIFO0_MSG_LOST   MCAN_IR_RF0L_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO0 Message Lost

◆ MCAN_INT_RXFIFO0_NEW_MSG

#define MCAN_INT_RXFIFO0_NEW_MSG   MCAN_IR_RF0N_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO0 New Message

◆ MCAN_INT_RXFIFO0_WMK_REACHED

#define MCAN_INT_RXFIFO0_WMK_REACHED   MCAN_IR_RF0W_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO0 Watermark Reached

◆ MCAN_INT_RXFIFO1_FULL

#define MCAN_INT_RXFIFO1_FULL   MCAN_IR_RF1F_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO1 Full

◆ MCAN_INT_RXFIFO1_MSG_LOST

#define MCAN_INT_RXFIFO1_MSG_LOST   MCAN_IR_RF1L_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO0 Message Lost

◆ MCAN_INT_RXFIFO1_NEW_MSG

#define MCAN_INT_RXFIFO1_NEW_MSG   MCAN_IR_RF1N_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO1 New Message

◆ MCAN_INT_RXFIFO1_WMK_REACHED

#define MCAN_INT_RXFIFO1_WMK_REACHED   MCAN_IR_RF1W_MASK

#include <drivers/inc/hpm_mcan_drv.h>

RX FIFO1 Watermark Reached

◆ MCAN_INT_TIMEOUT_OCCURRED

#define MCAN_INT_TIMEOUT_OCCURRED   MCAN_IR_TOO_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Timeout Interrupt

◆ MCAN_INT_TIMESTAMP_WRAPAROUND

#define MCAN_INT_TIMESTAMP_WRAPAROUND   MCAN_IR_TSW_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Timestamp Counter Wrap Around

◆ MCAN_INT_TX_CANCEL_FINISHED

#define MCAN_INT_TX_CANCEL_FINISHED   MCAN_IR_TCF_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Transmission Cancellation Finished

◆ MCAN_INT_TX_COMPLETED

#define MCAN_INT_TX_COMPLETED   MCAN_IR_TC_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Transmission Completed

◆ MCAN_INT_TX_EVT_FIFO_EVT_LOST

#define MCAN_INT_TX_EVT_FIFO_EVT_LOST   MCAN_IR_TEFL_MASK

#include <drivers/inc/hpm_mcan_drv.h>

TX Event FIFO Element Lost

◆ MCAN_INT_TX_EVT_FIFO_FULL

#define MCAN_INT_TX_EVT_FIFO_FULL   MCAN_IR_TEFF_MASK

#include <drivers/inc/hpm_mcan_drv.h>

TX Event FIFO Full

◆ MCAN_INT_TX_EVT_FIFO_NEW_ENTRY

#define MCAN_INT_TX_EVT_FIFO_NEW_ENTRY   MCAN_IR_TEFN_MASK

#include <drivers/inc/hpm_mcan_drv.h>

TX Event FIFO New Entry

◆ MCAN_INT_TX_EVT_FIFO_WMK_REACHED

#define MCAN_INT_TX_EVT_FIFO_WMK_REACHED   MCAN_IR_TEFW_MASK

#include <drivers/inc/hpm_mcan_drv.h>

TX Event FIFO Watermark Reached

◆ MCAN_INT_TXFIFO_EMPTY

#define MCAN_INT_TXFIFO_EMPTY   MCAN_IR_TFE_MASK

#include <drivers/inc/hpm_mcan_drv.h>

TX FIFO Empty

◆ MCAN_INT_WARNING_STATUS

#define MCAN_INT_WARNING_STATUS   MCAN_IR_EW_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Error Warning State Change

◆ MCAN_INT_WATCHDOG_INT

#define MCAN_INT_WATCHDOG_INT   MCAN_IR_WDI_MASK

#include <drivers/inc/hpm_mcan_drv.h>

Watchdog interrupt

◆ MCAN_MESSAGE_HEADER_SIZE_IN_BYTES

#define MCAN_MESSAGE_HEADER_SIZE_IN_BYTES   (8U)

#include <drivers/inc/hpm_mcan_drv.h>

CAN Message Header Size.

◆ MCAN_MESSAGE_HEADER_SIZE_IN_WORDS

#define MCAN_MESSAGE_HEADER_SIZE_IN_WORDS   (2U)

◆ MCAN_MESSAGE_STORAGE_INDICATOR_FIFO_MESSAGE_LOST

#define MCAN_MESSAGE_STORAGE_INDICATOR_FIFO_MESSAGE_LOST   (1U)

◆ MCAN_MESSAGE_STORAGE_INDICATOR_NO_FIFO_SELECTED

#define MCAN_MESSAGE_STORAGE_INDICATOR_NO_FIFO_SELECTED   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Message Storage Indicator Types.

◆ MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO0

#define MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO0   (2U)

◆ MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO1

#define MCAN_MESSAGE_STORAGE_INDICATOR_RXFIFO1   (3U)

◆ MCAN_RAM_WORD_SIZE

#define MCAN_RAM_WORD_SIZE   (640U)

#include <drivers/inc/hpm_mcan_drv.h>

RAM WORD Size

◆ MCAN_RX_RETRY_COUNT_MAX

#define MCAN_RX_RETRY_COUNT_MAX   (80000000UL)

#include <drivers/inc/hpm_mcan_drv.h>

Maximum Receive Wait Retry Count.

◆ MCAN_RXBUF_SIZE_CAN_DEFAULT

#define MCAN_RXBUF_SIZE_CAN_DEFAULT   (16U)

◆ MCAN_RXBUF_SIZE_CANFD_DEFAULT

#define MCAN_RXBUF_SIZE_CANFD_DEFAULT   (4U)

◆ MCAN_RXFIFO_SIZE_CAN_DEFAULT

#define MCAN_RXFIFO_SIZE_CAN_DEFAULT   (32U)

◆ MCAN_RXFIFO_SIZE_CANFD_DEFAULT

#define MCAN_RXFIFO_SIZE_CANFD_DEFAULT   (8U)

◆ MCAN_STD_FILTER_ELEM_SIZE_MAX

#define MCAN_STD_FILTER_ELEM_SIZE_MAX   (128U)

#include <drivers/inc/hpm_mcan_drv.h>

Maximum Standard Filter Element Count

◆ MCAN_TIMEOUT_SEL_TYPE_CONTINUOUS_OPERATION

#define MCAN_TIMEOUT_SEL_TYPE_CONTINUOUS_OPERATION   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timeout Selection Options.

◆ MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO0

#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO0   (2U)

◆ MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO1

#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_RX_FIFO1   (3U)

◆ MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_TX_EVT_FIFO

#define MCAN_TIMEOUT_SEL_TYPE_TIMEOUT_CTRL_BY_TX_EVT_FIFO   (1U)

◆ MCAN_TIMESTAMP_SEL_EXT_TS_VAL_USED

#define MCAN_TIMESTAMP_SEL_EXT_TS_VAL_USED   (2U)

#include <drivers/inc/hpm_mcan_drv.h>

External Timestamp value used

◆ MCAN_TIMESTAMP_SEL_MAX

#define MCAN_TIMESTAMP_SEL_MAX   (MCAN_TIMESTAMP_SEL_EXT_TS_VAL_USED)

◆ MCAN_TIMESTAMP_SEL_MIN

#define MCAN_TIMESTAMP_SEL_MIN   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timestamp Select.

◆ MCAN_TIMESTAMP_SEL_VALUE_ALWAYS_ZERO

#define MCAN_TIMESTAMP_SEL_VALUE_ALWAYS_ZERO   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

Timestamp value always equal to 0

◆ MCAN_TIMESTAMP_SEL_VALUE_INCREMENT

#define MCAN_TIMESTAMP_SEL_VALUE_INCREMENT   (1U)

#include <drivers/inc/hpm_mcan_drv.h>

Timestamp value increments according to prescaler

◆ MCAN_TX_RETRY_COUNT_MAX

#define MCAN_TX_RETRY_COUNT_MAX   (10000000UL)

#include <drivers/inc/hpm_mcan_drv.h>

Maximum Transmission Retry Count.

◆ MCAN_TXBUF_OPERATION_MODE_FIFO

#define MCAN_TXBUF_OPERATION_MODE_FIFO   (0U)

#include <drivers/inc/hpm_mcan_drv.h>

MCAN TXBUF operation mode types.

◆ MCAN_TXBUF_OPERATION_MODE_QUEUE

#define MCAN_TXBUF_OPERATION_MODE_QUEUE   (1U)

◆ MCAN_TXBUF_SIZE_CAN_DEFAULT

#define MCAN_TXBUF_SIZE_CAN_DEFAULT   (32U)

◆ MCAN_TXBUF_SIZE_CANFD_DEFAULT

#define MCAN_TXBUF_SIZE_CANFD_DEFAULT   (8U)

◆ MCAN_TXEVT_ELEM_SIZE

#define MCAN_TXEVT_ELEM_SIZE   (8U)

◆ MCAN_TXRX_ELEM_SIZE_CAN_MAX

#define MCAN_TXRX_ELEM_SIZE_CAN_MAX   (4U * sizeof(uint32_t))

◆ MCAN_TXRX_ELEM_SIZE_CANFD_MAX

#define MCAN_TXRX_ELEM_SIZE_CANFD_MAX   (18U * sizeof(uint32_t))

Typedef Documentation

◆ mcan_activity_state_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Communication State.

◆ mcan_all_filters_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Configuration for all filters.

Note
The MCAN RAM related settings are excluded

◆ mcan_bit_timing_option_t

#include <drivers/inc/hpm_mcan_drv.h>

CAN Bit Timing Options.

◆ mcan_bit_timing_param_t

#include <drivers/inc/hpm_mcan_drv.h>

CAN Bit Timing Parameters.

◆ mcan_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Configuration Structure.

◆ mcan_error_count_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Error Count Information.

◆ mcan_filter_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Filter Configuration.

◆ mcan_filter_elem_list_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Filter Element List structure.

◆ mcan_filter_elem_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Filter Element definitions.

◆ mcan_global_filter_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Global CAN configuration.

◆ mcan_high_priority_message_status_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN High Priority Message Status Information.

◆ mcan_internal_timestamp_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Internal timestamp configuration.

◆ mcan_last_err_code_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Last Error Code.

◆ mcan_node_mode_t

#include <drivers/inc/hpm_mcan_drv.h>

CAN Node Mode types.

◆ mcan_protocol_status_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Protocol Status.

◆ mcan_ram_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN RAM configuration.

Note
: This Configuration focuses on the minimum required information for MCAN RAM configuration The Start address of each BUF/FIFO will be automatically calculated by the MCAN Driver API This RAM configuration is recommended for the most developers

◆ mcan_ram_flexible_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN RAM Flexible Configuration.

Note
This Configuration provides the full MCAN RAM configuration, this configuration is recommended only for experienced developers who is skilled at the MCAN IP

◆ mcan_rx_fifo_or_buf_elem_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN RXBUF or RXFIFO Element Configuration.

◆ mcan_rx_message_t

#include <drivers/inc/hpm_mcan_drv.h>

CAN Receive Message Frame.

Note
Users need to pay attention to the CAN Identifier settings For standard identifier, the use_ext_id should be set to 0 and the std_id should be used For extended identifier, the use_ext_id should be set to 1 and the ext_id should be used

◆ mcan_rxfifo_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN RXFIFO Configuration.

◆ mcan_tdc_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Transmitter Delay Compensation Configuration.

◆ mcan_timeout_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timeout configuration structure.

◆ mcan_timeout_counter_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timeout Counter Configuration.

◆ mcan_timeout_sel_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timeout Selection Options.

◆ mcan_timestamp_value_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timestamp Value.

◆ mcan_tsu_config_t

#include <drivers/inc/hpm_mcan_drv.h>

MCAN TSU Configuration.

◆ mcan_tx_event_fifo_elem_t

#include <drivers/inc/hpm_mcan_drv.h>

TX Event Fifo Element Structure.

◆ mcan_tx_frame_t

#include <drivers/inc/hpm_mcan_drv.h>

CAN Transmit Message Frame.

Note
Users need to pay attention to the CAN Identifier settings For standard identifier, the use_ext_id should be set to 0 and the std_id should be used For extended identifier, the use_ext_id should be set to 1 and the ext_id should be used

◆ mcan_txbuf_config_t

◆ mcan_txbuf_elem_config_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_mcan_drv.h>

Enumerator
status_mcan_filter_index_out_of_range 
status_mcan_rxfifo_empty 
status_mcan_rxfifo_full 
status_mcan_txbuf_full 
status_mcan_txfifo_full 
status_mcan_rxfifo0_busy 
status_mcan_rxfifo1_busy 
status_mcan_txbuf_index_out_of_range 
status_mcan_rxbuf_index_out_of_range 
status_mcan_rxbuf_empty 
status_mcan_tx_evt_fifo_empty 
status_mcan_timestamp_not_exist 
status_mcan_ram_out_of_range 
status_mcan_timeout 

◆ mcan_activity_enum

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Communication State.

Enumerator
mcan_activity_sync 

Node is synchronizing on CAN communication

mcan_activity_idle 

Node is neither receiver nor transmitter

mcan_activity_receiver 

Node is operating as receiver

mcan_activity_transmitter 

Node is operating as transmitter

◆ mcan_bit_timing_option

#include <drivers/inc/hpm_mcan_drv.h>

CAN Bit Timing Options.

Enumerator
mcan_bit_timing_can2_0 

CAN 2.0 bit timing option

mcan_bit_timing_canfd_nominal 

CANFD nominal timing option

mcan_bit_timing_canfd_data 

CANFD data timing option

◆ mcan_last_error_code

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Last Error Code.

Enumerator
mcan_last_error_code_no_error 

No error happened

mcan_last_error_code_stuff_error 

Stuff Error

mcan_last_error_code_format_error 

Format Error

mcan_last_error_code_ack_error 

Acknowledge Error

mcan_last_error_code_bit1_error 

Sent logic 1 but monitored value is logic 0

mcan_last_error_code_bit0_error 

Sent logic 0 but monitored value is logic 1

mcan_last_error_code_crc_error 

CRC checksum for received message is wrong

mcan_last_error_code_no_change 

Error code was not changed

◆ mcan_node_mode_enum

#include <drivers/inc/hpm_mcan_drv.h>

CAN Node Mode types.

Enumerator
mcan_mode_normal 

CAN works in normal mode

mcan_mode_loopback_internal 

CAN works in internal loopback mode

mcan_mode_loopback_external 

CAN works in external loopback mode

mcan_mode_listen_only 

CAN works in listen-only mode

◆ mcan_timeout_sel_enum

#include <drivers/inc/hpm_mcan_drv.h>

MCAN Timeout Selection Options.

Enumerator
mcan_timeout_continuous_operation 

Continuously count down timeout after writing to TOCV register

mcan_timeout_triggered_by_tx_evt_fifo 

Count down if the TX EVT FIFO is not empty

mcan_timeout_triggered_by_rx_fifo0 

Count down if the RX FIFO0 is not empty

mcan_timeout_triggered_by_rx_fifo1 

Count down if the RX FIFO1 is not empty

Function Documentation

◆ mcan_clear_interrupt_flags()

static void mcan_clear_interrupt_flags ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Clear Interrupt Flags.

Parameters
[in]ptrMCAN base
[in]maskInterrupt Mask

◆ mcan_clear_rxbuf_data_available_flag()

static void mcan_clear_rxbuf_data_available_flag ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Clear RXBUF Data available Flag for specified RXBUF.

Parameters
[in]ptrMCAN base
[in]indexRXBUF index

◆ mcan_config_all_filters()

hpm_stat_t mcan_config_all_filters ( MCAN_Type ptr,
mcan_all_filters_config_t config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Configure All CAN filters.

Parameters
[in]ptrMCAN base
[in]configAll CAN Filter configuration
Returns
status_success if no errors reported

◆ mcan_config_ram()

hpm_stat_t mcan_config_ram ( MCAN_Type ptr,
mcan_ram_config_t config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Configure MCAN RAM will Simplified RAM configuration.

Parameters
[in]ptrMCAN base
[in]configMCAN RAM configuration
Returns
status_success if no errors reported

◆ mcan_config_ram_with_flexible_config()

hpm_stat_t mcan_config_ram_with_flexible_config ( MCAN_Type ptr,
mcan_ram_flexible_config_t config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Configure MCAN RAM will Full RAM configuration.

Parameters
[in]ptrMCAN base
[in]configMCAN RAM Full Configuration
Returns
status_success if no errors reported

◆ mcan_config_transmitter_delay_compensation()

hpm_stat_t mcan_config_transmitter_delay_compensation ( MCAN_Type ptr,
mcan_tdc_config_t config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Configure Transmitter Delay Compensation.

Parameters
[in]ptrMCAN base
[in]configTransmitter Delay compensation configure
Returns
status_success if no errors reported

◆ mcan_deinit()

void mcan_deinit ( MCAN_Type ptr)

#include <drivers/inc/hpm_mcan_drv.h>

De-Initialize CAN controller.

Parameters
[in]ptrMCAN base

◆ mcan_disable_auto_retransmission()

static void mcan_disable_auto_retransmission ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Auto Transmission.

Parameters
[in]ptrMCAN base

◆ mcan_disable_bitrate_switch()

static void mcan_disable_bitrate_switch ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Bit Rate Switch.

Parameters
[in]ptrMCAN base

◆ mcan_disable_bus_monitoring_mode()

static void mcan_disable_bus_monitoring_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Bus monitoring Mode.

Parameters
[in]ptrMCAN base

◆ mcan_disable_edge_filtering()

static void mcan_disable_edge_filtering ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Edge Filtering.

Parameters
[in]ptrMCAN base

◆ mcan_disable_interrupts()

static void mcan_disable_interrupts ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Interrupts.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_disable_protocol_exception_handling()

static void mcan_disable_protocol_exception_handling ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Protocol Exception Handling.

Parameters
[in]ptrMCAN base

◆ mcan_disable_restricted_operation_mode()

static void mcan_disable_restricted_operation_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Restricted Operation Mode.

Parameters
[in]ptrMCAN base

◆ mcan_disable_transmit_pause()

static void mcan_disable_transmit_pause ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Transmit Pause.

Parameters
[in]ptrMCAN base

◆ mcan_disable_tsu()

static void mcan_disable_tsu ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable External Timestamp Unit.

Parameters
[in]ptrMCAN base

◆ mcan_disable_txbuf_cancel_finish_interrupt()

static void mcan_disable_txbuf_cancel_finish_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable TXBUF Cancellation Finish interrupt.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_disable_txbuf_interrupt()

static void mcan_disable_txbuf_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable TXBUF Interrupt.

Deprecated:
This API is deprecated, will be removed in later SDK release
Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_disable_txbuf_transmission_interrupt()

static void mcan_disable_txbuf_transmission_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable TXBUF Transmission interrupt.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_disable_wide_message_marker()

static void mcan_disable_wide_message_marker ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disable Wide Message Marker.

Parameters
[in]ptrMCAN base

◆ mcan_disable_write_to_prot_config_registers()

static void mcan_disable_write_to_prot_config_registers ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Disalbe Write Access to Protected Configuration Registers.

Parameters
[in]ptrMCAN base

◆ mcan_enable_auto_retransmission()

static void mcan_enable_auto_retransmission ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Auto Retransmission.

Parameters
[in]ptrMCAN base

◆ mcan_enable_bitrate_switch()

static void mcan_enable_bitrate_switch ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Bit Rate Switch.

Parameters
[in]ptrMCAN base

◆ mcan_enable_bus_monitoring_mode()

static void mcan_enable_bus_monitoring_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Bus monitoring Mode.

Parameters
[in]ptrMCAN base

◆ mcan_enable_clock()

static void mcan_enable_clock ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable MCAN clock.

Parameters
[in]ptrMCAN base

◆ mcan_enable_edge_filtering()

static void mcan_enable_edge_filtering ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Edge Filtering.

Parameters
[in]ptrMCAN base

◆ mcan_enable_interrupts()

static void mcan_enable_interrupts ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Interrupts.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_enable_protocol_exception_handling()

static void mcan_enable_protocol_exception_handling ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Protocol Exception Handling.

Parameters
[in]ptrMCAN base

◆ mcan_enable_restricted_operation_mode()

static void mcan_enable_restricted_operation_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Restricted Operation Mode.

Parameters
[in]ptrMCAN base

◆ mcan_enable_transmit_pause()

static void mcan_enable_transmit_pause ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Transmit Pause.

Parameters
[in]ptrMCAN base

◆ mcan_enable_tsu()

static void mcan_enable_tsu ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable External Timestamp Unit.

Parameters
[in]ptrMCAN base

◆ mcan_enable_txbuf_cancel_finish_interrupt()

static void mcan_enable_txbuf_cancel_finish_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable TXBUF Cancellation Finish interrupt.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_enable_txbuf_interrupt()

static void mcan_enable_txbuf_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable TXBUF Interrupt.

Deprecated:
This API is deprecated, will be removed in later SDK release
Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_enable_txbuf_transmission_interrupt()

static void mcan_enable_txbuf_transmission_interrupt ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable TXBUF Transmission interrupt.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask

◆ mcan_enable_wide_message_marker()

static void mcan_enable_wide_message_marker ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Wide Message Marker.

Parameters
[in]ptrMCAN base

◆ mcan_enable_write_to_prot_config_registers()

static void mcan_enable_write_to_prot_config_registers ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Enable Write Access to Protected Configuration Registers.

Parameters
[in]ptrMCAN base

◆ mcan_enter_init_mode()

static void mcan_enter_init_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Switch MCAN to Initialization mode.

Parameters
[in]ptrMCAN base

◆ mcan_enter_normal_mode()

static void mcan_enter_normal_mode ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Switch MCAN to Normal mode.

Parameters
[in]ptrMCAN base

◆ mcan_get_activity()

static uint8_t mcan_get_activity ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get CAN Activity.

Parameters
[in]ptrMCAN base
Returns
CAN IP activity

◆ mcan_get_data_field_size()

uint8_t mcan_get_data_field_size ( uint8_t  data_field_size_option)

#include <drivers/inc/hpm_mcan_drv.h>

Get the Data field size from data field size option.

Parameters
[in]data_field_size_optionData size option
Returns
data field size in bytes

◆ mcan_get_data_phase_last_error_code()

static uint8_t mcan_get_data_phase_last_error_code ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get the Last Data Phase Error.

Parameters
[in]ptrMCAN base
Deprecated:
This API will be removed in later SDK release
Returns
The last Data Phase Error

◆ mcan_get_default_config()

void mcan_get_default_config ( MCAN_Type ptr,
mcan_config_t config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get Default CAN configuration.

Parameters
[in]ptrMCAN base
[out]configCAN configuration

< Default CAN2.0 baudrate:500 kbps

< Default CANFD baudrate: 2 Mbps

◆ mcan_get_default_ram_config()

void mcan_get_default_ram_config ( MCAN_Type ptr,
mcan_ram_config_t simple_config,
bool  enable_canfd 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get Default MCAN RAM configuration If the device is configured as classic CAN node, the default CAN RAM settings are as below:

  • Standard Identifier Filter Elements: 32
  • Extended Identifier Filter Elements: 32
  • TXBUF Elements Info:
    • Element Count:32
    • Dedicated TXBUF element count: 16
    • TXFIFO/QQueue element count: 16
    • Data Field Size: 8
  • RXFIFO0 Elements Info:
    • Element Count :32
    • Data Field Size: 8
  • RXFIFO1 Elements Info:
    • Element Count : 32
    • Data Field Size: 8
  • RXBUF Element Info:
    • Element Count: 16
    • Data Field Size : 8
  • TX Event FIFO Element Count: 32

If the device is configured as CANFD node, the default CAN RAM settings are as below:

  • Standard Identifier Filter Elements: 16
  • Extended Identifier Filter Elements: 16
  • TXBUF Elements Info:
    • Element Count:8
    • Dedicated TXBUF element count: 4
    • TXFIFO/QQueue element count: 4
    • Data Field Size: 64
  • RXFIFO0 Elements Info:
    • Element Count : 8
    • Data Field Size: 64
  • RXFIFO1 Elements Info:
    • Element Count : 8
    • Data Field Size: 64
  • RXBUF Element Info:
    • Element Count: 4
    • Data Field Size : 64
  • TX Event FIFO Element Count: 8
Parameters
[in]ptrMCAN base
[out]simple_configSimple CAN RAM Configuration
[in]enable_canfdCANFD enable flag

◆ mcan_get_default_ram_flexible_config()

void mcan_get_default_ram_flexible_config ( MCAN_Type ptr,
mcan_ram_flexible_config_t ram_config,
bool  enable_canfd 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get Default Full MCAN RAM configuration If the device is configured as classic CAN node, the default CAN RAM settings are as below:

  • Standard Identifier Filter Elements: 32
  • Extended Identifier Filter Elements: 32
  • TXBUF Elements Info:
    • Element Count:32
    • Dedicated TXBUF element count: 16
    • TXFIFO/QQueue element count: 16
    • Data Field Size: 8
  • RXFIFO0 Elements Info:
    • Element Count :32
    • Data Field Size: 8
  • RXFIFO1 Elements Info:
    • Element Count : 32
    • Data Field Size: 8
  • RXBUF Element Info:
    • Element Count: 16
    • Data Field Size : 8
  • TX Event FIFO Element Count: 32

If the device is configured as CANFD node, the default CAN RAM settings are as below:

  • Standard Identifier Filter Elements: 16
  • Extended Identifier Filter Elements: 16
  • TXBUF Elements Info:
    • Element Count:8
    • Dedicated TXBUF element count: 4
    • TXFIFO/QQueue element count: 4
    • Data Field Size: 64
  • RXFIFO0 Elements Info:
    • Element Count : 8
    • Data Field Size: 64
  • RXFIFO1 Elements Info:
    • Element Count : 8
    • Data Field Size: 64
  • RXBUF Element Info:
    • Element Count: 4
    • Data Field Size : 64
  • TX Event FIFO Element Count: 8
Parameters
[in]ptrMCAN base
[out]ram_configCAN RAM Configuration
[in]enable_canfdCANFD enable flag

◆ mcan_get_error_counter()

static void mcan_get_error_counter ( MCAN_Type ptr,
mcan_error_count_t err_cnt 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Error Counter Information.

Parameters
[in]ptrMCAN base
[out]err_cntError Count buffer

◆ mcan_get_high_priority_message_status()

void mcan_get_high_priority_message_status ( MCAN_Type ptr,
mcan_high_priority_message_status_t status 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get High Priority Message Status.

Parameters
[in]ptrMCAN base
[out]statusPointer to High Priority Message Status Buffer

◆ mcan_get_interrupt_flags()

static uint32_t mcan_get_interrupt_flags ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Interrupt Flags.

Parameters
[in]ptrMCAN base
Returns
Interrupt Flags

◆ mcan_get_last_data_error_code()

static uint8_t mcan_get_last_data_error_code ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Last Data Phase Error Code.

Parameters
[in]ptrMCAN base
Returns
Last Error Code in Data phase

◆ mcan_get_last_error_code()

static uint8_t mcan_get_last_error_code ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Last Error Code.

Parameters
[in]ptrMCAN base
Returns
Last Error code

◆ mcan_get_message_size_from_dlc()

uint8_t mcan_get_message_size_from_dlc ( uint8_t  dlc)

#include <drivers/inc/hpm_mcan_drv.h>

Get message Size from Data Length Code.

Parameters
[in]dlcData Length Code
Returns
Message Size in Bytes

◆ mcan_get_protocol_status()

hpm_stat_t mcan_get_protocol_status ( MCAN_Type ptr,
mcan_protocol_status_t protocol_status 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get MCAN Protocol Status.

Parameters
[in]ptrMCAN base
[out]protocol_statusTranslated Protocol status
Return values
status_invalid_argumentif any parameters are invalid
status_successif no errors happened

◆ mcan_get_timeout_counter_value()

static uint16_t mcan_get_timeout_counter_value ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Timeout value.

Parameters
[in]ptrMCAN base
Returns
timeout value

◆ mcan_get_timestamp_counter_value()

static uint16_t mcan_get_timestamp_counter_value ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get Timestamp Counter Value.

Parameters
[in]ptrMCAN base
Returns
timestamp value

◆ mcan_get_timestamp_from_received_message()

hpm_stat_t mcan_get_timestamp_from_received_message ( MCAN_Type ptr,
const mcan_rx_message_t rx_msg,
mcan_timestamp_value_t timestamp 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get Timstamp from MCAN RX frame.

Parameters
[in]ptrMCAN base
[in]rx_msgReceived message
[out]timestampTimestamp value
Return values
status_successif no errors happened
status_invalid_argumentif any parameters are invalid
status_mcan_timestamp_not_existif no timestamp information is available

◆ mcan_get_timestamp_from_tx_event()

hpm_stat_t mcan_get_timestamp_from_tx_event ( MCAN_Type ptr,
const mcan_tx_event_fifo_elem_t tx_evt,
mcan_timestamp_value_t timestamp 
)

#include <drivers/inc/hpm_mcan_drv.h>

Get Timstamp from MCAN TX Event.

Parameters
[in]ptrMCAN base
[in]tx_evtTX Event Element
[out]timestampTimestamp value
Return values
status_successif no errors happened
status_invalid_argumentif any parameters are invalid
status_mcan_timestamp_not_existif no timestamp information is available

◆ mcan_get_transmitter_delay_compensation_value()

static uint8_t mcan_get_transmitter_delay_compensation_value ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get the Transmitter Delay Compensation Value.

Parameters
[in]ptrMCAN base
Returns
Transmitter Delay Compensation value

◆ mcan_get_txfifo_put_index()

static uint32_t mcan_get_txfifo_put_index ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Get the TXFIFO Put Index.

Parameters
[in]ptrMCAN base
Returns
The TX FIFO Put Index

◆ mcan_init()

hpm_stat_t mcan_init ( MCAN_Type ptr,
mcan_config_t config,
uint32_t  src_clk_freq 
)

#include <drivers/inc/hpm_mcan_drv.h>

Initialize CAN controller.

Parameters
[in]ptrMCAN base
[in]configCAN configuration
[in]src_clk_freqCAN clock frequency
Return values
status_successif operation is successful
status_invalid_argumentif any parameters are invalid

◆ mcan_interrupt_line_select()

static void mcan_interrupt_line_select ( MCAN_Type ptr,
uint32_t  mask,
uint8_t  line_index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Select Interrupt Line.

Parameters
[in]ptrMCAN base
[in]maskInterrupt mask
[in]line_indexInterrupt Line Index

◆ mcan_is_64bit_tsu_timestamp_used()

static bool mcan_is_64bit_tsu_timestamp_used ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether 64-bit TSU timestamp is used.

Parameters
[in]ptrMCAN base
Return values
trueif 64-bit timestamp is used
falseif 32-bit timestamp is used

◆ mcan_is_bitrate_switch_flag_set_in_last_received_canfd_msg()

static bool mcan_is_bitrate_switch_flag_set_in_last_received_canfd_msg ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the Bitrate Switch Flag is set in the last received CANFD message.

Parameters
[in]ptrMCAN base
Returns
true if Bit rate switch flag is set in the last received CANFD message

◆ mcan_is_canfd_message_received()

static bool mcan_is_canfd_message_received ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether CANFD messages were received.

Parameters
[in]ptrMCAN base
Returns
true if a CANFD message was received

◆ mcan_is_clock_enabled()

static bool mcan_is_clock_enabled ( MCAN_Type ptr)
inlinestatic

◆ mcan_is_clock_stopped()

static bool mcan_is_clock_stopped ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether CAN clock is stopped or not.

Parameters
[in]ptrMCAN base

◆ mcan_is_error_state_indicator_flag_set_in_last_received_canfd_msg()

static bool mcan_is_error_state_indicator_flag_set_in_last_received_canfd_msg ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check Whether the Error Status Indicator Flag is set in the last received CANFD message.

Parameters
[in]ptrMCAN base
Returns
true if the Error Status Indicator Flag is set in the last received CANFD Message

◆ mcan_is_in_busoff_state()

static bool mcan_is_in_busoff_state ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the CAN node is under Bus-off state.

Parameters
[in]ptrMCAN base
Returns
true if the CAN node is under Bus-off state

◆ mcan_is_in_err_passive_state()

static bool mcan_is_in_err_passive_state ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the CAN node is under error passive state.

Parameters
[in]ptrMCAN base
Returns
true is CAN is under error passive state

◆ mcan_is_in_error_warning_state()

static bool mcan_is_in_error_warning_state ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the CAN mode is under Warning State.

Parameters
[in]ptrMCAN base
Returns
true if the CAN node is under Error Warning State

◆ mcan_is_interrupt_flag_set()

static bool mcan_is_interrupt_flag_set ( MCAN_Type ptr,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether specified Interrupt is set.

Parameters
[in]ptrMCAN Base
[in]maskInterrupt Flags
Return values
trueif corresponding bits are set

◆ mcan_is_protocol_exception_event_occurred()

static bool mcan_is_protocol_exception_event_occurred ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether Protocol Exception Events were occurred.

Parameters
[in]ptrMCAN base
Returns
true if Protocol Exception Events were occurred

◆ mcan_is_rxbuf_data_available()

static bool mcan_is_rxbuf_data_available ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check Whether there are data available in specified RXBUF.

Parameters
[in]ptrMCAN Base
[in]indexRXBUF index
Returns
True if there are data available

◆ mcan_is_transmit_occurred()

static bool mcan_is_transmit_occurred ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the Transmission completed via specified TXBUF/TXFIFO.

Parameters
[in]ptrMCAN base
[in]indexTXBUF Index
Returns
True is the Transmission completed via specified TXBUF

◆ mcan_is_transmit_request_pending()

static bool mcan_is_transmit_request_pending ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether a TXFIFO/TXBUF transmission request is pending.

Parameters
[in]ptrCAN Base
[in]indexTXBUF/TXFIFO Index
Returns
True is the specified TXFIFO/TXBUF Transmission request is pending

◆ mcan_is_tsu_timestamp_available()

static bool mcan_is_tsu_timestamp_available ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether the TSU timestamp is available.

Parameters
[in]ptrMCAN base
[in]indexTimestamp pointer
Return values
trueTSU Timestamp is available
falseTSU timestamp is unavailable

◆ mcan_is_tsu_used()

static bool mcan_is_tsu_used ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether TSU is used.

Parameters
[in]ptrMCAN base
Return values
trueif TSU is used
falseif TSU is not used

◆ mcan_is_txfifo_full()

static bool mcan_is_txfifo_full ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Check whether TXFIFO is full.

Parameters
[in]ptrMCAN base
Returns
true if TXFIFO is full

◆ mcan_parse_protocol_status()

hpm_stat_t mcan_parse_protocol_status ( uint32_t  psr,
mcan_protocol_status_t protocol_status 
)

#include <drivers/inc/hpm_mcan_drv.h>

Parse the Protocol Status register value.

Parameters
[in]psrProtocol Status Register Value
[out]protocol_statusTranslated Protocol Status
Return values
status_invalid_argumentif any parameters are invalid
status_successif no errors happened

◆ mcan_read_32bit_tsu_timestamp()

uint32_t mcan_read_32bit_tsu_timestamp ( MCAN_Type ptr,
uint32_t  index 
)

#include <drivers/inc/hpm_mcan_drv.h>

Read 32bit Timestamp value from TSU.

Parameters
[in]ptrMCAN Base
[in]indexTimestamp pointer
Returns
Timestamp value

◆ mcan_read_64bit_tsu_timestamp()

uint64_t mcan_read_64bit_tsu_timestamp ( MCAN_Type ptr,
uint32_t  index 
)

#include <drivers/inc/hpm_mcan_drv.h>

Read 64bit Timestamp value from TSU.

Parameters
[in]ptrMCAN Base
[in]indexTimestamp pointer
Returns
Timestamp value

◆ mcan_read_rxbuf()

hpm_stat_t mcan_read_rxbuf ( MCAN_Type ptr,
uint32_t  index,
mcan_rx_message_t rx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Read message from CAN RXBUF.

Parameters
[in]ptrMCAN base
[in]indexIndex of RXBUF
[out]rx_frameBuffer to hold RX frame
Returns
status_success if no errors reported

◆ mcan_read_rxfifo()

hpm_stat_t mcan_read_rxfifo ( MCAN_Type ptr,
uint32_t  fifo_index,
mcan_rx_message_t rx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Read message from CAN RXBUF.

Parameters
[in]ptrMCAN base
[in]fifo_indexRXFIFO index, 0 - RXFO0, 1 - RXFIFO1
[out]rx_frameBuffer to hold RX frame
Returns
status_success if no errors reported

◆ mcan_read_tx_evt_fifo()

hpm_stat_t mcan_read_tx_evt_fifo ( MCAN_Type ptr,
mcan_tx_event_fifo_elem_t tx_evt 
)

#include <drivers/inc/hpm_mcan_drv.h>

Read TX Event from CAN TX EVENT FIFO.

Parameters
[in]ptrMCAN base
[out]tx_evtTX Event Buffer
Return values
status_successif no errors happened
status_mcan_tx_evt_fifo_emptyif there are no TX events available
status_invalid_argumentif any parameters are invalid

◆ mcan_receive_from_buf_blocking()

hpm_stat_t mcan_receive_from_buf_blocking ( MCAN_Type ptr,
uint32_t  index,
mcan_rx_message_t rx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Receive CAN Frame from RXBUF in blocking way.

Parameters
[in]ptrMCAN base
[in]indexRXBUF index
[out]rx_frameBuffer to hold Received Frame
Returns
status_success if no errors reported

◆ mcan_receive_from_fifo_blocking()

hpm_stat_t mcan_receive_from_fifo_blocking ( MCAN_Type ptr,
uint32_t  fifo_index,
mcan_rx_message_t rx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Receive CAN Frame from RXFIFO in blocking way.

Parameters
[in]ptrMCAN base
[in]fifo_indexRXFIFO index, 0 - RXFIFO0, 1 - RXFIFO1
[out]rx_frameBuffer to hold Received Frame
Returns
status_success if no errors reported

◆ mcan_reset_timeout_counter_value()

static void mcan_reset_timeout_counter_value ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Reset Timeout counter value.

Parameters
[in]ptrMCAN base

◆ mcan_send_add_request()

static void mcan_send_add_request ( MCAN_Type ptr,
uint32_t  index 
)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Request A Transmission via specified TXBUF Index.

Parameters
[in]ptrMCAN Base
[in]indexTXBUF index

◆ mcan_set_filter_element()

hpm_stat_t mcan_set_filter_element ( MCAN_Type ptr,
const mcan_filter_elem_t filter_elem,
uint32_t  index 
)

#include <drivers/inc/hpm_mcan_drv.h>

Set CAN filter element.

Parameters
[in]ptrMCAN base
[in]filter_elemCAN filter element
[in]indexCAN Filter element index
Returns
status_success if no errors reported

◆ mcan_set_global_filter_config()

hpm_stat_t mcan_set_global_filter_config ( MCAN_Type ptr,
mcan_global_filter_config_t filter_config 
)

#include <drivers/inc/hpm_mcan_drv.h>

Configure Global Filter.

Parameters
[in]ptrMCAN base
[in]filter_configGlobal Filter Configuration
Returns
status_success if no errors reported

◆ mcan_stop_clock()

static void mcan_stop_clock ( MCAN_Type ptr)
inlinestatic

#include <drivers/inc/hpm_mcan_drv.h>

Stop MCAN clock.

Parameters
[in]ptrMCAN base

◆ mcan_transmit_blocking()

hpm_stat_t mcan_transmit_blocking ( MCAN_Type ptr,
mcan_tx_frame_t tx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Transmit CAN message in blocking way.

Parameters
[in]ptrMCAN base
[in]tx_frameCAN Transmit Message buffer
Returns
status_success if no errors reported

◆ mcan_transmit_via_txbuf_nonblocking()

hpm_stat_t mcan_transmit_via_txbuf_nonblocking ( MCAN_Type ptr,
uint32_t  index,
mcan_tx_frame_t tx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Transmit CAN message via TX in non-blocking way.

Parameters
[in]ptrMCAN base
[in]indexIndex of TX Buffer
[in]tx_frameCAN Transmit Message buffer
Returns
status_success if no errors reported

◆ mcan_transmit_via_txfifo_nonblocking()

hpm_stat_t mcan_transmit_via_txfifo_nonblocking ( MCAN_Type ptr,
mcan_tx_frame_t tx_frame,
uint32_t *  fifo_index 
)

#include <drivers/inc/hpm_mcan_drv.h>

Transmit CAN message via TX FIFO in non-blocking way.

Parameters
[in]ptrMCAN base
[in]tx_frameCAN Transmit Message buffer
[out]fifo_indexThe index of the element in FIFO assigned to the tx_frame
Returns
status_success if no errors reported

◆ mcan_write_txbuf()

hpm_stat_t mcan_write_txbuf ( MCAN_Type ptr,
uint32_t  index,
mcan_tx_frame_t tx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Write Frame to CAN TX Buffer.

Parameters
[in]ptrMCAN base
[in]indexTX Buffer Index
[in]tx_frameTX frame
Returns
status_success if no errors reported

◆ mcan_write_txfifo()

hpm_stat_t mcan_write_txfifo ( MCAN_Type ptr,
mcan_tx_frame_t tx_frame 
)

#include <drivers/inc/hpm_mcan_drv.h>

Write Frame CAN to TXFIFO.

Parameters
[in]ptrMCAN base
[in]tx_frameTX frame
Returns
status_success if no errors reported