|
ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
|
CAN with Flexible Data-rate driver implementation. More...
#include "ra8_canfd.h"#include <stdint.h>#include "ra8_attributes.h"#include "ra8_canfd_regs.h"#include "ra8_cgc.h"#include "ra8_check.h"#include "ra8_err.h"#include "ra8_hal_internal.h"#include "ra8_hw_err.h"#include "ra8_log.h"#include "ra8_mstp.h"#include "ra8_register_protection.h"#include "ra8_system_regs.h"Go to the source code of this file.
Enumerations | |
| enum | ra8_canfd_internal_t : uint32_t { k_ra8_canfd_spin = 20000U , k_ra8_canfd_ckcr_spin = 262144U } |
| Internal tunables (mode-transition + clock-handshake spin budgets). More... | |
| enum | : uint16_t { k_ra8_canfd_afl_per_page = 16U } |
| Number of AFL slots that live on page 0. More... | |
Functions | |
| static ra8_err_t | internal_wait_status_bit (volatile r_canfd_t *reg, uint8_t status_bit) |
| Bounded wait on a CFDC[0].STS flag (reset/halt/operation ack). | |
| ra8_err_t | priv_ra8_canfd_internal_set_channel_mode (volatile r_canfd_t *reg, ra8_chmdc_mode_t mode) |
| Drive CFDC[0].CTR.CHMDC and wait for the matching status bit. | |
| static ra8_err_t | internal_set_global_mode (volatile r_canfd_t *reg, uint32_t gmdc_value) |
| Drive CFDGCTR.GMDC and wait for matching CFDGSTS bit. | |
| static void | internal_install_default_afl (volatile r_canfd_t *reg) |
| Program a default pass-all AFL rule routed into RX FIFO 0. | |
| static void | internal_configure_rx_fifo0 (volatile r_canfd_t *reg) |
| Enable RX FIFO 0 with a sensible default depth and payload. | |
| static void | internal_enable_rx_fifo0 (volatile r_canfd_t *reg) |
| Enable RX FIFO 0 (RFE=1) – must run in GL_HALT or GL_OPERATION. | |
| static ra8_err_t | internal_wait_canfdcksrdy (uint8_t expected) |
Bounded wait on CANFDCKCR.CANFDCKSRDY reaching expected. | |
| static ra8_err_t | internal_canfd_clock_block_init (void) |
| Block-level CANFD clock init – run BEFORE the first MSTP release. | |
| static ra8_err_t | internal_canfd_open_channel (volatile r_canfd_t *reg) |
| Push the CANFD global+channel state machines into OPERATION. | |
| ra8_err_t | ra8_canfd_init (uint8_t channel) |
| Take a CANFD channel out of reset into operation mode. | |
| ra8_err_t | ra8_canfd_deinit (uint8_t channel) |
| Put the CANFD channel back into reset. | |
| ra8_err_t | ra8_canfd_get_status (uint8_t channel, uint32_t *out_mask) |
| Read the channel status register (CFDCnSTS). | |
| ra8_err_t | ra8_canfd_clear_status (uint8_t channel, uint32_t mask) |
| Clear error flags in CFDCnERFL. | |
| ra8_err_t | ra8_canfd_attach_handler (ra8_canfd_event_fn_t fn, void *ctx) |
| Attach a callback for CANFD events (shared across channels). | |
| void | ra8_canfd_dispatch (uint8_t channel) |
| Dispatch a CANFD event for a channel – snapshot + fire callback. | |
| static void | internal_bump_rnc0_locked (volatile r_canfd_t *reg, uint16_t filter_id) |
Bump CFDGAFLCFG0.RNC0 to cover filter_id rules on page 0. | |
| static void | internal_write_afl_slot (volatile r_canfd_t *reg, uint16_t slot, uint32_t accept_id, uint32_t mask, uint8_t dlc) |
| Write one CFDGAFL slot (ID/M/P0/P1) with the loopback + FIFO-0 routing bits set. | |
| 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. | |
| 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). | |
| ra8_err_t | ra8_canfd_set_iso_mode (bool enable) |
| Select ISO 11898-1 vs non-ISO CAN-FD framing. | |
| ra8_err_t | ra8_canfd_enter_stop (uint8_t channel) |
| Put the CANFD channel into MSTP-gated stop. | |
| ra8_err_t | ra8_canfd_exit_stop (uint8_t channel) |
| Exit MSTP-gated stop. | |
Variables | |
| static const char * | s_tag = "CANFD" |
| static const ra8_mstp_t | s_canfd_mstp_table [] |
| Channel-index -> MSTP id lookup. | |
| static ra8_canfd_event_fn_t | s_canfd_fn |
| static void * | s_canfd_ctx |
CAN with Flexible Data-rate driver implementation.
Driver for the RA8D2 CANFD block. Mirrors the FSP r_canfd.c Open / Close / Write / Read / ModeTransition / InfoGet flow:
Every register access carries a HUM Ch 41 "CAN with Flexible Data-rate (CANFD)" citation (pages 2702..2867, chapter map row 41) or an FSP r_canfd.c line citation when the bit semantics come from the reference driver.
Definition in file ra8_canfd.c.
| anonymous enum : uint16_t |
Number of AFL slots that live on page 0.
| Enumerator | |
|---|---|
| k_ra8_canfd_afl_per_page | RA8 CANFD afl per page. |
Definition at line 610 of file ra8_canfd.c.
| enum ra8_canfd_internal_t : uint32_t |
Internal tunables (mode-transition + clock-handshake spin budgets).
k_ra8_canfd_spin bounds CHLTSTS / CRSTSTS / GHLTSTS / GRSTSTS polls. The CANFD channel/global state machine completes a mode transition within a handful of CANFDCLK ticks (HUM Ch 41 "CFDCnCTR.CHMDC" p 2762 and "CFDGCTR" p 2742). At a CPU running 1 GHz and a tight 5-cycle register-read poll, 20000 iterations ~= 100 us, well above the documented worst-case wait but small enough that a stuck handshake (e.g. CANFDCLK not actually stable) surfaces as an hw_timeout in sub-millisecond time instead of bricking the HIL loop. k_ra8_canfd_ckcr_spin is the matching budget for the CANFDCKCR SREQ/SRDY handshake – shares its order of magnitude with the USB/SCI CKSRDY waits in ra8_cgc.c.
| Enumerator | |
|---|---|
| k_ra8_canfd_spin | Bounded poll budget in iterations. |
| k_ra8_canfd_ckcr_spin | CANFDCKCR SREQ/SRDY budget. |
Definition at line 70 of file ra8_canfd.c.
|
static |
Bump CFDGAFLCFG0.RNC0 to cover filter_id rules on page 0.
Caller must already have placed the global block in GL_RESET; RNC0 is RESET-only per HUM Ch 41.2.18 p 2735.
| [in] | reg | CANFD register block (channel 0). |
| [in] | filter_id | Filter slot index in [0, k_ra8_canfd_afl_total). |
Definition at line 628 of file ra8_canfd.c.
References r_canfd_t::CFDGAFLCFG0, k_ra8_canfd_afl_per_page, k_ra8_gaflcfg0_mask_rnc0, and k_ra8_gaflcfg0_shift_rnc0.
Referenced by ra8_canfd_filter_set().
|
static |
Block-level CANFD clock init – run BEFORE the first MSTP release.
HUM Ch 11.2.8 "MSTPCRC" Note 4 (p 446) states that MSTPC26 / MSTPC27 (the per-channel CANFD module-stop bits) must be written AFTER the CANFDCLK is stable. CANFDCKCR resets to 0x01 (CANFDCKSEL = MOCO, CANFDCKSREQ = 0, CANFDCKSRDY = 0). MOCO is on at reset, but the RA8D2 CGC requires an explicit SREQ -> SRDY -> SREQ-clear handshake before the chip raises CANFDCKSRDY and declares the clock stable. Without that handshake the canfd block's internal state machine cannot reach CH_HALT after the first CFDCnCTR.CHMDC write – symptom seen on HIL: ra8_canfd_set_test_mode -> priv_ra8_canfd_internal_set_channel_mode (k_ra8_chmdc_halt) -> internal_wait_status_bit times out on CHLTSTS for can_classic_loopback / canfd_loopback / canfd_filter_demo.
Steps (mirrors FSP bsp_clocks.c CANFD CLK block + the USBCKCR pattern in ra8_cgc.c):
This helper is idempotent via a static guard: only the first caller performs the handshake; subsequent ra8_canfd_init calls (e.g. for channel 1 after channel 0) skip it.
| k_ra8_ok | CANFDCLK declared stable; safe to release MSTP. |
| k_ra8_err_hw_timeout | CKSRDY handshake stuck. |
Definition at line 426 of file ra8_canfd.c.
References internal_wait_canfdcksrdy(), k_ra8_ok, k_ra8_prcr_unlock_cgc, k_ra8_usbckcr_bit_sreq, ra8_log_error, ra8_log_info, RA8_PROTECTED_WRITE, ra8_sys_canfdckcr(), ra8_sys_canfdckdivcr(), and s_tag.
Referenced by ra8_canfd_init().
Push the CANFD global+channel state machines into OPERATION.
Mirrors FSP r_canfd.c lines ~311..417: cancel global sleep via GL_RESET, cancel channel sleep via CH_RESET, install a pass-all AFL + RX FIFO 0 while in GL_RESET (HUM Ch 41 p 2729..2742), then transition into GL_OPERATION and CH_OPERATION.
| [in] | reg | CANFD register block for the target channel. |
| k_ra8_ok | Channel reached CH_OPERATION. |
| k_ra8_err_hw_timeout | GL_OPERATION or CH_OPERATION never latched. |
Definition at line 492 of file ra8_canfd.c.
References internal_configure_rx_fifo0(), internal_enable_rx_fifo0(), internal_install_default_afl(), internal_set_global_mode(), k_ra8_chmdc_operation, k_ra8_chmdc_reset, k_ra8_gctr_value_operation, k_ra8_gctr_value_reset, k_ra8_ok, and priv_ra8_canfd_internal_set_channel_mode().
Referenced by ra8_canfd_init().
|
static |
Enable RX FIFO 0 with a sensible default depth and payload.
HUM Ch 41 "CFDRFCCa" p 2741: RFE is the last bit set in the register, RFDC selects FIFO depth, RFPLS selects per-entry payload bytes. Writing RFE = 1 while RFDC = 0 silently fails ("This bit can only be set if the configured FIFO depth is greater than 0x000").
Programmed values:
| [in] | reg | Pointer to the CANFD channel register block. |
< RFDC = 001b -> 4 entries.
< RFPLS = 111b -> 64-byte CAN-FD.
Definition at line 305 of file ra8_canfd.c.
References r_canfd_t::CFDRFCC.
Referenced by internal_canfd_open_channel().
|
static |
Enable RX FIFO 0 (RFE=1) – must run in GL_HALT or GL_OPERATION.
Asserts CFDRFCCa.RFE on RX FIFO 0 to bring the FIFO out of the disabled / read-and-write-pointer-cleared state.
| [in] | reg | CANFD register block. |
Definition at line 335 of file ra8_canfd.c.
References r_canfd_t::CFDRFCC, and k_ra8_rfcc_bit_rfe.
Referenced by internal_canfd_open_channel(), and ra8_canfd_filter_set().
|
static |
Program a default pass-all AFL rule routed into RX FIFO 0.
Without at least one Acceptance-Filter-List rule active, every received frame is dropped by the controller before it reaches a destination buffer (HUM Ch 41 "Acceptance Filter List" p 2731-2740: routing is governed by the GAFLFDP0/1/8 bits in CFDGAFLP1, and CFDGAFLCFG0.RNC0 must be non-zero for any rule to be considered).
This helper installs rule 0 with mask = 0 (every ID matches) and GAFLFDP0 = 1 (route into RX FIFO 0). It must run while the global block is in GL_RESET – the documented edit window for AFL data and for CFDGAFLCFG0 (HUM Ch 41 "CFDGAFLCFG0" p 2730 and "CFDGAFLECTR" p 2729).
| [in] | reg | Pointer to the CANFD channel register block. |
Definition at line 259 of file ra8_canfd.c.
References r_canfd_t::CFDGAFL, r_canfd_t::CFDGAFLCFG0, r_canfd_t::CFDGAFLECTR, r_canfd_cfdgafl_t::ID, k_ra8_gaflectr_bit_afldae, r_canfd_cfdgafl_t::M, r_canfd_cfdgafl_t::P0, and r_canfd_cfdgafl_t::P1.
Referenced by internal_canfd_open_channel().
Drive CFDGCTR.GMDC and wait for matching CFDGSTS bit.
Mirrors FSP global-mode transition. GMDC is bits [1:0] of CFDGCTR and clearing GSLPR (bit 2) is required to leave global sleep (HUM Ch 41 p 2742 "CFDGCTR").
| [in] | reg | See header declaration for direction and constraints. |
| [in] | gmdc_value | See header declaration for direction and constraints. |
| k_ra8_ok | Success path. |
| k_ra8_err_invalid_arg | Caller violated a precondition. |
Definition at line 204 of file ra8_canfd.c.
References r_canfd_t::CFDGCTR, r_canfd_t::CFDGSTS, k_ra8_canfd_spin, k_ra8_gctr_mask_gmdc, k_ra8_gctr_mask_gslpr, k_ra8_gctr_value_halt, k_ra8_gctr_value_reset, k_ra8_gsts_bit_ghltsts, k_ra8_gsts_bit_grststs, ra8_hw_wait_flag_clear32(), and ra8_hw_wait_flag_set32().
Referenced by internal_canfd_open_channel(), and ra8_canfd_filter_set().
|
static |
Bounded wait on CANFDCKCR.CANFDCKSRDY reaching expected.
Mirrors internal_wait_usbcksrdy in ra8_cgc.c. Polls CANFDCKCR bit 7 (CANFDCKSRDY) until it equals expected or the bounded budget k_ra8_canfd_ckcr_spin elapses.
| [in] | expected | 0U after the SREQ-clear write, 1U after SREQ=1. |
| k_ra8_ok | CKSRDY reached expected. |
| k_ra8_err_hw_timeout | SRDY never matched within the budget. |
Definition at line 364 of file ra8_canfd.c.
References k_ra8_canfd_ckcr_spin, k_ra8_usbckcr_bit_srdy, ra8_hw_wait_flag_clear8(), ra8_hw_wait_flag_set8(), and ra8_sys_canfdckcr().
Referenced by internal_canfd_clock_block_init().
Bounded wait on a CFDC[0].STS flag (reset/halt/operation ack).
HUM Ch 41 p 2766 "CFDCnSTS" – after CHMDC is written the matching status bit (CRSTSTS / CHLTSTS / etc) latches once the channel state machine reaches the requested mode.
| [in] | reg | See header declaration for direction and constraints. |
| [in] | status_bit | See header declaration for direction and constraints. |
| k_ra8_ok | Success path. |
| k_ra8_err_invalid_arg | Caller violated a precondition. |
Definition at line 96 of file ra8_canfd.c.
References r_canfd_t::CFDC, k_ra8_canfd_spin, ra8_hw_wait_flag_set32(), and r_canfd_cfdc_t::STS.
Referenced by priv_ra8_canfd_internal_set_channel_mode().
|
static |
Write one CFDGAFL slot (ID/M/P0/P1) with the loopback + FIFO-0 routing bits set.
Mask register OR-includes GAFLLB (bit 29) so the entry is valid under Self-test mode 0/1 (HUM Ch 41.5.5 Table 41.22); P1 OR-includes GAFLFDP0 so matched frames land in RX FIFO 0 (HUM Ch 41.2.22 p 2740).
| [in] | reg | CANFD register block. |
| [in] | slot | Slot index inside the unlocked page (0..15). |
| [in] | accept_id | 11/29-bit accept ID. |
| [in] | mask | 11/29-bit ID mask (caller-provided bits only). |
| [in] | dlc | DLC value 0..15. |
Definition at line 664 of file ra8_canfd.c.
References r_canfd_t::CFDGAFL, r_canfd_cfdgafl_t::ID, k_ra8_canfd_ptr_mask_dlc, k_ra8_canfd_ptr_shift_dlc, k_ra8_gaflm_bit_gafllb, k_ra8_gaflp1_bit_gaflfdp0, r_canfd_cfdgafl_t::M, r_canfd_cfdgafl_t::P0, and r_canfd_cfdgafl_t::P1.
Referenced by ra8_canfd_filter_set().
| ra8_err_t priv_ra8_canfd_internal_set_channel_mode | ( | volatile r_canfd_t * | reg, |
| ra8_chmdc_mode_t | mode ) |
Drive CFDC[0].CTR.CHMDC and wait for the matching status bit.
Mirrors r_canfd_mode_ctr_set + r_canfd_mode_transition from FSP r_canfd.c. The CHMDC field is bits [1:0] of CTR (FSP R_CANFD_CFDC_CTR_b.CHMDC). After a write the channel state machine drives CRSTSTS / CHLTSTS / CSLPSTS in CFDC[0].STS.
| [in] | reg | See header declaration for direction and constraints. |
| [in] | mode | See header declaration for direction and constraints. |
| k_ra8_ok | Success path. |
| k_ra8_err_invalid_arg | Caller violated a precondition. |
Definition at line 138 of file ra8_canfd.c.
References r_canfd_t::CFDC, r_canfd_cfdc_t::CTR, internal_wait_status_bit(), k_ra8_canfd_spin, k_ra8_chmdc_halt, k_ra8_chmdc_reset, k_ra8_cnctr_mask_chmdc, k_ra8_cnctr_mask_cslpr, k_ra8_cnsts_bit_chltst, k_ra8_cnsts_bit_crstst, ra8_hw_wait_flag_clear32(), and r_canfd_cfdc_t::STS.
Referenced by internal_canfd_open_channel(), ra8_canfd_deinit(), ra8_canfd_set_bitrate(), ra8_canfd_set_tdc(), and ra8_canfd_set_test_mode().
|
nodiscard |
Attach a callback for CANFD events (shared across channels).
Definition at line 585 of file ra8_canfd.c.
References k_ra8_ok, s_canfd_ctx, and s_canfd_fn.
|
nodiscard |
Clear error flags in CFDCnERFL.
Definition at line 574 of file ra8_canfd.c.
References r_canfd_t::CFDC, r_canfd_cfdc_t::ERFL, k_ra8_ok, ra8_canfd(), RA8_CHECK_NULL_PTR, and s_tag.
|
nodiscard |
Put the CANFD channel back into reset.
| [in] | channel | Channel index (0..1). |
Definition at line 546 of file ra8_canfd.c.
References k_ra8_chmdc_reset, k_ra8_ok, priv_ra8_canfd_internal_set_channel_mode(), ra8_canfd(), RA8_CHECK_NULL_PTR, and s_tag.
| void ra8_canfd_dispatch | ( | uint8_t | channel | ) |
Dispatch a CANFD event for a channel – snapshot + fire callback.
See the matching header declaration for the full contract; this site adds no behaviour beyond what the public API documents.
| [in] | channel | See header declaration for direction and constraints. |
Definition at line 593 of file ra8_canfd.c.
References r_canfd_t::CFDC, r_canfd_cfdc_t::ERFL, ra8_canfd(), s_canfd_ctx, and s_canfd_fn.
|
nodiscard |
Put the CANFD channel into MSTP-gated stop.
Definition at line 777 of file ra8_canfd.c.
References k_ra8_canfd_instance_count, k_ra8_err_invalid_arg, ra8_mstp_disable(), and s_canfd_mstp_table.
|
nodiscard |
Exit MSTP-gated stop.
Definition at line 786 of file ra8_canfd.c.
References k_ra8_canfd_instance_count, k_ra8_err_invalid_arg, ra8_mstp_enable(), and s_canfd_mstp_table.
|
nodiscard |
Programme one Global Acceptance-Filter-List (GAFL) entry.
Selects the AFL page that contains filter_id (each page holds 16 entries) by writing CFDGAFLECTR.AFLPN with the page index and unlocking the data window with CFDGAFLECTR.AFLDAE. Then writes CFDGAFL[idx].ID with the accept ID, CFDGAFL[idx].M with the bit mask, and CFDGAFL[idx].P1 with the DLC field used to gate fast RX-FIFO routing. See HUM Ch 41 "CFDGAFLECTR / CFDGAFL" pp 2702-2867.
| [in] | filter_id | Filter index (0..k_ra8_canfd_afl_total - 1). |
| [in] | accept_id | Raw arbitration ID to accept (11- or 29-bit). |
| [in] | mask | Bit mask – bits clear are "don't care". |
| [in] | dlc | DLC code packed into CFDGAFL.P1 (0..15). |
| k_ra8_ok | Filter slot programmed. |
| k_ra8_err_invalid_arg | filter_id, accept_id, or dlc out of range. |
Definition at line 689 of file ra8_canfd.c.
References r_canfd_t::CFDGAFLECTR, internal_bump_rnc0_locked(), internal_enable_rx_fifo0(), internal_set_global_mode(), internal_write_afl_slot(), k_ra8_canfd_afl_per_page, k_ra8_canfd_afl_total, k_ra8_canfd_dlc_max, k_ra8_canfd_id_ext_mask, k_ra8_err_invalid_arg, k_ra8_gaflectr_bit_afldae, k_ra8_gaflectr_mask_aflpn, k_ra8_gctr_value_operation, k_ra8_gctr_value_reset, k_ra8_ok, ra8_canfd(), RA8_CHECK_NULL_PTR, and s_tag.
Referenced by internal_canfd_filter_program_slots().
|
nodiscard |
Read the channel status register (CFDCnSTS).
Definition at line 564 of file ra8_canfd.c.
References r_canfd_t::CFDC, k_ra8_ok, ra8_canfd(), RA8_CHECK_NULL_PTR, s_tag, and r_canfd_cfdc_t::STS.
|
nodiscard |
Take a CANFD channel out of reset into operation mode.
| [in] | channel | Channel index (0..1). |
Definition at line 510 of file ra8_canfd.c.
References r_canfd_t::CFDGSTS, internal_canfd_clock_block_init(), internal_canfd_open_channel(), k_ra8_canfd_spin, k_ra8_err_invalid_arg, k_ra8_gsts_bit_graminit, k_ra8_ok, ra8_canfd(), RA8_CHECK_NULL_PTR, ra8_log_info_val, ra8_mstp_enable(), RA8_RETURN_ON_ERROR, s_canfd_mstp_table, and s_tag.
Referenced by internal_can_demo_setup_or_halt(), internal_canfd_demo_setup_or_halt(), internal_canfd_filter_setup_or_halt(), and main().
|
nodiscard |
Select ISO 11898-1 vs non-ISO CAN-FD framing.
Writes CFDGFDCFG.NISO – when the bit is clear the controller uses the ISO 11898-1 stuff-count + CRC; when set it falls back to the original Bosch non-ISO framing. See HUM Ch 41 "CFDGFDCFG" pp 2702-2867.
| [in] | enable | true -> ISO mode, false -> non-ISO mode. |
| k_ra8_ok | Mode bit updated. |
enable. Definition at line 761 of file ra8_canfd.c.
References r_canfd_t::CFDGFDCFG, k_ra8_gfdcfg_bit_niso, k_ra8_ok, ra8_canfd(), RA8_CHECK_NULL_PTR, and s_tag.
|
nodiscard |
Enable a CFDC[0].CTR test mode (basic / listen-only / loopback).
Stamps CTME (bit 24) and CTMS[1:0] (bits [26:25]) in CFDC[0].CTR. Per HUM Ch 41 "CFDCnCTR" p 2710 these bits are only writable while the channel is in CH_HALT mode, so the helper:
The internal-loopback mode (k_ra8_ctms_self_test_1, 11b) is the documented way to validate the CANFD IP without a transceiver – the controller routes every TX frame straight to its own RX acceptance filter (HUM Ch 41 "Self-test mode 1 (Internal Loopback mode)" p 2710).
| [in] | channel | Channel index (0..1). |
| [in] | mode | Desired CTMS selector (ra8_ctms_mode_t). |
| k_ra8_ok | Test mode latched, channel back in operation. |
| k_ra8_err_invalid_arg | channel or mode out of range. |
| k_ra8_err_hw_timeout | Halt/operation status bit never asserted. |
channel. channel. mode. Definition at line 731 of file ra8_canfd.c.
References r_canfd_t::CFDC, r_canfd_cfdc_t::CTR, k_ra8_chmdc_halt, k_ra8_chmdc_operation, k_ra8_cnctr_bit_ctms, k_ra8_cnctr_mask_ctme, k_ra8_cnctr_mask_ctms, k_ra8_ctms_self_test_1, k_ra8_err_invalid_arg, k_ra8_ok, priv_ra8_canfd_internal_set_channel_mode(), ra8_canfd(), RA8_CHECK_NULL_PTR, and s_tag.
Referenced by internal_can_demo_enable_internal_loopback(), internal_canfd_demo_enable_internal_loopback(), internal_canfd_filter_loopback(), and main().
|
static |
Definition at line 562 of file ra8_canfd.c.
Referenced by ra8_canfd_attach_handler(), and ra8_canfd_dispatch().
|
static |
Definition at line 561 of file ra8_canfd.c.
Referenced by ra8_canfd_attach_handler(), and ra8_canfd_dispatch().
|
static |
Channel-index -> MSTP id lookup.
CANFD0/1 have separate MSTPC bits (HUM Ch 11.2.8 "MSTPCRC", page 447 chapter map row 11).
Definition at line 112 of file ra8_canfd.c.
Referenced by ra8_canfd_enter_stop(), ra8_canfd_exit_stop(), and ra8_canfd_init().
|
static |
Definition at line 51 of file ra8_canfd.c.