38#include "syna_device.h"
49#define CAN_MAX_DATA_LENGTH_CLASSIC 8U
52#define CAN_MAX_DATA_LENGTH_FD 64U
55#define CAN_MAX_DATA_LENGTH CAN_MAX_DATA_LENGTH_FD
58#define CAN_STD_ID_MASK 0x7FFU
61#define CAN_EXT_ID_MASK 0x1FFFFFFFU
64#define CAN_FILTER_IDE (1UL << 0)
67#define CAN_FILTER_RTR (1UL << 1)
70#define CAN_FILTER_FD (1UL << 2)
73#define CAN_TX_DESCRIPTOR_RESERVED_BYTES 20U
76#define CAN_RX_DESCRIPTOR_RESERVED_BYTES 8U
79#define CAN_RX_HEADER_RAW_WORDS 6U
325 CAN_INTERRUPT_OVERLOAD_DETECTED = (1UL << 0),
326 CAN_INTERRUPT_CLOSING_GOOD_RX_FRAME = (1UL << 1),
327 CAN_INTERRUPT_TX_RETRANSMIT_REQUEST = (1UL << 2),
328 CAN_INTERRUPT_INCREMENT_REC_8 = (1UL << 3),
329 CAN_INTERRUPT_INCREMENT_REC_1 = (1UL << 4),
330 CAN_INTERRUPT_INCREMENT_TEC_8 = (1UL << 5),
331 CAN_INTERRUPT_ERROR_FRAME_DETECTED = (1UL << 6),
332 CAN_INTERRUPT_ABORTS_HAPPENED = (1UL << 7),
333 CAN_INTERRUPT_TX_FIFO_EMPTY = (1UL << 8),
334 CAN_INTERRUPT_RX_PTR_BUFS_FIFO_ALMOST_EMPTY = (1UL << 9),
335 CAN_INTERRUPT_RX_PTR_BUFS_FIFO_EMPTY = (1UL << 10),
336 CAN_INTERRUPT_USED_BUFFERS_NOT_EMPTY = (1UL << 11),
337 CAN_INTERRUPT_CLTX_NOACK = (1UL << 12),
338 CAN_INTERRUPT_FDTX_NOACK = (1UL << 13),
339 CAN_INTERRUPT_CLTX_GOOD = (1UL << 14),
340 CAN_INTERRUPT_FDTX_GOOD = (1UL << 15),
341 CAN_INTERRUPT_BUS_STATE1 = (1UL << 16),
342 CAN_INTERRUPT_BUS_STATE2 = (1UL << 17),
343 CAN_INTERRUPT_WATCHDOG = (1UL << 18),
344 CAN_INTERRUPT_GAP = (1UL << 19),
345 CAN_INTERRUPT_PANIC_NO_BUFFERS = (1UL << 20),
346 CAN_INTERRUPT_PANIC_TX_BYTE_UNAVAILABLE = (1UL << 21),
347 CAN_INTERRUPT_PANIC_TX_START_FAILED = (1UL << 22),
348 CAN_INTERRUPT_PANIC_TX_WRONG_FRAME = (1UL << 23),
349 CAN_INTERRUPT_CANNOT_FIX = (1UL << 24),
350 CAN_INTERRUPT_FIXED = (1UL << 25),
351 CAN_INTERRUPT_PANICS = (1UL << 26),
352 CAN_INTERRUPT_ILLEGAL_PARITY = (1UL << 27),
353 CAN_INTERRUPT_ILLEGAL_SM_STATES = (1UL << 28),
354 CAN_INTERRUPT_NEW_SAMPLE_TIMESTAMP = (1UL << 31),
388 uint8_t
data[CAN_MAX_DATA_LENGTH];
389 uint8_t
reserved[CAN_TX_DESCRIPTOR_RESERVED_BYTES];
467 uint32_t
raw[CAN_RX_HEADER_RAW_WORDS];
469 uint8_t
data[CAN_MAX_DATA_LENGTH];
470 uint8_t
reserved[CAN_RX_DESCRIPTOR_RESERVED_BYTES];
666 void *callback_param);
can_instance_en
CAN instances for CM52.
Definition sl2610_cm52.h:51
void(* can_tx_handler_t)(void *user_data, can_transfer_status_en status)
CAN TX completion callback type.
Definition can.h:518
void(* can_timestamp_handler_t)(void *user_data, uint32_t timestamp_low, uint32_t timestamp_high)
CAN timestamp capture callback type.
Definition can.h:542
void(* can_rx_handler_t)(void *user_data, const can_rx_frame_t *frame)
CAN RX frame callback type.
Definition can.h:530
can_status_en
CAN API status codes.
Definition can.h:230
can_rtr_type_en
CAN remote frame type.
Definition can.h:295
can_rx_frame_type_en
Encoded frame type values reported in received CAN headers.
Definition can.h:275
can_frame_format_en
CAN frame format.
Definition can.h:265
can_interrupt_en
Hardware interrupt mask bits for CAN interrupt control APIs.
Definition can.h:324
can_bus_state_en
CAN bus state.
Definition can.h:315
can_operating_mode_en
CAN operating mode.
Definition can.h:305
can_transfer_status_en
CAN transfer status.
Definition can.h:252
can_id_type_en
CAN identifier type.
Definition can.h:285
@ CAN_ERROR_UNSUPPORTED
Definition can.h:236
@ CAN_ERROR_TIMEOUT
Definition can.h:235
@ CAN_ERROR_BUS_OFF
Definition can.h:243
@ CAN_ERROR_ECC
Definition can.h:244
@ CAN_ERROR_RX_FAILED
Definition can.h:241
@ CAN_ERROR
Definition can.h:232
@ CAN_ERROR_DMA_FAILED
Definition can.h:242
@ CAN_ERROR_BUSY
Definition can.h:234
@ CAN_ERROR_TX_FAILED
Definition can.h:240
@ CAN_ERROR_NOT_RUNNING
Definition can.h:238
@ CAN_OK
Definition can.h:231
@ CAN_ERROR_PARAMETER
Definition can.h:233
@ CAN_ERROR_NO_RESOURCE
Definition can.h:239
@ CAN_ERROR_NOT_INITIALIZED
Definition can.h:237
@ CAN_FRAME_REMOTE
Definition can.h:297
@ CAN_FRAME_DATA
Definition can.h:296
@ CAN_RX_FRAME_TYPE_FD
Definition can.h:277
@ CAN_RX_FRAME_TYPE_CLASSIC
Definition can.h:276
@ CAN_FRAME_CLASSIC
Definition can.h:266
@ CAN_FRAME_FD
Definition can.h:267
@ CAN_BUS_ERROR_PASSIVE
Definition can.h:317
@ CAN_BUS_BUS_OFF
Definition can.h:318
@ CAN_BUS_ERROR_ACTIVE
Definition can.h:316
@ CAN_MODE_NORMAL
Definition can.h:306
@ CAN_MODE_LOOPBACK
Definition can.h:307
@ CAN_TRANSFER_IN_PROGRESS
Definition can.h:253
@ CAN_TRANSFER_TIMEOUT
Definition can.h:254
@ CAN_TRANSFER_ERROR
Definition can.h:255
@ CAN_TRANSFER_DONE
Definition can.h:256
@ CAN_TRANSFER_ABORTED
Definition can.h:257
@ CAN_ID_STANDARD
Definition can.h:286
@ CAN_ID_EXTENDED
Definition can.h:287
can_status_en can_rx_subscribe(can_instance_en id, const can_rx_filter_t *filter, can_rx_handler_t callback, void *callback_param, int *subid)
can_status_en can_get_timestamp(can_instance_en id, uint32_t *ts_l, uint32_t *ts_h, uint32_t *ts_res_ns)
can_status_en can_disable_all_interrupts(can_instance_en id)
can_status_en can_enable(can_instance_en id)
can_status_en can_set_timestamp_sample_handler(can_instance_en id, can_timestamp_handler_t callback, void *callback_param)
can_status_en can_clear_all_interrupts(can_instance_en id)
can_status_en can_set_speed(can_instance_en id, int cl, int fd, int cl_sample, int fd_sample)
can_status_en can_configure(can_instance_en id, const can_config_t *config)
can_status_en can_enable_all_interrupts(can_instance_en id)
can_status_en can_init(can_instance_en id)
can_status_en can_set_driver_buffer(can_instance_en id, void *buffer, size_t size)
can_status_en can_rx_unsubscribe(can_instance_en id, int sub_id)
can_status_en can_tx(can_instance_en id, bool high_priority, const can_tx_frame_t *frame, const can_tx_schedule_time_t *time, can_tx_handler_t callback, void *callback_param)
can_status_en can_disable(can_instance_en id)
can_status_en can_deinit(can_instance_en id)
can_status_en can_enable_interrupt(can_instance_en id, uint32_t mask)
can_status_en can_clear_interrupt(can_instance_en id, uint32_t mask)
can_status_en can_disable_interrupt(can_instance_en id, uint32_t mask)
Runtime CAN controller configuration.
Definition can.h:499
uint32_t fd_bitrate
Definition can.h:502
uint32_t classic_sample_point
Definition can.h:503
bool ecc_enabled
Definition can.h:505
uint32_t fd_sample_point
Definition can.h:504
uint32_t classic_bitrate
Definition can.h:501
uint32_t timestamp_resolution_ns
Definition can.h:500
can_hw_config_t hw
Definition can.h:506
Hardware-specific CAN controller configuration.
Definition can.h:485
bool iso_fd_enabled
Definition can.h:490
uint32_t watchdog_timeout_us
Definition can.h:486
uint8_t max_retransmissions
Definition can.h:493
bool self_ack_enabled
Definition can.h:489
uint32_t ssp_delay
Definition can.h:487
can_operating_mode_en mode
Definition can.h:488
bool fd_disable_sbc
Definition can.h:491
bool disable_ack_check
Definition can.h:492
Receive filter entry matched against incoming CAN identifiers.
Definition can.h:476
uint32_t mask
Definition can.h:477
uint32_t id
Definition can.h:478
uint32_t flags
Definition can.h:479
Receive frame container returned to RX callbacks.
Definition can.h:463
uint8_t data[CAN_MAX_DATA_LENGTH]
Definition can.h:469
uint8_t reserved[CAN_RX_DESCRIPTOR_RESERVED_BYTES]
Definition can.h:470
can_rx_fd_header_t fd
Definition can.h:466
uint32_t raw[CAN_RX_HEADER_RAW_WORDS]
Definition can.h:467
can_rx_classic_header_t classic
Definition can.h:465
Transmit frame layout written into CAN hardware memory.
Definition can.h:370
uint32_t reserved
Definition can.h:376
uint32_t brs
Definition can.h:378
uint32_t ext_id
Definition can.h:385
uint32_t rtr
Definition can.h:379
uint32_t id
Definition can.h:375
uint8_t data[CAN_MAX_DATA_LENGTH]
Definition can.h:388
uint32_t dlc
Definition can.h:374
uint32_t ide
Definition can.h:380
uint32_t esi
Definition can.h:377
uint32_t frame_type
Definition can.h:381
uint32_t raw
Definition can.h:383
64-bit timestamp used for scheduled transmit requests.
Definition can.h:395
uint32_t timestamp_high
Definition can.h:397
uint32_t timestamp_low
Definition can.h:396