RZ Flexible Software Package Documentation  Release v4.0.0

 
CAN Interface

Detailed Description

Interface for CAN peripheral.

Summary

The CAN interface provides common APIs for CAN HAL drivers. CAN interface supports following features.

Classes

struct  st_can_info
 
struct  st_can_bit_timing_cfg
 
struct  st_can_frame
 
struct  st_can_callback_args
 
struct  st_can_cfg
 
struct  st_can_api
 
struct  st_can_instance
 

Typedefs

typedef struct st_can_info can_info_t
 
typedef struct st_can_bit_timing_cfg can_bit_timing_cfg_t
 
typedef struct st_can_frame can_frame_t
 
typedef struct st_can_callback_args can_callback_args_t
 
typedef struct st_can_cfg can_cfg_t
 
typedef void can_ctrl_t
 
typedef struct st_can_api can_api_t
 
typedef struct st_can_instance can_instance_t
 

Enumerations

enum  can_event_t
 
enum  can_operation_mode_t
 
enum  can_test_mode_t
 
enum  can_id_mode_t
 
enum  can_frame_type_t
 

Class Documentation

◆ RZN::st_can_info

struct RZN::st_can_info

CAN status info

Class Members
uint32_t status Useful information from the CAN status register.
uint32_t rx_mb_status RX Message Buffer New Data flags.
uint32_t rx_fifo_status RX FIFO Empty flags.
uint8_t error_count_transmit Transmit error count.
uint8_t error_count_receive Receive error count.
uint32_t error_code Error code, cleared after reading.

◆ RZN::st_can_bit_timing_cfg

struct RZN::st_can_bit_timing_cfg

CAN bit rate configuration.

Class Members
uint32_t baud_rate_prescaler Baud rate prescaler. Valid values: 1 - 1024.
uint32_t time_segment_1 Time segment 1 control.
uint32_t time_segment_2 Time segment 2 control.
uint32_t synchronization_jump_width Synchronization jump width.

◆ RZN::st_can_frame

struct RZN::st_can_frame

CAN data Frame

Class Members
uint32_t id CAN ID.
can_id_mode_t id_mode Standard or Extended ID (IDE).
can_frame_type_t type Frame type (RTR).
uint8_t data_length_code CAN Data Length Code (DLC).
uint32_t options Implementation-specific options.
uint8_t data[CAN_DATA_BUFFER_LENGTH] CAN data.

◆ RZN::st_can_callback_args

struct RZN::st_can_callback_args

CAN callback parameter definition

Class Members
uint32_t channel Device channel number.
can_event_t event Event code.
uint32_t error Error code.
union st_can_callback_args __unnamed__
void * p_context Context provided to user during callback.
can_frame_t frame Received frame data.

◆ RZN::st_can_cfg

struct RZN::st_can_cfg

CAN Configuration

Public Attributes

uint32_t channel
 CAN channel.
 
can_bit_timing_cfg_tp_bit_timing
 CAN bit timing.
 
void(* p_callback )(can_callback_args_t *p_args)
 Pointer to callback function.
 
void * p_context
 User defined callback context.
 
void const * p_extend
 CAN hardware dependent configuration.
 
uint8_t ipl
 Error/Transmit/Receive interrupt priority.
 
IRQn_Type error_irq
 Error IRQ number.
 
IRQn_Type rx_irq
 Receive IRQ number.
 
IRQn_Type tx_irq
 Transmit IRQ number.
 

◆ RZN::st_can_api

struct RZN::st_can_api

Shared Interface definition for CAN

Public Attributes

fsp_err_t(* open )(can_ctrl_t *const p_ctrl, can_cfg_t const *const p_cfg)
 
fsp_err_t(* write )(can_ctrl_t *const p_ctrl, uint32_t buffer_number, can_frame_t *const p_frame)
 
fsp_err_t(* read )(can_ctrl_t *const p_ctrl, uint32_t buffer_number, can_frame_t *const p_frame)
 
fsp_err_t(* close )(can_ctrl_t *const p_ctrl)
 
fsp_err_t(* modeTransition )(can_ctrl_t *const p_ctrl, can_operation_mode_t operation_mode, can_test_mode_t test_mode)
 
fsp_err_t(* infoGet )(can_ctrl_t *const p_ctrl, can_info_t *const p_info)
 
fsp_err_t(* callbackSet )(can_ctrl_t *const p_ctrl, void(*p_callback)(can_callback_args_t *), void *const p_context, can_callback_args_t *const p_callback_memory)
 

Member Data Documentation

◆ open

fsp_err_t(* open) (can_ctrl_t *const p_ctrl, can_cfg_t const *const p_cfg)

Open function for CAN device

Parameters
[in,out]p_ctrlPointer to the CAN control block. Must be declared by user. Value set here.
[in]p_cfgPointer to CAN configuration structure. All elements of this structure must be set by user.

◆ write

fsp_err_t(* write) (can_ctrl_t *const p_ctrl, uint32_t buffer_number, can_frame_t *const p_frame)

Write function for CAN device

Parameters
[in]p_ctrlPointer to the CAN control block.
[in]bufferBuffer number (mailbox or message buffer) to write to.
[in]p_framePointer for frame of CAN ID, DLC, data and frame type to write.

◆ read

fsp_err_t(* read) (can_ctrl_t *const p_ctrl, uint32_t buffer_number, can_frame_t *const p_frame)

Read function for CAN device

Parameters
[in]p_ctrlPointer to the CAN control block.
[in]bufferMessage buffer (number) to read from.
[in]p_framePointer to store the CAN ID, DLC, data and frame type.

◆ close

fsp_err_t(* close) (can_ctrl_t *const p_ctrl)

Close function for CAN device

Parameters
[in]p_ctrlPointer to the CAN control block.

◆ modeTransition

fsp_err_t(* modeTransition) (can_ctrl_t *const p_ctrl, can_operation_mode_t operation_mode, can_test_mode_t test_mode)

Mode Transition function for CAN device

Parameters
[in]p_ctrlPointer to the CAN control block.
[in]operation_modeDestination CAN operation state.
[in]test_modeDestination CAN test state.

◆ infoGet

fsp_err_t(* infoGet) (can_ctrl_t *const p_ctrl, can_info_t *const p_info)

Get CAN channel info.

Parameters
[in]p_ctrlHandle for channel (pointer to channel control block)
[out]p_infoMemory address to return channel specific data to.

◆ callbackSet

fsp_err_t(* callbackSet) (can_ctrl_t *const p_ctrl, void(*p_callback)(can_callback_args_t *), void *const p_context, can_callback_args_t *const p_callback_memory)

Specify callback function and optional context pointer and working memory pointer.

Parameters
[in]p_ctrlControl block set in can_api_t::open call.
[in]p_callbackCallback function to register
[in]p_contextPointer to send to callback function
[in]p_working_memoryPointer to volatile memory where callback structure can be allocated. Callback arguments allocated here are only valid during the callback.

◆ RZN::st_can_instance

struct RZN::st_can_instance

This structure encompasses everything that is needed to use an instance of this interface.

Class Members
can_ctrl_t * p_ctrl Pointer to the control structure for this instance.
can_cfg_t const * p_cfg Pointer to the configuration structure for this instance.
can_api_t const * p_api Pointer to the API structure for this instance.

Typedef Documentation

◆ can_info_t

typedef struct st_can_info can_info_t

CAN status info Please refer to the struct st_can_info.

◆ can_bit_timing_cfg_t

CAN bit rate configuration. Please refer to the struct st_can_bit_timing_cfg.

◆ can_frame_t

typedef struct st_can_frame can_frame_t

CAN data Frame Please refer to the struct st_can_frame.

◆ can_callback_args_t

CAN callback parameter definition Please refer to the struct st_can_callback_args.

◆ can_cfg_t

typedef struct st_can_cfg can_cfg_t

CAN Configuration Please refer to the struct st_can_cfg.

◆ can_ctrl_t

typedef void can_ctrl_t

CAN control block. Allocate an instance specific control block to pass into the CAN API calls.

◆ can_api_t

typedef struct st_can_api can_api_t

Shared Interface definition for CAN Please refer to the struct st_can_api.

◆ can_instance_t

This structure encompasses everything that is needed to use an instance of this interface. Please refer to the struct st_can_instance.

Enumeration Type Documentation

◆ can_event_t

CAN event codes

Enumerator
CAN_EVENT_ERR_WARNING 

Error Warning event.

CAN_EVENT_ERR_PASSIVE 

Error Passive event.

CAN_EVENT_ERR_BUS_OFF 

Bus Off event.

CAN_EVENT_BUS_RECOVERY 

Bus Off Recovery event.

CAN_EVENT_MAILBOX_MESSAGE_LOST 

Mailbox has been overrun.

CAN_EVENT_ERR_BUS_LOCK 

Bus lock detected (32 consecutive dominant bits).

CAN_EVENT_ERR_CHANNEL 

Channel error has occurred.

CAN_EVENT_TX_ABORTED 

Transmit abort event.

CAN_EVENT_RX_COMPLETE 

Receive complete event.

CAN_EVENT_TX_COMPLETE 

Transmit complete event.

CAN_EVENT_ERR_GLOBAL 

Global error has occurred.

CAN_EVENT_TX_FIFO_EMPTY 

Transmit FIFO is empty.

CAN_EVENT_FIFO_MESSAGE_LOST 

Receive FIFO overrun.

◆ can_operation_mode_t

CAN Operation modes

Enumerator
CAN_OPERATION_MODE_NORMAL 

CAN Normal Operation Mode.

CAN_OPERATION_MODE_RESET 

CAN Reset Operation Mode.

CAN_OPERATION_MODE_HALT 

CAN Halt Operation Mode.

CAN_OPERATION_MODE_SLEEP 

CAN Sleep Operation Mode.

◆ can_test_mode_t

CAN Test modes

Enumerator
CAN_TEST_MODE_DISABLED 

CAN Test Mode Disabled.

CAN_TEST_MODE_LISTEN 

CAN Test Listen Mode.

CAN_TEST_MODE_LOOPBACK_EXTERNAL 

CAN Test External Loopback Mode.

CAN_TEST_MODE_LOOPBACK_INTERNAL 

CAN Test Internal Loopback Mode.

CAN_TEST_MODE_INTERNAL_BUS 

CANFD Internal CAN Bus Communication Test Mode.

◆ can_id_mode_t

CAN ID modes

Enumerator
CAN_ID_MODE_STANDARD 

Standard IDs of 11 bits used.

CAN_ID_MODE_EXTENDED 

Extended IDs of 29 bits used.

◆ can_frame_type_t

CAN frame types

Enumerator
CAN_FRAME_TYPE_DATA 

Data frame.

CAN_FRAME_TYPE_REMOTE 

Remote frame.