ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_pdg_regs.h
Go to the documentation of this file.
1
56
57#pragma once
58
59#ifdef __cplusplus
60extern "C" {
61#endif
62
63#include <stdint.h>
64
65#include "ra8_attributes.h"
66
78/* HUM Ch 23.2.1 "GTDLYCR : PWM Output Delay Control Register" p 1154 */
79typedef enum : uintptr_t {
80 k_ra8_pdg_base_addr = 0x40324000UL,
81 k_ra8_pdg_ns_base_addr = 0x50324000UL,
83
94/* HUM Ch 23.2 "Register Descriptions" p 1154-1158 */
103
115/* HUM Ch 23.1 "Overview" p 1152 */
124
136/* HUM Ch 23.2.1 "GTDLYCR : PWM Output Delay Control Register" p 1154 */
142
147/* HUM Ch 23.2.1 "GTDLYCR" p 1154 */
148typedef enum : uint16_t {
150 (uint16_t)(1U << (uint16_t)k_ra8_pdg_gtdlycr_bit_dllen),
152 (uint16_t)(1U << (uint16_t)k_ra8_pdg_gtdlycr_bit_dlyrst),
154 (uint16_t)(0x3U << (uint16_t)
157
167/* HUM Ch 23.2.1 "GTDLYCR" p 1154 */
173
186/* HUM Ch 23.2.2 "GTDLYCR2" p 1155 */
191
196/* HUM Ch 23.2.2 "GTDLYCR2" p 1155 */
197typedef enum : uint16_t {
199 (uint16_t)(0xFU << (uint16_t)
202 (uint16_t)(0xFU << (uint16_t)
205
218/* HUM Ch 23.2.3 "GTDLYRnA" p 1156 */
225
234/* HUM Ch 23.2.1 "GTDLYCR" p 1154 */
243
256typedef struct {
257 volatile uint16_t A;
258 volatile uint16_t B;
260
277/* HUM Ch 23.2 "Register Descriptions" p 1154-1158 */
286
301static inline volatile r_pdg_regs_t* ra8_pdg(void)
302{
303 return (volatile r_pdg_regs_t*)k_ra8_pdg_base_addr;
304}
305
306#ifdef __cplusplus
307}
308#endif
Annotation-attribute framework macros for ra8-firmware.
#define RA8_HW_REGISTER_ACCESS
Mark an MMIO accessor function (returns volatile register pointer).
ra8_pdg_gtdlycr_bit_t
Bit positions inside GTDLYCR (HUM Ch 23.2.1 p 1154).
@ k_ra8_pdg_gtdlycr_bit_dllen
DLL Operation Enable.
@ k_ra8_pdg_gtdlycr_shift_frange
FRANGE[1:0] starts at bit 8.
@ k_ra8_pdg_gtdlycr_bit_dlyrst
PDG circuit reset.
ra8_pdg_count_t
Channel count and per-channel structural sizes.
@ k_ra8_pdg_off_gtdlyr0
First GTDLYR offset (rises).
@ k_ra8_pdg_off_after_cr2
End of GTDLYCR2 (start of reserved gap).
@ k_ra8_pdg_channel_count
4 GPT channels mapped to PDG (0..3).
@ k_ra8_pdg_slot_count
4 ch * 2 pin * 2 edge = 16 delay slots.
@ k_ra8_pdg_edge_count
Rising + falling delay slots.
@ k_ra8_pdg_pin_count
GTIOCnA + GTIOCnB.
ra8_pdg_dly_field_t
Layout of the GTDLYRnA / GTDLYRnB / GTDLYFnA / GTDLYFnB delay registers (HUM Ch 23....
@ k_ra8_pdg_dly_div_high
Divider in the 155..300 MHz band.
@ k_ra8_pdg_dly_max
Maximum legal delay code.
@ k_ra8_pdg_dly_div_low
Divider in the 80..160 MHz band.
@ k_ra8_pdg_dly_mask
DLY[6:0] occupies the low 7 bits.
ra8_pdg_frange_t
GTDLYCR.FRANGE encoding (HUM Ch 23.2.1 p 1154).
@ k_ra8_pdg_frange_80_160_mhz
80..160 MHz, 1/128 step.
@ k_ra8_pdg_frange_invalid
0b11 – "Setting prohibited" sentinel.
@ k_ra8_pdg_frange_155_300_mhz
155..300 MHz, 1/64 step.
ra8_pdg_gtdlycr_mask_t
Masks for GTDLYCR fields.
@ k_ra8_pdg_gtdlycr_mask_dllen
RA8 pdg gtdlycr mask dllen.
@ k_ra8_pdg_gtdlycr_mask_dlyrst
RA8 pdg gtdlycr mask dlyrst.
@ k_ra8_pdg_gtdlycr_mask_frange
RA8 pdg gtdlycr mask frange.
ra8_pdg_gtdlycr2_shift_t
Bit positions for GTDLYCR2 fields (HUM Ch 23.2.2 p 1155).
@ k_ra8_pdg_gtdlycr2_shift_dlyen
DLYEN field starts at bit 8.
@ k_ra8_pdg_gtdlycr2_shift_dlybs
DLYBS field starts at bit 0.
ra8_pdg_addr_t
Memory-mapped base addresses for the PDG block.
@ k_ra8_pdg_base_addr
PDG Secure alias.
@ k_ra8_pdg_ns_base_addr
PDG Non-Secure alias.
ra8_pdg_freq_band_t
Per-band absolute frequency boundaries (Hz) for FRANGE.
@ k_ra8_pdg_freq_high_min_hz
155 MHz.
@ k_ra8_pdg_freq_low_max_hz
160 MHz.
@ k_ra8_pdg_freq_high_max_hz
300 MHz.
@ k_ra8_pdg_freq_overlap_bot
Bottom of overlap zone.
@ k_ra8_pdg_freq_low_min_hz
80 MHz.
@ k_ra8_pdg_freq_overlap_top
Top of the overlap zone.
ra8_pdg_off_t
Byte offsets of PDG registers (HUM Ch 23.2.1..23.2.6).
@ k_ra8_pdg_off_gtdlyf0b
Ch0 GTIOCnB fall.
@ k_ra8_pdg_off_gtdlyr0a
Ch0 GTIOCnA rise.
@ k_ra8_pdg_off_gtdlyr0b
Ch0 GTIOCnB rise.
@ k_ra8_pdg_off_gtdlyf0a
Ch0 GTIOCnA fall.
@ k_ra8_pdg_off_gtdlycr
Delay control reg.
@ k_ra8_pdg_off_gtdlycr2
Bypass / enable reg.
ra8_pdg_gtdlycr2_mask_t
Masks for GTDLYCR2 fields.
@ k_ra8_pdg_gtdlycr2_mask_dlybs
RA8 pdg gtdlycr2 mask dlybs.
@ k_ra8_pdg_gtdlycr2_mask_dlyen
RA8 pdg gtdlycr2 mask dlyen.
static volatile r_pdg_regs_t * ra8_pdg(void)
Pointer to the PDG block.
Two consecutive 16-bit delay cells that match the PDG layout.
volatile uint16_t B
+2 GTIOCnB delay code (DLY[6:0]).
volatile uint16_t A
+0 GTIOCnA delay code (DLY[6:0]).
PDG block register window mapped at k_ra8_pdg_base_addr.
volatile uint16_t GTDLYCR
+0x000 HUM 23.2.1 p 1154
r_pdg_dly_pair_t GTDLYR[k_ra8_pdg_channel_count]
+0x018..0x027 rise.
r_pdg_dly_pair_t GTDLYF[k_ra8_pdg_channel_count]
+0x028..0x037 fall.
volatile uint8_t reserved_004[k_ra8_pdg_off_gtdlyr0 - k_ra8_pdg_off_after_cr2]
+0x004..0x017 reserved.
volatile uint16_t GTDLYCR2
+0x002 HUM 23.2.2 p 1155