ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_canfd_regs.h
Go to the documentation of this file.
1
48
49#pragma once
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55#include <stdint.h>
56
57#include "ra8_attributes.h"
58
59/* =============================================================================
60 * Base addresses
61 * =============================================================================
62 */
63
64typedef enum : uintptr_t {
65 k_ra8_canfd0_base_addr = 0x40380000UL,
66 k_ra8_canfd1_base_addr = 0x40382000UL,
68
78
87
110
111/* =============================================================================
112 * Per-channel control block (CFDC[0])
113 * =============================================================================
114 *
115 * FSP `R_CANFD_CFDC_Type` (size 0x10):
116 * +0x00 NCFG Nominal-bitrate config
117 * +0x04 CTR Channel control
118 * +0x08 STS Channel status (TEC[31:24], REC[23:16] live here)
119 * +0x0C ERFL Channel error flags / CRC value
120 */
121typedef struct {
122 volatile uint32_t NCFG;
123 volatile uint32_t CTR;
124 volatile uint32_t STS;
125 volatile uint32_t ERFL;
127
128/* =============================================================================
129 * Per-channel CAN-FD config block (CFDC2[0])
130 * =============================================================================
131 *
132 * FSP `R_CANFD_CFDC2_Type` (size 0x20):
133 * +0x00 DCFG Data-bitrate config
134 * +0x04 FDCFG CAN-FD config (TDC, FDOE, REFE, CLOE, ESIC)
135 * +0x08 FDCTR CAN-FD control (EOCCLR, SOCCLR)
136 * +0x0C FDSTS CAN-FD status (TDC result, EOC/SOC counters)
137 * +0x10 FDCRC CAN-FD CRC + stuff-bit count
138 * +0x14 .. 0x1F reserved (3 words)
139 */
140typedef struct {
141 volatile uint32_t DCFG;
142 volatile uint32_t FDCFG;
143 volatile uint32_t FDCTR;
144 volatile uint32_t FDSTS;
145 volatile uint32_t FDCRC;
148
149/* =============================================================================
150 * Acceptance-filter-list entry (CFDGAFL[i])
151 * =============================================================================
152 *
153 * FSP `R_CANFD_CFDGAFL_Type` (size 0x10) -- the AFL is paged through a
154 * 16-entry page window. Set CFDGAFLECTR.AFLPN to select the page.
155 */
156typedef struct {
157 volatile uint32_t ID;
158 volatile uint32_t M;
159 volatile uint32_t P0;
160 volatile uint32_t P1;
162
163/* =============================================================================
164 * RX FIFO access registers (CFDRF[i])
165 * =============================================================================
166 *
167 * FSP `R_CANFD_CFDRF_Type` (size 0x4C).
168 */
169typedef struct {
170 volatile uint32_t ID;
171 volatile uint32_t PTR;
172 volatile uint32_t FDSTS;
173 volatile uint8_t DF[k_ra8_canfd_data_bytes_max];
175
176/* =============================================================================
177 * Common FIFO access registers (CFDCF[i])
178 * =============================================================================
179 *
180 * FSP `R_CANFD_CFDCF_Type` (size 0x4C).
181 */
182typedef struct {
183 volatile uint32_t ID;
184 volatile uint32_t PTR;
185 volatile uint32_t FDSTS;
186 volatile uint8_t DF[k_ra8_canfd_data_bytes_max];
188
189/* =============================================================================
190 * TX message-buffer access registers (CFDTM[i])
191 * =============================================================================
192 *
193 * FSP `R_CANFD_CFDTM_Type` (size 0x4C).
194 */
195typedef struct {
196 volatile uint32_t ID;
197 volatile uint32_t PTR;
198 volatile uint32_t FDCTR;
199 volatile uint8_t DF[k_ra8_canfd_data_bytes_max];
201
202/* =============================================================================
203 * TX history list (CFDTHL[i])
204 * =============================================================================
205 *
206 * FSP `R_CANFD_CFDTHL_Type` (size 0x8).
207 */
208typedef struct {
209 volatile uint32_t ACC0;
210 volatile uint32_t ACC1;
212
213/* =============================================================================
214 * RX message-buffer cluster (CFDRM[i])
215 * =============================================================================
216 *
217 * FSP `R_CANFD_CFDRM_Type` (size 0x400) -- 8 RM entries (each 0x4C)
218 * followed by 0x1A0 of reserved padding.
219 */
220typedef struct {
221 volatile uint32_t ID;
222 volatile uint32_t PTR;
223 volatile uint32_t FDSTS;
224 volatile uint8_t DF[k_ra8_canfd_data_bytes_max];
226
232
233/* =============================================================================
234 * Aggregate channel block (R_CANFD0 / R_CANFD1)
235 * =============================================================================
236 */
237typedef struct {
238 /* 0x000 -- per-channel control */
240 volatile uint32_t _r_after_cfdc;
241
242 /* 0x014 -- global control (per-instance copy) */
243 volatile uint32_t CFDGCFG;
244 volatile uint32_t CFDGCTR;
245 volatile uint32_t CFDGSTS;
246 volatile uint32_t CFDGERFL;
247 volatile uint32_t CFDGTSC;
248 volatile uint32_t CFDGAFLECTR;
249 volatile uint32_t CFDGAFLCFG0;
250 volatile uint32_t CFDRMNB;
251 volatile uint32_t CFDRMND0;
252 volatile uint32_t CFDRMIEC;
253 volatile uint32_t
255 volatile uint32_t
257 volatile uint32_t
259 volatile uint32_t CFDCFCC[k_ra8_canfd_cf_count];
260 volatile uint32_t CFDCFSTS[k_ra8_canfd_cf_count];
261 volatile uint32_t CFDCFPCTR[k_ra8_canfd_cf_count];
262 volatile uint32_t CFDFESTS;
263 volatile uint32_t CFDFFSTS;
264 volatile uint32_t CFDFMSTS;
265 volatile uint32_t CFDRFISTS;
266 volatile uint8_t CFDTMC[k_ra8_canfd_tx_mb_count];
268 volatile uint32_t CFDTMTRSTS[1];
269 volatile uint32_t CFDTMTARSTS[1];
270 volatile uint32_t CFDTMTCSTS[1];
271 volatile uint32_t CFDTMTASTS[1];
272 volatile uint32_t CFDTMIEC[1];
273 volatile uint32_t CFDTXQCC0[1];
274 volatile uint32_t CFDTXQSTS0[1];
275 volatile uint32_t CFDTXQPCTR0[1];
276 volatile uint32_t CFDTHLCC[1];
277 volatile uint32_t CFDTHLSTS[1];
278 volatile uint32_t CFDTHLPCTR[1];
279 volatile uint32_t CFDGTINTSTS0;
280 volatile uint32_t CFDGTSTCFG;
281 volatile uint32_t CFDGTSTCTR;
282 volatile uint32_t CFDGFDCFG;
283 volatile uint32_t _r_after_gfdcfg;
284 volatile uint32_t CFDGLOCKK;
285 volatile uint32_t _r_after_glockk;
286 volatile uint32_t CFDGAFLIGNENT;
287 volatile uint32_t CFDGAFLIGNCTR;
288 volatile uint32_t CFDCDTCT;
289 volatile uint32_t CFDCDTSTS;
290 volatile uint32_t
292 volatile uint32_t CFDGRSTC;
293 volatile uint32_t
295
296 /* 0x100 -- per-channel CAN-FD config */
298
299 /* 0x120 -- AFL page window */
302
303 /* 0x220 -- reserved (0x60) */
304 volatile uint32_t
306
307 /* 0x280 -- RAM test page */
308 volatile uint32_t
310
311 /* 0x380 -- reserved (0x1A0) */
312 volatile uint32_t
314
315 /* 0x520 -- RX FIFO access (2 fifos x 0x4C each = 0x98) */
317
318 /* 0x5B8 -- common FIFO access (1 fifo x 0x4C) */
320
321 /* 0x604 -- TX MB access (4 buffers x 0x4C = 0x130) */
323
324 /* 0x734 -- reserved before THL (3 words) */
325 volatile uint32_t
327
328 /* 0x740 -- TX history list */
330
331 /* 0x748 -- reserved before RM cluster (118 words = 0x1D8) */
332 volatile uint32_t
334
335 /* 0x920 -- RX MB cluster (4 clusters x 0x400) */
337} r_canfd_t;
338
341static inline volatile r_canfd_t* ra8_canfd(uint8_t channel)
342{
343 if (channel >= k_ra8_canfd_instance_count) {
344 return nullptr;
345 }
346 const uintptr_t base = (channel == 0U) ? k_ra8_canfd0_base_addr : k_ra8_canfd1_base_addr;
347 return (volatile r_canfd_t*)base;
348}
349
350/* =============================================================================
351 * Channel Control (CFDC[0].CTR) bit positions
352 * =============================================================================
353 *
354 * From FSP `R_CANFD_CFDC_Type::CTR_b`. CHMDC is 2 bits at [1:0],
355 * CSLPR is bit 2, BOM at [22:21]. The previous "Lite" header had
356 * CHMDC at 3 bits and CSLPR at bit 4 -- both wrong.
357 */
358
366
367typedef enum : uint32_t {
371 k_ra8_cnctr_mask_ctms = 0x3UL << 25U,
373
389
400
401/* =============================================================================
402 * Channel Status (CFDC[0].STS) bit positions
403 * =============================================================================
404 *
405 * From FSP `R_CANFD_CFDC_Type::STS_b`. TEC[31:24] and REC[23:16] live
406 * here -- not in ERFL like the previous header had it.
407 */
408
418
419typedef enum : uint32_t {
423
424/* =============================================================================
425 * Nominal Bit-Rate Config (CFDC[0].NCFG)
426 * =============================================================================
427 *
428 * Verified against FSP `R_CANFD_CFDC_NCFG_b` (R7KA8D2KF_core0.h
429 * lines ~1018-1027): NBRP[9:0], NSJW[16:10], NTSEG1[24:17],
430 * NTSEG2[31:25].
431 */
432
439
446
447/* =============================================================================
448 * Data Bit-Rate Config (CFDC2[0].DCFG) -- DIFFERENT field positions
449 * =============================================================================
450 *
451 * From FSP `R_CANFD_CFDC2_DCFG_b`: DBRP[7:0], DTSEG1[12:8],
452 * DTSEG2[19:16], DSJW[27:24]. Narrower fields than nominal.
453 */
454
461
468
483
484/* =============================================================================
485 * Channel Error-Flag register (CFDC[0].ERFL) bit positions
486 * =============================================================================
487 *
488 * From FSP `R_CANFD_CFDC_ERFL_b`:
489 * bit 0 BEF, 1 EWF, 2 EPF, 3 BOEF, 4 BORF, 5 OVLF, 6 BLF, 7 ALF,
490 * bit 8 SERR, 9 FERR, 10 AERR, 11 CERR, 12 B1ERR, 13 B0ERR,
491 * bit 14 ADERR,
492 * bits [30:16] CRCREG (RO).
493 */
494
513
514/* =============================================================================
515 * Global Control (CFDGCTR)
516 * =============================================================================
517 *
518 * From FSP `R_CANFD_CFDGCTR_b`: GMDC[1:0], GSLPR bit 2.
519 */
520
521typedef enum : uint8_t {
525
533
544
545/* =============================================================================
546 * RX FIFO config / status / control (CFDRFCC, CFDRFSTS, CFDRFPCTR)
547 * =============================================================================
548 *
549 * From FSP `R_CANFD_CFDRFCC_b` and `R_CANFD_CFDRFSTS_b`.
550 */
551
552typedef enum : uint32_t {
553 k_ra8_rfcc_bit_rfe = 1UL << 0U,
556
557typedef enum : uint32_t {
561 k_ra8_rfsts_bit_if = 1UL << 3U,
563
564typedef enum : uint32_t {
567
568/* =============================================================================
569 * Acceptance-filter control (CFDGAFLECTR)
570 * =============================================================================
571 *
572 * From FSP `R_CANFD_CFDGAFLECTR_b`: AFLPN[3:0] page index, bit 8 AFLDAE
573 * unlocks data access.
574 */
575
576typedef enum : uint32_t {
580
592
601typedef enum : uint32_t {
604
624typedef enum : uint32_t {
629
640typedef enum : uint16_t {
641 k_ra8_canfd_afl_total = (uint16_t)(16U * 16U),
643
652typedef enum : uint32_t {
655
656/* =============================================================================
657 * Message-ID layout (CFDRF.ID / CFDTM.ID / CFDCF.ID / CFDRM.ID)
658 * =============================================================================
659 *
660 * Common across RX FIFO, TX MB, common FIFO and RX MB:
661 * [28:0] raw ID (29-bit extended or 11-bit standard right-aligned)
662 * [29] THLEN (TX) / GAFLLB (AFL) / reserved (RX)
663 * [30] RTR
664 * [31] IDE (1 = extended)
665 */
666typedef enum : uint32_t {
667 k_ra8_canfd_id_std_mask = 0x000007FFUL,
668 k_ra8_canfd_id_ext_mask = 0x1FFFFFFFUL,
669 k_ra8_canfd_id_thlen = 1UL << 29U,
670 k_ra8_canfd_id_rtr = 1UL << 30U,
671 k_ra8_canfd_id_ide = 1UL << 31U,
673
674/* =============================================================================
675 * FD-status layout (CFDTM.FDCTR / CFDRF.FDSTS / CFDCF.FDSTS / CFDRM.FDSTS)
676 * =============================================================================
677 *
678 * From FSP unions: bit 0 = ESI, bit 1 = BRS, bit 2 = FDF.
679 * Note this is DIFFERENT from the previous Lite header which had FDF
680 * at bit 0 -- that was wrong.
681 */
682
683typedef enum : uint32_t {
684 k_ra8_canfd_fd_esi = 1UL << 0U,
685 k_ra8_canfd_fd_brs = 1UL << 1U,
686 k_ra8_canfd_fd_fdf = 1UL << 2U,
688
689/* =============================================================================
690 * PTR layout (CFDTM.PTR / CFDRF.PTR / CFDCF.PTR / CFDRM.PTR)
691 * =============================================================================
692 *
693 * [15:0] timestamp, [31:28] DLC.
694 */
695typedef enum : uint8_t {
698
699typedef enum : uint32_t {
702
703/* =============================================================================
704 * TX message-buffer control byte (CFDTMC[i])
705 * =============================================================================
706 *
707 * Single byte per buffer: TMTR (bit 0), TMTAR (bit 1), TMOM (bit 2).
708 */
709typedef enum : uint8_t {
714
715/* =============================================================================
716 * CAN-FD Config register (CFDC2[0].FDCFG) -- TDC fields
717 * =============================================================================
718 *
719 * From FSP `R_CANFD_CFDC2_FDCFG_b` (R7KA8D2KF_core0.h):
720 * bits [2:0] EOCCFG Error-Occurrence Counter Config
721 * bits [7:3] reserved
722 * bits [14:8] TDCO Transmitter Delay Compensation Offset (7-bit)
723 * bit [15] TDCOC TDC Offset Control (0=measured FDSTS.TDCR, 1=TDCO)
724 * bit [16] TDE Transmitter Delay Compensation Enable
725 * bit [17] reserved
726 * bit [18] FDOE FD-Only Enable
727 * bit [19] REFE RX Edge Filter Enable
728 * bit [20] CLOE CAN Classic-frame Loopback Enable
729 * bits [23:21] reserved
730 * bit [24] ESIC Error State Indication Configuration
731 * bits [31:25] reserved
732 *
733 * HUM Ch 41 "CFDCnFDCFG" p 2788.
734 */
735
755
772typedef enum : uint32_t {
775 k_ra8_fdcfg_mask_tde = 1UL << 16U,
777
791typedef enum : uint8_t {
794
795/* =============================================================================
796 * CAN-FD Status register (CFDC2[0].FDSTS) -- TDC result field
797 * =============================================================================
798 *
799 * From FSP `R_CANFD_CFDC2_FDSTS_b`:
800 * bits [7:0] TDCR Measured TDC result in time quanta (read-only)
801 * bit [8] EOCO Error-Occurrence Counter Overflow
802 * bit [9] SOCO Stuff-bit Counter Overflow
803 *
804 * After TDE is set the controller writes the measured transmitter loop
805 * delay (in TQ units) into FDSTS.TDCR[7:0] after the first successful
806 * data-phase bit. HUM Ch 41 "CFDCnFDSTS" p 2792.
807 */
808
821typedef enum : uint32_t {
824
825#ifdef __cplusplus
826}
827#endif
Annotation-attribute framework macros for ra8-firmware.
#define RA8_HW_REGISTER_ACCESS
Mark an MMIO accessor function (returns volatile register pointer).
ra8_gaflp1_bits_t
CFDGAFLP1r layout (HUM Ch 41.2.22 p 2740).
@ k_ra8_gaflp1_bit_gaflfdp0
Route to RX FIFO 0.
ra8_canfd_fd_bits_t
@ k_ra8_canfd_fd_brs
BRS: bit-rate switch.
@ k_ra8_canfd_fd_fdf
FDF: frame is CAN-FD.
@ k_ra8_canfd_fd_esi
ESI: error state indicator.
ra8_rfpctr_bits_t
@ k_ra8_rfpctr_value_ack
Dummy write to pop entry.
ra8_canfd_frame_limits_t
Message-frame limits common to the public API and register layer.
@ k_ra8_canfd_dlc_max
4-bit DLC max value (64 bytes).
@ k_ra8_canfd_data_bytes_max
CAN-FD payload cap in bytes.
ra8_chmdc_mode_t
Channel Mode Control (CFDC[0].CTR.CHMDC[1:0]) values.
@ k_ra8_chmdc_operation
Bus operation mode.
@ k_ra8_chmdc_reset
Reset mode.
@ k_ra8_chmdc_keep
Keep current mode.
@ k_ra8_chmdc_halt
Halt mode.
ra8_canfd_limits_t
@ k_ra8_canfd_afl_page_size
CFDGAFL[] page-window size.
@ k_ra8_canfd_tx_mb_count
CFDTM / CFDTMC / CFDTMSTS length.
@ k_ra8_canfd_instance_count
Number of CANFD channels.
@ k_ra8_canfd_cf_count
Common-FIFO array length.
@ k_ra8_canfd_rm_per_cluster
RX MB entries per cluster.
@ k_ra8_canfd_rm_clusters
CFDRM cluster array length.
@ k_ra8_canfd_rx_fifo_count
CFDRFCC / CFDRFSTS array length.
ra8_fdcfg_mask_t
Bit masks for the TDC fields in CFDCnFDCFG.
@ k_ra8_fdcfg_mask_tde
TDE positioned mask (bit 16).
@ k_ra8_fdcfg_mask_tdco
TDCO pre-shift 7-bit mask.
@ k_ra8_fdcfg_mask_tdcoc
TDCOC positioned mask (bit 15).
ra8_canfd_ptr_mask_t
@ k_ra8_canfd_ptr_mask_dlc
4-bit DLC mask.
ra8_rfsts_bits_t
@ k_ra8_rfsts_bit_if
RFIF: interrupt flag.
@ k_ra8_rfsts_bit_empty
RFEMP: FIFO empty flag.
@ k_ra8_rfsts_bit_full
RFFLL: FIFO full flag.
@ k_ra8_rfsts_bit_mlt
RFMLT: message lost.
ra8_canfd_tmc_bits_t
@ k_ra8_canfd_tmc_txreq
TMTR: transmit request.
@ k_ra8_canfd_tmc_oneshot
TMOM: one-shot mode.
@ k_ra8_canfd_tmc_abort
TMTAR: abort request.
ra8_canfd_ptr_shift_t
@ k_ra8_canfd_ptr_shift_dlc
DLC field shift.
ra8_cncfg_mask_t
@ k_ra8_cncfg_mask_ntseg2
[31:25] 7-bit TSEG2 field.
@ k_ra8_cncfg_mask_ntseg1
[24:17] 8-bit TSEG1 field.
@ k_ra8_cncfg_mask_nsjw
[16:10] 7-bit SJW field.
@ k_ra8_cncfg_mask_nbrp
[9:0] 10-bit prescaler field.
ra8_cnerfl_mask_t
@ k_ra8_cnerfl_mask_b1err
RA8 cnerfl mask b1err.
@ k_ra8_cnerfl_mask_blf
RA8 cnerfl mask blf.
@ k_ra8_cnerfl_mask_ferr
RA8 cnerfl mask ferr.
@ k_ra8_cnerfl_mask_bef
RA8 cnerfl mask bef.
@ k_ra8_cnerfl_mask_all_w1c
[14:0] all writable error bits.
@ k_ra8_cnerfl_mask_alf
RA8 cnerfl mask alf.
@ k_ra8_cnerfl_mask_serr
RA8 cnerfl mask serr.
@ k_ra8_cnerfl_mask_borf
RA8 cnerfl mask borf.
@ k_ra8_cnerfl_mask_ewf
RA8 cnerfl mask ewf.
@ k_ra8_cnerfl_mask_epf
RA8 cnerfl mask epf.
@ k_ra8_cnerfl_mask_b0err
RA8 cnerfl mask b0err.
@ k_ra8_cnerfl_mask_aderr
RA8 cnerfl mask aderr.
@ k_ra8_cnerfl_mask_boef
RA8 cnerfl mask boef.
@ k_ra8_cnerfl_mask_aerr
RA8 cnerfl mask aerr.
@ k_ra8_cnerfl_mask_ovlf
RA8 cnerfl mask ovlf.
@ k_ra8_cnerfl_mask_cerr
RA8 cnerfl mask cerr.
ra8_canfd_bit_timing_limits_t
Prescaler / TSEG / SJW resolution bounds shared by both phases.
@ k_ra8_canfd_sjw_max
Nominal SJW cap.
@ k_ra8_canfd_prescaler_max
Largest valid nominal prescaler.
@ k_ra8_canfd_dtseg1_max
Data-phase TSEG1 cap.
@ k_ra8_canfd_prescaler_min
Smallest valid prescaler.
@ k_ra8_canfd_dsjw_max
Data-phase SJW cap.
@ k_ra8_canfd_data_prescaler_max
Largest valid data prescaler (8-bit).
@ k_ra8_canfd_dtseg2_max
Data-phase TSEG2 cap.
@ k_ra8_canfd_tq_per_bit
Default time quanta per bit.
ra8_gctr_value_t
@ k_ra8_gctr_mask_gmdc
2-bit GMDC mask.
@ k_ra8_gctr_value_operation
GMDC = 0: operation.
@ k_ra8_gctr_mask_gslpr
RA8 gctr mask gslpr.
@ k_ra8_gctr_value_halt
GMDC = 2: halt.
@ k_ra8_gctr_value_reset
GMDC = 1: reset.
ra8_cnsts_mask_t
@ k_ra8_cnsts_mask_tec
TEC field mask (post-shift).
@ k_ra8_cnsts_mask_rec
REC field mask (post-shift).
ra8_canfd_id_bits_t
@ k_ra8_canfd_id_thlen
TX history-list enable.
@ k_ra8_canfd_id_std_mask
11-bit standard ID.
@ k_ra8_canfd_id_rtr
RTR: remote frame.
@ k_ra8_canfd_id_ext_mask
29-bit extended ID.
@ k_ra8_canfd_id_ide
IDE: extended flag.
ra8_canfd_tdc_limits_t
Bounds on the Transmitter Delay Compensation Offset field.
@ k_ra8_canfd_tdc_offset_max
Maximum TDCO value: 7-bit field cap.
ra8_gaflectr_bits_t
@ k_ra8_gaflectr_mask_aflpn
RA8 gaflectr mask aflpn.
@ k_ra8_gaflectr_bit_afldae
RA8 gaflectr bit afldae.
ra8_cnsts_bit_t
@ k_ra8_cnsts_bit_epst
Error Passive Status.
@ k_ra8_cnsts_bit_bosts
Bus-Off Status.
@ k_ra8_cnsts_bit_rec
REC[23:16] in STS.
@ k_ra8_cnsts_bit_crstst
Channel Reset Status.
@ k_ra8_cnsts_bit_chltst
Channel Halt Status.
@ k_ra8_cnsts_bit_cslpst
Channel Sleep Status.
@ k_ra8_cnsts_bit_tec
TEC[31:24] in STS.
ra8_rfcc_bits_t
@ k_ra8_rfcc_bit_rfie
RFIE: interrupt enable.
@ k_ra8_rfcc_bit_rfe
RFE: enable FIFO.
ra8_ctms_mode_t
Channel Test Mode Select values (CFDC[0].CTR.CTMS[1:0]).
@ k_ra8_ctms_self_test_1
11b: Self-test 1 (internal loopback).
@ k_ra8_ctms_listen_only
01b: Listen-only mode.
@ k_ra8_ctms_self_test_0
10b: Self-test 0 (external loopback).
@ k_ra8_ctms_basic
00b: Basic test mode (CRC observation).
ra8_cncfg_shift_t
@ k_ra8_cncfg_shift_ntseg1
RA8 cncfg shift ntseg1.
@ k_ra8_cncfg_shift_nsjw
RA8 cncfg shift nsjw.
@ k_ra8_cncfg_shift_ntseg2
RA8 cncfg shift ntseg2.
@ k_ra8_cncfg_shift_nbrp
RA8 cncfg shift nbrp.
ra8_canfd_addr_t
@ k_ra8_canfd1_base_addr
HUM Ch 41 p 2702 channel 1 base.
@ k_ra8_canfd0_base_addr
HUM Ch 41 p 2702 channel 0 base.
ra8_cnctr_bit_t
@ k_ra8_cnctr_bit_ctms
Channel Test Mode Select [26:25].
@ k_ra8_cnctr_bit_chmdc
Channel Mode Control [1:0].
@ k_ra8_cnctr_bit_bom
Bus-Off Mode [22:21].
@ k_ra8_cnctr_bit_ctme
Channel Test Mode Enable bit 24.
@ k_ra8_cnctr_bit_cslpr
Channel Sleep Request bit 2.
static volatile r_canfd_t * ra8_canfd(uint8_t channel)
Get pointer to CANFD instance N (0..1).
ra8_canfd_gfdcfg_bits_t
CFDGFDCFG (Global FD Config) field positions.
@ k_ra8_gfdcfg_bit_niso
NISO: ISO mode select.
ra8_gaflcfg0_bits_t
CFDGAFLCFG0 layout (HUM Ch 41.2.18 p 2735).
@ k_ra8_gaflcfg0_mask_rnc0
RNC0 field is 5 bits.
@ k_ra8_gaflcfg0_shift_rnc0
Position of RNC0[4:0].
ra8_canfd_afl_total_t
Maximum number of GAFL filter rules across all paged windows.
@ k_ra8_canfd_afl_total
16 pages x 16 entries.
ra8_canfd_pad_t
Reserved-region sizes between FSP-named registers.
@ k_ra8_canfd_pad_rm_cluster_words
CFDRM cluster pad (0x1A0/4).
@ k_ra8_canfd_rpgacc_word_count
CFDRPGACC[64] RAM-test page.
@ k_ra8_canfd_pad_before_thl_words
0x734..0x73F -> 3 words.
@ k_ra8_canfd_pad_before_rm_words
0x748..0x91F -> 118 words.
@ k_ra8_canfd_pad_before_rf_words
0x380..0x51F -> 104 words.
@ k_ra8_canfd_pad_after_grstc_words
0x0DC..0x0FF -> 9 words.
@ k_ra8_canfd_pad_before_grstc
0x0D0..0x0D7 -> 2 words.
@ k_ra8_canfd_pad_before_rpgacc
0x220..0x27F -> 24 words.
@ k_ra8_canfd_pad_cfdc2_tail_bytes
CFDC2 reserved tail (3 words).
ra8_dcfg_shift_t
@ k_ra8_dcfg_shift_dbrp
RA8 dcfg shift dbrp.
@ k_ra8_dcfg_shift_dtseg1
RA8 dcfg shift dtseg1.
@ k_ra8_dcfg_shift_dtseg2
RA8 dcfg shift dtseg2.
@ k_ra8_dcfg_shift_dsjw
RA8 dcfg shift dsjw.
ra8_dcfg_mask_t
@ k_ra8_dcfg_mask_dbrp
[7:0] 8-bit DBRP.
@ k_ra8_dcfg_mask_dtseg1
[12:8] 5-bit DTSEG1.
@ k_ra8_dcfg_mask_dsjw
[27:24] 4-bit DSJW.
@ k_ra8_dcfg_mask_dtseg2
[19:16] 4-bit DTSEG2.
ra8_gaflm_bits_t
CFDGAFLM (Acceptance Filter Mask) layout (HUM Ch 41.2.20 p 2736).
@ k_ra8_gaflm_bit_gafllb
Loopback Configuration bit.
@ k_ra8_gaflm_bit_gaflidem
IDE-compare mask bit.
@ k_ra8_gaflm_bit_gaflrtrm
RTR-compare mask bit.
ra8_cnctr_mask_t
@ k_ra8_cnctr_mask_ctme
CTME bit 24.
@ k_ra8_cnctr_mask_ctms
CTMS[1:0] at bits [26:25].
@ k_ra8_cnctr_mask_cslpr
CSLPR (bit 2).
@ k_ra8_cnctr_mask_chmdc
2-bit CHMDC mask.
ra8_fdcfg_shift_t
Bit-shift positions for the TDC fields in CFDCnFDCFG.
@ k_ra8_fdcfg_shift_tdco
TDCO[14:8]: 7-bit TDC offset bit-shift.
@ k_ra8_fdcfg_shift_tde
TDE[16]: TDC enable bit-shift.
@ k_ra8_fdcfg_shift_tdcoc
TDCOC[15]: TDC offset-control bit-shift.
ra8_gsts_bit_t
Global Status (CFDGSTS) bit positions.
@ k_ra8_gsts_bit_ghltsts
Global Halt Status.
@ k_ra8_gsts_bit_graminit
Global RAM Initialisation.
@ k_ra8_gsts_bit_gslpsts
Global Sleep Status.
@ k_ra8_gsts_bit_grststs
Global Reset Status.
ra8_gctr_bit_t
@ k_ra8_gctr_bit_gslpr
Global Sleep Request bit.
@ k_ra8_gctr_bit_gmdc
GMDC field [1:0].
ra8_fdsts_mask_t
Bit mask for the TDCR read-only measurement in CFDCnFDSTS.
@ k_ra8_fdsts_mask_tdcr
TDCR[7:0]: 8-bit measured TDC result.
volatile uint32_t FDCFG
+0x004 CAN-FD Config.
volatile uint32_t DCFG
+0x000 Data Bitrate Config.
volatile uint32_t FDSTS
+0x00C CAN-FD Status.
volatile uint32_t FDCRC
+0x010 CAN-FD CRC.
volatile uint8_t _reserved[k_ra8_canfd_pad_cfdc2_tail_bytes]
Reserved.
volatile uint32_t FDCTR
+0x008 CAN-FD Control.
volatile uint32_t NCFG
+0x000 Nominal Bitrate Config.
volatile uint32_t ERFL
+0x00C Channel Error Flag.
volatile uint32_t CTR
+0x004 Channel Control.
volatile uint32_t STS
+0x008 Channel Status.
volatile uint32_t FDSTS
+0x008 CFESI + CFBRS + CFFDF + ...
volatile uint32_t ID
+0x000 CFID + THLEN + CFRTR + IDE.
volatile uint32_t PTR
+0x004 CFTS + CFDLC.
volatile uint8_t DF[k_ra8_canfd_data_bytes_max]
+0x00C 64-byte data field.
volatile uint32_t P1
+0x00C GAFLFDP.
volatile uint32_t M
+0x004 GAFLIDM + GAFLIFL1 + GAFLRTRM + IDEM.
volatile uint32_t P0
+0x008 GAFLDLC + GAFLIFL0 + GAFLRMDP + ...
volatile uint32_t ID
+0x000 GAFLID + GAFLLB + GAFLRTR + GAFLIDE.
volatile uint32_t PTR
+0x004 RFTS + RFDLC.
volatile uint8_t DF[k_ra8_canfd_data_bytes_max]
+0x00C 64-byte data field.
volatile uint32_t ID
+0x000 RFID + RFRTR + RFIDE.
volatile uint32_t FDSTS
+0x008 RFESI + RFBRS + RFFDF + ...
volatile uint32_t PTR
+0x004 RMTS + RMDLC.
volatile uint32_t ID
+0x000 RMID + RMRTR + RMIDE.
volatile uint8_t DF[k_ra8_canfd_data_bytes_max]
+0x00C 64-byte data field.
volatile uint32_t FDSTS
+0x008 RMESI + RMBRS + RMFDF.
r_canfd_cfdrm_entry_t RM[k_ra8_canfd_rm_per_cluster]
+0x000 8 RX MBs.
volatile uint32_t _reserved[k_ra8_canfd_pad_rm_cluster_words]
0x4C * 8 = 0x260 -> pad to 0x400 (104 words).
volatile uint32_t ACC1
+0x004 TID + TIFL.
volatile uint32_t ACC0
+0x000 BT + BN + TMTS.
volatile uint32_t FDCTR
+0x008 TMESI + TMBRS + TMFDF + ...
volatile uint32_t PTR
+0x004 TMTS + TMDLC.
volatile uint8_t DF[k_ra8_canfd_data_bytes_max]
+0x00C 64-byte data field.
volatile uint32_t ID
+0x000 TMID + THLEN + TMRTR + IDE.
volatile uint32_t CFDGTSC
CFDGTSC register (offset 0x024).
volatile uint32_t CFDGAFLECTR
CFDGAFLECTR register (offset 0x028).
volatile uint32_t CFDRFPCTR[k_ra8_canfd_rx_fifo_count]
CFDRFPCTR reg (offset 0x04C..0x053).
volatile uint32_t CFDRMIEC
CFDRMIEC register (offset 0x038).
volatile uint32_t CFDCFSTS[k_ra8_canfd_cf_count]
CFDCFSTS register (offset 0x058).
volatile uint32_t CFDGRSTC
CFDGRSTC register (offset 0x0D8).
volatile uint32_t CFDRFSTS[k_ra8_canfd_rx_fifo_count]
CFDRFSTS register (offset 0x044..0x04B).
volatile uint32_t _r_after_grstc[k_ra8_canfd_pad_after_grstc_words]
Reserved (offset 0x0DC..0x0FF).
volatile uint32_t CFDGSTS
CFDGSTS register (offset 0x01C).
volatile uint32_t _r_after_cfdc
Reserved (offset 0x010).
volatile uint32_t CFDTMTRSTS[1]
CFDTMTRSTS register (offset 0x078).
volatile uint32_t CFDTXQCC0[1]
CFDTXQCC0 register (offset 0x08C).
volatile uint32_t _r_before_thl[k_ra8_canfd_pad_before_thl_words]
Reserved (offset 0x734..0x73F).
volatile uint32_t CFDGCFG
CFDGCFG register (offset 0x014).
volatile uint32_t CFDTMTARSTS[1]
CFDTMTARSTS register (offset 0x07C).
volatile uint32_t CFDGFDCFG
CFDGFDCFG register (offset 0x0B0).
volatile uint32_t CFDGCTR
CFDGCTR register (offset 0x018).
volatile uint32_t CFDGAFLIGNCTR
CFDGAFLIGNCTR reg (offset 0x0C4).
volatile uint32_t CFDTHLCC[1]
CFDTHLCC register (offset 0x098).
r_canfd_cfdthl_t CFDTHL[1]
CFDTHL register (offset 0x740..0x747).
volatile uint32_t CFDTMTCSTS[1]
CFDTMTCSTS register (offset 0x080).
volatile uint32_t CFDTMTASTS[1]
CFDTMTASTS register (offset 0x084).
volatile uint32_t CFDRMNB
CFDRMNB register (offset 0x030).
volatile uint32_t _r_before_rpgacc[k_ra8_canfd_pad_before_rpgacc]
Reserved (offset 0x220..0x27F).
volatile uint32_t CFDRMND0
CFDRMND0 register (offset 0x034).
volatile uint8_t CFDTMC[k_ra8_canfd_tx_mb_count]
CFDTMC register (offset 0x070).
volatile uint32_t _r_before_rf[k_ra8_canfd_pad_before_rf_words]
Reserved (offset 0x380..0x51F).
r_canfd_cfdtm_t CFDTM[k_ra8_canfd_tx_mb_count]
CFDTM register (offset 0x604..0x733).
volatile uint32_t CFDFMSTS
CFDFMSTS register (offset 0x068).
volatile uint32_t CFDTMIEC[1]
CFDTMIEC register (offset 0x088).
r_canfd_cfdgafl_t CFDGAFL[k_ra8_canfd_afl_page_size]
CFDGAFL register (offset 0x120 (0x100)).
volatile uint32_t CFDCDTSTS
CFDCDTSTS register (offset 0x0CC).
volatile uint32_t CFDGTSTCFG
CFDGTSTCFG register (offset 0x0A8).
volatile uint32_t _r_after_gfdcfg
Reserved (offset 0x0B4).
r_canfd_cfdrf_t CFDRF[k_ra8_canfd_rx_fifo_count]
CFDRF register (offset 0x520..0x5B7).
volatile uint32_t CFDGAFLIGNENT
CFDGAFLIGNENT reg (offset 0x0C0).
volatile uint32_t CFDGERFL
CFDGERFL register (offset 0x020).
volatile uint32_t CFDTHLPCTR[1]
CFDTHLPCTR register (offset 0x0A0).
volatile uint32_t CFDGLOCKK
CFDGLOCKK register (offset 0x0B8).
volatile uint32_t CFDTXQSTS0[1]
CFDTXQSTS0 register (offset 0x090).
volatile uint32_t CFDFESTS
CFDFESTS register (offset 0x060).
volatile uint32_t CFDCFCC[k_ra8_canfd_cf_count]
CFDCFCC register (offset 0x054).
volatile uint32_t _r_after_glockk
Reserved (offset 0x0BC).
volatile uint32_t CFDCDTCT
CFDCDTCT register (offset 0x0C8).
volatile uint32_t CFDRFCC[k_ra8_canfd_rx_fifo_count]
CFDRFCC register (offset 0x03C..0x043).
volatile uint32_t CFDFFSTS
CFDFFSTS register (offset 0x064).
volatile uint32_t CFDTXQPCTR0[1]
CFDTXQPCTR0 register (offset 0x094).
volatile uint32_t CFDRPGACC[k_ra8_canfd_rpgacc_word_count]
CFDRPGACC register (offset 0x280 (0x100)).
r_canfd_cfdcf_t CFDCF[k_ra8_canfd_cf_count]
CFDCF register (offset 0x5B8..0x603).
volatile uint32_t CFDTHLSTS[1]
CFDTHLSTS register (offset 0x09C).
volatile uint32_t _r_before_grstc[k_ra8_canfd_pad_before_grstc]
Reserved (offset 0x0D0..0x0D7).
volatile uint32_t _r_before_rm[k_ra8_canfd_pad_before_rm_words]
Reserved (offset 0x748..0x91F).
volatile uint32_t CFDRFISTS
CFDRFISTS register (offset 0x06C).
volatile uint8_t CFDTMSTS[k_ra8_canfd_tx_mb_count]
CFDTMSTS register (offset 0x074).
volatile uint32_t CFDGTINTSTS0
CFDGTINTSTS0 register (offset 0x0A4).
volatile uint32_t CFDCFPCTR[k_ra8_canfd_cf_count]
CFDCFPCTR register (offset 0x05C).
r_canfd_cfdc_t CFDC[1]
CFDC register.
r_canfd_cfdrm_t CFDRM[k_ra8_canfd_rm_clusters]
CFDRM register (offset 0x920..0x191F).
r_canfd_cfdc2_t CFDC2[1]
CFDC2 register (offset 0x100 (0x20)).
volatile uint32_t CFDGTSTCTR
CFDGTSTCTR register (offset 0x0AC).
volatile uint32_t CFDGAFLCFG0
CFDGAFLCFG0 register (offset 0x02C).