2.5. can — CAN bus

Source code: src/drivers/can.h, src/drivers/can.c

Test code: tst/drivers/can/main.c


Version
7.0.0

Defines

CAN_SPEED_1000KBPS
CAN_SPEED_500KBPS
CAN_SPEED_250KBPS

Functions

int can_init(struct can_driver_t *self_p, struct can_device_t *dev_p, uint32_t speed, void *rxbuf_p, size_t size)

Initialize given driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Driver object to initialize.

  • dev_p -

    Device to use.

  • speed -

    Can bus speed.

  • rxbuf_p -

    Reception buffer.

  • size -

    Size of the reception buffer.

int can_start(struct can_driver_t *self_p)

Starts the CAN device using given driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Initialized driver object.

int can_stop(struct can_driver_t *self_p)

Stops the CAN device referenced by driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Initialized driver object.

int can_read(struct can_driver_t *self_p, struct can_frame_t *frame_p, size_t size)

Read one or more CAN frames.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Initialized driver object.

  • frame_p -

    Array of read frames.

  • size -

    Size of frames buffer in words.

int can_write(struct can_driver_t *self_p, const struct can_frame_t *frame_p, size_t size)

Write one or more CAN frames.

Return
zero(0) or negative error code.
Parameters
  • self_p -

    Initialized driver object.

  • frame_p -

    Array of frames to write.

  • size -

    Size of frames buffer in words.

Variables

struct can_device_t can_device[CAN_DEVICE_MAX]
struct can_frame_t

Public Members

uint32_t id
int extended_id
int size
int rtr
uint32_t timestamp
uint8_t u8[8]
uint32_t u32[2]
union can_frame_t::@0 can_frame_t::data