ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_canfd.h
Go to the documentation of this file.
1
18
19#pragma once
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#include <stdint.h>
26
27#include "ra8_canfd_regs.h"
28#include "ra8_err.h"
29
52typedef struct {
53 uint32_t id;
54 uint8_t dlc;
55 uint8_t is_extended;
56 uint8_t is_fd;
57 uint8_t is_brs;
60
68[[nodiscard]] ra8_err_t ra8_canfd_init(uint8_t channel);
69
77[[nodiscard]] ra8_err_t ra8_canfd_deinit(uint8_t channel);
78
98[[nodiscard]] ra8_err_t
99ra8_canfd_set_bitrate(uint8_t channel, uint32_t bitrate_bps, uint32_t data_bitrate_bps);
100
117[[nodiscard]] ra8_err_t ra8_canfd_transmit(uint8_t channel, const ra8_canfd_frame_t* frame);
118
135[[nodiscard]] ra8_err_t ra8_canfd_receive(uint8_t channel, ra8_canfd_frame_t* out_frame);
136
148[[nodiscard]] ra8_err_t
149ra8_canfd_get_error_state(uint8_t channel, uint8_t* tx_err, uint8_t* rx_err);
150
155typedef void (*ra8_canfd_event_fn_t)(void* ctx, uint8_t channel, uint32_t status_mask);
156
161[[nodiscard]] ra8_err_t ra8_canfd_get_status(uint8_t channel, uint32_t* out_mask);
162
167[[nodiscard]] ra8_err_t ra8_canfd_clear_status(uint8_t channel, uint32_t mask);
168
173[[nodiscard]] ra8_err_t ra8_canfd_attach_handler(ra8_canfd_event_fn_t fn, void* ctx);
174
189void ra8_canfd_dispatch(uint8_t channel);
190
221[[nodiscard]] ra8_err_t
222ra8_canfd_filter_set(uint16_t filter_id, uint32_t accept_id, uint32_t mask, uint8_t dlc);
223
240
265typedef struct {
266 uint32_t id;
267 uint32_t mask;
268 bool extended;
269 bool rtr;
270 uint8_t target_rx;
272
317[[nodiscard]] ra8_err_t
318ra8_canfd_set_accept_filter(uint8_t channel, const ra8_canfd_afl_rule_t* rules, uint8_t count);
319
345[[nodiscard]] ra8_err_t ra8_canfd_set_brs(uint8_t channel, uint32_t fast_bitrate);
346
385typedef struct {
386 bool enable;
387 bool manual;
388 uint8_t offset;
390
428[[nodiscard]] ra8_err_t ra8_canfd_set_tdc(uint8_t channel, const ra8_canfd_tdc_cfg_t* cfg);
429
452[[nodiscard]] ra8_err_t ra8_canfd_set_iso_mode(bool enable);
453
488[[nodiscard]] ra8_err_t ra8_canfd_set_test_mode(uint8_t channel, ra8_ctms_mode_t mode);
489
494[[nodiscard]] ra8_err_t ra8_canfd_enter_stop(uint8_t channel);
495
500[[nodiscard]] ra8_err_t ra8_canfd_exit_stop(uint8_t channel);
501
502#ifdef __cplusplus
503}
504#endif
ra8_err_t ra8_canfd_enter_stop(uint8_t channel)
Put the CANFD channel into MSTP-gated stop.
Definition ra8_canfd.c:777
ra8_err_t ra8_canfd_deinit(uint8_t channel)
Put the CANFD channel back into reset.
Definition ra8_canfd.c:546
ra8_err_t ra8_canfd_filter_set(uint16_t filter_id, uint32_t accept_id, uint32_t mask, uint8_t dlc)
Programme one Global Acceptance-Filter-List (GAFL) entry.
Definition ra8_canfd.c:689
ra8_err_t ra8_canfd_transmit(uint8_t channel, const ra8_canfd_frame_t *frame)
Queue a frame into the TX message buffer and trigger transmission.
void ra8_canfd_dispatch(uint8_t channel)
Dispatch a CANFD event for a channel – snapshot + fire callback.
Definition ra8_canfd.c:593
void(* ra8_canfd_event_fn_t)(void *ctx, uint8_t channel, uint32_t status_mask)
CANFD event callback.
Definition ra8_canfd.h:155
ra8_err_t ra8_canfd_clear_status(uint8_t channel, uint32_t mask)
Clear error flags in CFDCnERFL.
Definition ra8_canfd.c:574
ra8_err_t ra8_canfd_set_bitrate(uint8_t channel, uint32_t bitrate_bps, uint32_t data_bitrate_bps)
Programme nominal (and optional data) bit-timing registers.
ra8_err_t ra8_canfd_receive(uint8_t channel, ra8_canfd_frame_t *out_frame)
Poll the RX FIFO for the next available frame.
ra8_err_t ra8_canfd_get_error_state(uint8_t channel, uint8_t *tx_err, uint8_t *rx_err)
Read the TX and RX error counters.
ra8_err_t ra8_canfd_set_brs(uint8_t channel, uint32_t fast_bitrate)
Configure the CAN-FD bit-rate-switch (BRS) data-phase rate.
ra8_canfd_afl_capacity_t
Per-channel Acceptance-Filter-List capacity used by ra8_canfd_set_accept_filter.
Definition ra8_canfd.h:237
@ k_ra8_canfd_afl_rule_capacity
One 16-entry AFL page (page 0).
Definition ra8_canfd.h:238
ra8_err_t ra8_canfd_set_tdc(uint8_t channel, const ra8_canfd_tdc_cfg_t *cfg)
Configure Transmitter Delay Compensation on a CANFD channel.
ra8_err_t ra8_canfd_set_accept_filter(uint8_t channel, const ra8_canfd_afl_rule_t *rules, uint8_t count)
Program the channel Acceptance-Filter-List from a rule array.
ra8_err_t ra8_canfd_init(uint8_t channel)
Take a CANFD channel out of reset into operation mode.
Definition ra8_canfd.c:510
ra8_err_t ra8_canfd_set_test_mode(uint8_t channel, ra8_ctms_mode_t mode)
Enable a CFDC[0].CTR test mode (basic / listen-only / loopback).
Definition ra8_canfd.c:731
ra8_err_t ra8_canfd_exit_stop(uint8_t channel)
Exit MSTP-gated stop.
Definition ra8_canfd.c:786
ra8_err_t ra8_canfd_get_status(uint8_t channel, uint32_t *out_mask)
Read the channel status register (CFDCnSTS).
Definition ra8_canfd.c:564
ra8_err_t ra8_canfd_attach_handler(ra8_canfd_event_fn_t fn, void *ctx)
Attach a callback for CANFD events (shared across channels).
Definition ra8_canfd.c:585
ra8_err_t ra8_canfd_set_iso_mode(bool enable)
Select ISO 11898-1 vs non-ISO CAN-FD framing.
Definition ra8_canfd.c:761
CANFD controller register layout for the Renesas RA8D2.
@ k_ra8_canfd_data_bytes_max
CAN-FD payload cap in bytes.
ra8_ctms_mode_t
Channel Test Mode Select values (CFDC[0].CTR.CTMS[1:0]).
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
One Acceptance-Filter-List (AFL) rule: hardware ID/mask match plus an RX-FIFO routing target.
Definition ra8_canfd.h:265
uint32_t id
Right-aligned accept ID (11- or 29-bit).
Definition ra8_canfd.h:266
uint8_t target_rx
Destination RX FIFO index (0..1).
Definition ra8_canfd.h:270
uint32_t mask
ID bit mask: 1 = must match, 0 = don't care.
Definition ra8_canfd.h:267
bool extended
true = 29-bit extended ID, false = 11-bit std.
Definition ra8_canfd.h:268
bool rtr
true = match remote frames, false = data frames.
Definition ra8_canfd.h:269
A single CAN / CAN-FD frame as seen by the driver public API.
Definition ra8_canfd.h:52
uint8_t is_fd
0 = classic CAN, 1 = CAN-FD.
Definition ra8_canfd.h:56
uint8_t is_brs
1 = bit-rate switch in data phase.
Definition ra8_canfd.h:57
uint32_t id
Arbitration-ID field.
Definition ra8_canfd.h:53
uint8_t dlc
DLC code (0..15).
Definition ra8_canfd.h:54
uint8_t data[k_ra8_canfd_data_bytes_max]
Payload bytes.
Definition ra8_canfd.h:58
uint8_t is_extended
0 = 11-bit ID, 1 = 29-bit ID.
Definition ra8_canfd.h:55
Transmitter Delay Compensation (TDC) configuration for one CANFD channel.
Definition ra8_canfd.h:385
bool enable
true = enable TDC (FDCFG.TDE = 1).
Definition ra8_canfd.h:386
bool manual
true = use TDCO offset (FDCOC = 1), false = measured FDSTS.TDCR.
Definition ra8_canfd.h:387
uint8_t offset
TDCO offset in time quanta (0..k_ra8_canfd_tdc_offset_max).
Definition ra8_canfd.h:388