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

EK-RA8D2 SPH0690 PDM microphone routing and filter policy. More...

#include <stdint.h>
#include "ra8_board_ek_ra8d2.h"
#include "ra8_pdm.h"
#include "ra8_port_constants.h"
#include "ra8_port_utils.h"
Include dependency graph for ra8_board_ek_ra8d2_pdm.c:

Go to the source code of this file.

Enumerations

enum  ra8_board_pdm_rate_t : uint32_t { k_board_pdm_sample_rate_hz = 16000U }
enum  ra8_board_pdm_width_t : uint8_t { k_board_pdm_valid_bits = 20U }

Functions

ra8_err_t ra8_board_pdm_mic_route (void)
 Route P812/P502 to PDMCLK2/PDMDAT2.
ra8_err_t ra8_board_pdm_mic_get_config (ra8_board_pdm_mic_t microphone, ra8_board_pdm_mic_config_t *out_config)
 Return the validated SPH0690 filter policy for one board microphone.

Variables

static const ra8_port_pin_t s_board_pdm_pin_clk = ((ra8_port_pin_t)(((uint16_t)(k_ra8_port_8) << 8) | (uint16_t)(k_ra8_pin_12)))
static const ra8_port_pin_t s_board_pdm_pin_dat = ((ra8_port_pin_t)(((uint16_t)(k_ra8_port_5) << 8) | (uint16_t)(k_ra8_pin_2)))
static const ra8_pdm_channel_cfg_t s_board_pdm_sph0690

Detailed Description

EK-RA8D2 SPH0690 PDM microphone routing and filter policy.

Encodes the board's microphone clock/data pins and validated PDM filter defaults, then delegates peripheral setup to the PDM HAL.

Tag
[Ring 5 / BSP] {World: S}
Since
0.1.0

Definition in file ra8_board_ek_ra8d2_pdm.c.

Enumeration Type Documentation

◆ ra8_board_pdm_rate_t

enum ra8_board_pdm_rate_t : uint32_t
Enumerator
k_board_pdm_sample_rate_hz 

Decimated SPH0690 sample rate.

Definition at line 23 of file ra8_board_ek_ra8d2_pdm.c.

◆ ra8_board_pdm_width_t

enum ra8_board_pdm_width_t : uint8_t
Enumerator
k_board_pdm_valid_bits 

PDM-IF signed PCM payload width.

Definition at line 27 of file ra8_board_ek_ra8d2_pdm.c.

Function Documentation

◆ ra8_board_pdm_mic_get_config()

ra8_err_t ra8_board_pdm_mic_get_config ( ra8_board_pdm_mic_t microphone,
ra8_board_pdm_mic_config_t * out_config )
nodiscard

Return the validated SPH0690 filter policy for one board microphone.

Parameters
[in]microphoneMIC1 or MIC2 selector.
[out]out_configReceives channel, rate, width, and HAL coefficients.
Returns
Error code.
Return values
k_ra8_okConfiguration returned.
k_ra8_err_null_ptrout_config was nullptr.
k_ra8_err_invalid_argmicrophone is out of range.
Precondition
out_config points to writable storage.
Postcondition
On success out_config describes 16 kHz, 20-bit mono PCM.
Note
Thread-safe; returns immutable board policy by value.
Since
0.1.0

Definition at line 77 of file ra8_board_ek_ra8d2_pdm.c.

References ra8_pdm_channel_cfg_t::edge, k_board_pdm_sample_rate_hz, k_board_pdm_valid_bits, k_ra8_board_pdm_mic1, k_ra8_board_pdm_mic_count, k_ra8_err_invalid_arg, k_ra8_err_null_ptr, k_ra8_ok, k_ra8_pdm_ch2, ra8_board_pdm_mic_config_t::pdm, and s_board_pdm_sph0690.

Referenced by c6_cam_audio_start(), and pdm_demo_pdm_or_halt().

◆ ra8_board_pdm_mic_route()

ra8_err_t ra8_board_pdm_mic_route ( void )
nodiscard

Route P812/P502 to PDMCLK2/PDMDAT2.

Returns
Error code.
Return values
k_ra8_okBoth microphone pins were routed.
k_ra8_err_gpio_conflictA pin is already claimed.
otherPropagated pin-routing error.
Precondition
PDMIFCLK is available from MOCO and ra8_mstp_init has run.
Postcondition
The shared microphone clock/data pins are assigned to PDM-IF.
Note
Not thread-safe; call once during board initialization.
Since
0.1.0

Definition at line 67 of file ra8_board_ek_ra8d2_pdm.c.

References k_ra8_ok, k_ra8_psel_pdm, ra8_pfs_route_peripheral(), s_board_pdm_pin_clk, and s_board_pdm_pin_dat.

Referenced by c6_cam_audio_start(), and pdm_demo_io_or_halt().

Variable Documentation

◆ s_board_pdm_pin_clk

const ra8_port_pin_t s_board_pdm_pin_clk = ((ra8_port_pin_t)(((uint16_t)(k_ra8_port_8) << 8) | (uint16_t)(k_ra8_pin_12)))
static

Definition at line 31 of file ra8_board_ek_ra8d2_pdm.c.

Referenced by ra8_board_pdm_mic_route().

◆ s_board_pdm_pin_dat

const ra8_port_pin_t s_board_pdm_pin_dat = ((ra8_port_pin_t)(((uint16_t)(k_ra8_port_5) << 8) | (uint16_t)(k_ra8_pin_2)))
static

Definition at line 32 of file ra8_board_ek_ra8d2_pdm.c.

Referenced by ra8_board_pdm_mic_route().

◆ s_board_pdm_sph0690

const ra8_pdm_channel_cfg_t s_board_pdm_sph0690
static
Initial value:
= {
.sinc_order = 4U,
.clock_div = 0U,
.sinc_dec = 0x7CU,
.sinc_range = 0x05U,
.data_shift = 0U,
.edge = 0U,
.hpf_shift = 0U,
.cf_shift = 0U,
.lpf_shift = 0U,
.rx_threshold = 4U,
.hpf_s0 = 0x3F61U,
.hpf_k1 = 0x3EC1U,
.hpf_h = {0x4000U, 0xC000U},
.comp_h = {0x1FE8U,
0x0039U,
0x003CU,
0x1E56U,
0x01DCU,
0x06E1U,
0x01DCU,
0x1E56U,
0x003CU,
0x0039U,
0x1FE8U},
.lpf_h0 = 0x0400U,
.lpf_h1 = {0x1FF8U, 0x000AU, 0x1FF0U, 0x0018U, 0x1FDCU, 0x0034U, 0x1FB3U,
0x0076U, 0x1F2EU, 0x0289U, 0x0289U, 0x1F2EU, 0x0076U, 0x1FB3U,
0x0034U, 0x1FDCU, 0x0018U, 0x1FF0U, 0x000AU, 0x1FF8U},
}

Definition at line 35 of file ra8_board_ek_ra8d2_pdm.c.

Referenced by ra8_board_pdm_mic_get_config().