ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_nsc_io.c
Go to the documentation of this file.
1
14
15#include "ra8_nsc_io.h"
16
17#include <stdint.h>
18
19#include "ra8_acmphs.h"
20#include "ra8_adc.h"
21#include "ra8_check.h"
22#include "ra8_crc.h"
23#include "ra8_dac_b.h"
24#include "ra8_err.h"
25#include "ra8_eth.h"
26#include "ra8_glcdc.h"
27#include "ra8_gpt.h"
28#include "ra8_nsc_veneer.h"
29#include "ra8_pdm.h"
30
31static const char* s_tag = "NSCIO";
32
59{
60 RA8_CHECK_NULL_PTR(cfg, s_tag, "gpt_init: cfg");
61 RA8_NSC_CHECK_NS_RANGE_R(cfg, sizeof(*cfg));
62 return ra8_gpt_init(channel, cfg);
63}
64
90RA8_NSC_VENEER ra8_err_t ra8_nsc_gpt_read(uint8_t channel, uint32_t* out)
91{
92 RA8_CHECK_NULL_PTR(out, s_tag, "gpt_read: out");
93 RA8_NSC_CHECK_NS_RANGE_RW(out, sizeof(*out));
94 return ra8_gpt_read(channel, out);
95}
96
123
150RA8_NSC_VENEER ra8_err_t ra8_nsc_adc_read_channel(uint8_t channel, uint16_t* out_raw)
151{
152 RA8_CHECK_NULL_PTR(out_raw, s_tag, "adc_read: out_raw");
153 RA8_NSC_CHECK_NS_RANGE_RW(out_raw, sizeof(*out_raw));
154 return ra8_adc_read_channel(channel, out_raw);
155}
156
181
205RA8_NSC_VENEER ra8_err_t ra8_nsc_dac_b_write(uint8_t channel, uint16_t value)
206{
207 return ra8_dac_b_write(channel, value);
208}
209
234
261{
262 RA8_CHECK_NULL_PTR(out, s_tag, "acmphs_read: out");
263 RA8_NSC_CHECK_NS_RANGE_RW(out, sizeof(*out));
264 return ra8_acmphs_read_output(channel, out);
265}
266
293
322RA8_NSC_VENEER ra8_err_t ra8_nsc_crc_compute(const uint8_t* data, uint32_t len, uint32_t* out_crc)
323{
324 RA8_CHECK_NULL_PTR(data, s_tag, "crc_compute: data");
325 RA8_CHECK_NULL_PTR(out_crc, s_tag, "crc_compute: out_crc");
326 RA8_NSC_CHECK_NS_RANGE_R(data, len);
327 RA8_NSC_CHECK_NS_RANGE_RW(out_crc, sizeof(*out_crc));
328 return ra8_crc_compute(data, len, out_crc);
329}
330
356{
357 RA8_CHECK_NULL_PTR(cfg, s_tag, "glcdc_init: cfg");
358 RA8_NSC_CHECK_NS_RANGE_R(cfg, sizeof(*cfg));
359 return ra8_glcdc_init(cfg);
360}
361
386
Full-featured High-Speed Analog Comparator (ACMPHS) driver.
ra8_err_t ra8_acmphs_read_output(uint8_t channel, ra8_level_t *out)
Read the live output of a channel.
Definition ra8_acmphs.c:127
ra8_err_t ra8_acmphs_init(void)
Legacy init – reset every channel to its power-on state.
Definition ra8_acmphs.c:101
Full-featured ADC_B driver.
ra8_err_t ra8_adc_read_channel(uint8_t channel, uint16_t *out_raw)
Blocking single-channel sample.
Definition adc.c:351
ra8_err_t ra8_adc_init(void)
Legacy init – 14-bit right-aligned, software trigger.
Definition adc.c:323
static const char * s_tag
Logging / check tag.
Definition ra8_app.c:17
#define RA8_NSC_VENEER
Mark a TrustZone Secure-to-Non-Secure entry-point veneer.
Validation and Error-Checking Macros for ra8-firmware.
#define RA8_CHECK_NULL_PTR(ptr, tag, message)
Reject nullptr pointer, returning k_ra8_err_null_ptr.
Definition ra8_check.h:243
CRC hardware calculator driver header.
ra8_err_t ra8_crc_init(ra8_crc_poly_t poly)
Configure the CRC block for a given polynomial.
Definition ra8_crc.c:158
ra8_err_t ra8_crc_compute(const uint8_t *data, uint32_t len, uint32_t *out_crc)
Compute a CRC over a byte buffer.
Definition ra8_crc.c:190
ra8_crc_poly_t
Polynomial selection values written to CRCCR0.GPS[2:0].
Full-featured 12-bit DAC_B driver.
ra8_err_t ra8_dac_b_init(void)
Legacy init – zero every DAC_B register + enable MSTP.
Definition ra8_dac_b.c:153
ra8_err_t ra8_dac_b_write(uint8_t channel, uint16_t value)
Programme a DAC channel with a 12-bit code.
Definition ra8_dac_b.c:172
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
Ethernet Switch Module (ESWM) + frame TX/RX driver.
ra8_err_t ra8_eth_init(void)
Initialise the ESWM block (MSTP enable + reset regs).
Definition ra8_eth.c:486
Graphics LCD Controller driver (two-layer with alpha blending).
ra8_err_t ra8_glcdc_init(const ra8_glcdc_config_t *cfg)
Initialise GLCDC with the EK-RA8D2 1024x600 timings and the supplied graphics layer 1 framebuffer.
Definition ra8_glcdc.c:662
Full-featured General PWM Timer (GPT) driver.
ra8_err_t ra8_gpt_init(uint8_t channel, const ra8_gpt_cfg_t *cfg)
Initialise a GPT channel with a full config descriptor.
Definition ra8_gpt.c:329
ra8_err_t ra8_gpt_read(uint8_t channel, uint32_t *out)
Read the current counter value.
Definition ra8_gpt.c:314
ra8_err_t ra8_nsc_dac_b_write(uint8_t channel, uint16_t value)
NSC veneer: write a 12-bit value to a DAC-B channel.
Definition ra8_nsc_io.c:205
ra8_err_t ra8_nsc_acmphs_init(void)
NSC veneer: bring up the high-speed analog comparator block.
Definition ra8_nsc_io.c:230
ra8_err_t ra8_nsc_acmphs_read_output(uint8_t channel, ra8_level_t *out)
NSC veneer: read a comparator output level.
Definition ra8_nsc_io.c:260
ra8_err_t ra8_nsc_glcdc_init(const ra8_glcdc_config_t *cfg)
NSC veneer: bring up the graphics LCD controller.
Definition ra8_nsc_io.c:355
ra8_err_t ra8_nsc_pdm_init(void)
NSC veneer: bring up the PDM microphone interface.
Definition ra8_nsc_io.c:382
ra8_err_t ra8_nsc_crc_compute(const uint8_t *data, uint32_t len, uint32_t *out_crc)
NSC veneer: compute CRC over a buffer.
Definition ra8_nsc_io.c:322
ra8_err_t ra8_nsc_gpt_read(uint8_t channel, uint32_t *out)
NSC veneer: read the current GPT counter value.
Definition ra8_nsc_io.c:90
ra8_err_t ra8_nsc_gpt_init(uint8_t channel, const ra8_gpt_cfg_t *cfg)
NSC veneer: bring up a GPT channel.
Definition ra8_nsc_io.c:58
ra8_err_t ra8_nsc_dac_b_init(void)
NSC veneer: bring up the DAC-B unit.
Definition ra8_nsc_io.c:177
ra8_err_t ra8_nsc_eth_init(void)
NSC veneer: bring up the ethernet switch module.
Definition ra8_nsc_io.c:407
ra8_err_t ra8_nsc_adc_init(void)
NSC veneer: bring up the ADC.
Definition ra8_nsc_io.c:119
ra8_err_t ra8_nsc_adc_read_channel(uint8_t channel, uint16_t *out_raw)
NSC veneer: read one ADC channel sample.
Definition ra8_nsc_io.c:150
ra8_err_t ra8_nsc_crc_init(ra8_crc_poly_t poly)
NSC veneer: bring up the CRC unit with a polynomial.
Definition ra8_nsc_io.c:289
NSC veneers for the I/O drivers.
Macros for declaring Non-Secure Callable veneer functions.
#define RA8_NSC_CHECK_NS_RANGE_R(ptr, len)
RA8 NSC CHECK NS RANGE r.
#define RA8_NSC_CHECK_NS_RANGE_RW(ptr, len)
RA8 NSC CHECK NS RANGE RW.
Pulse Density Modulation Interface (PDM-IF) capture driver.
ra8_err_t ra8_pdm_init(void)
Release the PDM-IF module stop and reset its common bank.
Definition ra8_pdm.c:211
ra8_level_t
Digital output / input level.
Minimal GLCDC configuration for a single-layer panel.
Definition ra8_glcdc.h:55
Configuration descriptor for ra8_gpt_init.
Definition ra8_gpt.h:83