ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_doc_regs.h File Reference

Data Operation Circuit (DOC) register layout for the Renesas RA8D2. More...

#include <stdint.h>
Include dependency graph for ra8_doc_regs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  r_doc_regs_t
 DOC_B register window (HUM Ch 57.2 p 3519-3522). More...

Enumerations

enum  ra8_doc_addr_t : uintptr_t { k_ra8_doc_base_addr = 0x40311000UL }
 Memory-mapped base address for the DOC block. More...
enum  ra8_docr_oms_t : uint8_t {
  k_ra8_doc_mode_compare = 0U ,
  k_ra8_doc_mode_add = 1U ,
  k_ra8_doc_mode_subtract = 2U ,
  k_ra8_doc_mode_reserved = 3U
}
 Operation-mode codes written to DOCR.OMS[1:0] (HUM 57.2.1 p 3519). More...
enum  ra8_docr_bit_t : uint8_t {
  k_ra8_doc_bit_oms0 = 0U ,
  k_ra8_doc_bit_oms1 = 1U ,
  k_ra8_doc_bit_dobw = 3U ,
  k_ra8_doc_bit_dcsel = 4U
}
 DOCR control-bit positions (HUM 57.2.1 p 3519). More...
enum  ra8_docr_mask_t : uint8_t {
  k_ra8_doc_mask_oms = 0x03U ,
  k_ra8_doc_mask_dobw = 0x08U ,
  k_ra8_doc_mask_dcsel = 0x70U
}
 DOCR bit masks (HUM 57.2.1 p 3519). More...
enum  ra8_docr_field_mask_t : uint8_t { k_ra8_doc_mask_dcsel_field = 0x07U }
 Mask for the 3-bit DCSEL sub-field after right-shifting DOCR by k_ra8_doc_bit_dcsel (HUM 57.2.1 p 3519). More...
enum  ra8_docr_dcsel_t : uint8_t {
  k_ra8_doc_dcsel_mismatch = 0U ,
  k_ra8_doc_dcsel_match = 1U ,
  k_ra8_doc_dcsel_lower = 2U ,
  k_ra8_doc_dcsel_upper = 3U ,
  k_ra8_doc_dcsel_inside = 4U ,
  k_ra8_doc_dcsel_outside = 5U
}
 Detection-condition select codes for DOCR.DCSEL[2:0] (HUM 57.2.1 p 3519). More...
enum  ra8_dosr_mask_t : uint8_t { k_ra8_doc_mask_dopcf = 0x01U }
 DOSR status bit masks (HUM 57.2.2 p 3520). More...
enum  ra8_doscr_mask_t : uint8_t { k_ra8_doc_mask_dopcfcl = 0x01U }
 DOSCR status-clear bit masks (HUM 57.2.3 p 3521). More...

Functions

static volatile r_doc_regs_tra8_doc (void)
 Get a pointer to the DOC register block.

Detailed Description

Data Operation Circuit (DOC) register layout for the Renesas RA8D2.

The Data Operation Circuit on the RA8D2 is the DOC_B variant. It supports 16- or 32-bit add, subtract, and compare operations. Operation mode and bit-width are selected via the DOCR.OMS[1:0] and DOCR.DOBW fields:

OMS Mode Action
00 Compare Set DOPCF when DOCR.DCSEL condition matches
01 Add DODSR0 <- DODSR0 + DODIR (overflow flag)
10 Subtract DODSR0 <- DODSR0 - DODIR (borrow flag)
11 reserved -

Register window layout (HUM Ch 57.2, p 3519-3522):

Offset Width Name Function
0x00 8 DOCR Control (OMS, DOBW, DCSEL)
0x04 8 DOSR Status flag (DOPCF)
0x08 8 DOSCR Status clear (DOPCFCL, write-only)
0x0C 32 DODIR Data input (access width per DOBW)
0x10 32 DODSR0 Reference / running result (per DOBW)
0x14 32 DODSR1 Upper window threshold (compare mode)

The block lives at base 0x40311000 (peripheral bus). Layout cross-verified against HUM Ch 57 "Data Operation Circuit (DOC)" p 3518-3522.

Definition in file ra8_doc_regs.h.

Enumeration Type Documentation

◆ ra8_doc_addr_t

enum ra8_doc_addr_t : uintptr_t

Memory-mapped base address for the DOC block.

Enumerator
k_ra8_doc_base_addr 

DOC_B peripheral base, HUM Ch 57.2 p 3519.

Definition at line 50 of file ra8_doc_regs.h.

◆ ra8_docr_bit_t

enum ra8_docr_bit_t : uint8_t

DOCR control-bit positions (HUM 57.2.1 p 3519).

Enumerator
k_ra8_doc_bit_oms0 

Operation mode select bit 0.

k_ra8_doc_bit_oms1 

Operation mode select bit 1.

k_ra8_doc_bit_dobw 

Data operation bit-width select.

k_ra8_doc_bit_dcsel 

Detection condition select bit 0.

Definition at line 69 of file ra8_doc_regs.h.

◆ ra8_docr_dcsel_t

enum ra8_docr_dcsel_t : uint8_t

Detection-condition select codes for DOCR.DCSEL[2:0] (HUM 57.2.1 p 3519).

These are the 3-bit values written into DOCR bits [6:4] (i.e. the pre-shift field value). They are valid only when DOCR.OMS[1:0] == 00 (data comparison mode). Values 6 and 7 are reserved per the HUM.

For window modes (k_ra8_doc_dcsel_inside and k_ra8_doc_dcsel_outside) DODSR0 is the lower threshold and DODSR1 is the upper threshold. The HUM constraint DODSR1 > DODSR0 (strict) must hold; the driver API enforces this at ra8_doc_set_window() time.

Boundary values (DODIR == DODSR0 or DODIR == DODSR1) do NOT satisfy either window condition; the comparisons are strictly less-than / greater-than.

Invariant
Values 6 and 7 must never be written to DOCR.DCSEL.
DODSR1 > DODSR0 whenever inside or outside window mode is active.
// Select inside-window compare: DOCR bits[6:4] = 4
reg->DOCR = (uint8_t)((uint8_t)k_ra8_doc_dcsel_inside
<< (uint8_t)k_ra8_doc_bit_dcsel);
@ k_ra8_doc_bit_dcsel
Detection condition select bit 0.
@ k_ra8_doc_dcsel_inside
Set DOPCF when DODSR0 < DODIR < DODSR1 (inside window).
See also
ra8_doc_set_window() High-level window-configuration API.
ra8_doc_window_compare() Trigger a comparison and read DOPCF.
Since
0.1.0
Enumerator
k_ra8_doc_dcsel_mismatch 

Set DOPCF when DODSR0 != DODIR.

k_ra8_doc_dcsel_match 

Set DOPCF when DODSR0 == DODIR.

k_ra8_doc_dcsel_lower 

Set DOPCF when DODSR0 > DODIR.

k_ra8_doc_dcsel_upper 

Set DOPCF when DODSR0 < DODIR.

k_ra8_doc_dcsel_inside 

Set DOPCF when DODSR0 < DODIR < DODSR1 (inside window).

k_ra8_doc_dcsel_outside 

Set DOPCF when DODIR < DODSR0 or DODSR1 < DODIR (outside).

Definition at line 133 of file ra8_doc_regs.h.

◆ ra8_docr_field_mask_t

enum ra8_docr_field_mask_t : uint8_t

Mask for the 3-bit DCSEL sub-field after right-shifting DOCR by k_ra8_doc_bit_dcsel (HUM 57.2.1 p 3519).

After reading DOCR and shifting right by k_ra8_doc_bit_dcsel (4), AND with this mask to isolate the 3-bit DCSEL value before comparing against ra8_docr_dcsel_t constants.

Since
0.1.0
Enumerator
k_ra8_doc_mask_dcsel_field 

3-bit DCSEL value mask (bits 2:0).

Definition at line 98 of file ra8_doc_regs.h.

◆ ra8_docr_mask_t

enum ra8_docr_mask_t : uint8_t

DOCR bit masks (HUM 57.2.1 p 3519).

Enumerator
k_ra8_doc_mask_oms 

OMS[1:0] field mask.

k_ra8_doc_mask_dobw 

DOBW bit mask.

k_ra8_doc_mask_dcsel 

DCSEL[2:0] field mask in DOCR (bits 6:4).

Definition at line 80 of file ra8_doc_regs.h.

◆ ra8_docr_oms_t

enum ra8_docr_oms_t : uint8_t

Operation-mode codes written to DOCR.OMS[1:0] (HUM 57.2.1 p 3519).

Enumerator
k_ra8_doc_mode_compare 

Data compare: set DOPCF when DCSEL hits.

k_ra8_doc_mode_add 

Add of DODIR into DODSR0.

k_ra8_doc_mode_subtract 

Subtract of DODIR from DODSR0.

k_ra8_doc_mode_reserved 

Reserved, must not be written.

Definition at line 58 of file ra8_doc_regs.h.

◆ ra8_doscr_mask_t

enum ra8_doscr_mask_t : uint8_t

DOSCR status-clear bit masks (HUM 57.2.3 p 3521).

Enumerator
k_ra8_doc_mask_dopcfcl 

Write 1 to clear DOPCF.

Definition at line 154 of file ra8_doc_regs.h.

◆ ra8_dosr_mask_t

enum ra8_dosr_mask_t : uint8_t

DOSR status bit masks (HUM 57.2.2 p 3520).

Enumerator
k_ra8_doc_mask_dopcf 

Data-operation circuit flag.

Definition at line 146 of file ra8_doc_regs.h.

Function Documentation

◆ ra8_doc()

volatile r_doc_regs_t * ra8_doc ( void )
inlinestatic

Get a pointer to the DOC register block.

Returns
Volatile pointer to the DOC register window.

Definition at line 181 of file ra8_doc_regs.h.

References k_ra8_doc_base_addr.

Referenced by internal_ra8_doc_run_16(), internal_ra8_doc_set_mode_16(), ra8_doc_init(), ra8_doc_set_window(), and ra8_doc_window_compare().