WM8904 example for SAM.
Copyright (c) 2015-2018 Microchip Technology Inc. and its subsidiaries.
#include <asf.h>
Macros | |
#define | BITS_BY_SLOT (16) |
Bits per slot. More... | |
#define | MICROBLOCK_LEN 0x1000 |
Micro-block length for single transfer. More... | |
#define | SAMPLE_RATE (48000) |
Wav feature. More... | |
#define | SLOT_BY_FRAME (1) |
Wav slot per frame. More... | |
#define | STRING_EOL "\r" |
#define | STRING_HEADER |
#define | TOTAL_BUFFERS 4 |
XDMA Descriptor. More... | |
#define | XDMA_CH_SSC_RX 0 |
XDMA channel used in this example. More... | |
#define | XDMA_CH_SSC_TX 1 |
Functions | |
static void | configure_codec (void) |
static void | configure_console (void) |
Configure UART console. More... | |
static void | configure_ssc (void) |
static void | configure_xdma (void) |
int | main (void) |
Variables | |
static uint16_t | AudioBuffer [TOTAL_BUFFERS *MICROBLOCK_LEN *(BITS_BY_SLOT/8)] |
static lld_view1 | linklist_read [TOTAL_BUFFERS] |
static lld_view1 | linklist_write [TOTAL_BUFFERS] |
#define BITS_BY_SLOT (16) |
Bits per slot.
Referenced by configure_ssc().
#define MICROBLOCK_LEN 0x1000 |
Micro-block length for single transfer.
Referenced by configure_xdma().
#define SAMPLE_RATE (48000) |
Wav feature.
#define SLOT_BY_FRAME (1) |
Wav slot per frame.
Referenced by configure_ssc().
#define STRING_EOL "\r" |
#define STRING_HEADER |
Referenced by main().
#define TOTAL_BUFFERS 4 |
XDMA Descriptor.
Referenced by configure_xdma().
#define XDMA_CH_SSC_RX 0 |
XDMA channel used in this example.
Referenced by configure_xdma(), and main().
#define XDMA_CH_SSC_TX 1 |
Referenced by configure_xdma(), and main().
|
static |
References delay_ms, WM8904_ADCL_ENA, WM8904_ADCR_ENA, WM8904_AIF_FMT_I2S, WM8904_ANALOGUE_HP_0, WM8904_ANALOGUE_LEFT_INPUT_0, WM8904_ANALOGUE_OUT12_ZC, WM8904_ANALOGUE_OUT1_LEFT, WM8904_ANALOGUE_OUT1_RIGHT, WM8904_ANALOGUE_RIGHT_INPUT_0, WM8904_AUDIO_INTERFACE_1, WM8904_AUDIO_INTERFACE_2, WM8904_AUDIO_INTERFACE_3, WM8904_BCLK_DIR, WM8904_BCLK_DIV, WM8904_BIAS_CONTROL_0, WM8904_BIAS_ENA, WM8904_CHARGE_PUMP_0, WM8904_CLASS_W_0, WM8904_CLK_DSP_ENA, WM8904_CLK_SYS_ENA, WM8904_CLK_SYS_RATE, WM8904_CLOCK_RATES_0, WM8904_CLOCK_RATES_1, WM8904_CLOCK_RATES_2, WM8904_CP_DYN_PWR, WM8904_CP_ENA, WM8904_DAC_DIGITAL_1, WM8904_DACL_ENA, WM8904_DACR_ENA, WM8904_DC_SERVO_0, WM8904_DC_SERVO_1, WM8904_DCS_ENA_CHAN_0, WM8904_DCS_ENA_CHAN_1, WM8904_DCS_ENA_CHAN_2, WM8904_DCS_ENA_CHAN_3, WM8904_DCS_TRIG_STARTUP_0, WM8904_DCS_TRIG_STARTUP_1, WM8904_DCS_TRIG_STARTUP_2, WM8904_DCS_TRIG_STARTUP_3, WM8904_DEEMPH, WM8904_FLL_CONTROL_1, WM8904_FLL_CONTROL_2, WM8904_FLL_CONTROL_3, WM8904_FLL_CONTROL_4, WM8904_FLL_ENA, WM8904_FLL_FRACN_ENA, WM8904_FLL_FRATIO, WM8904_FLL_K, WM8904_FLL_N, WM8904_FLL_OUTDIV, WM8904_HPL_ENA, WM8904_HPL_ENA_DLY, WM8904_HPL_ENA_OUTP, WM8904_HPL_PGA_ENA, WM8904_HPL_RMV_SHORT, WM8904_HPOUT_VU, WM8904_HPOUTL_VOL, WM8904_HPOUTR_VOL, WM8904_HPR_ENA, WM8904_HPR_ENA_DLY, WM8904_HPR_ENA_OUTP, WM8904_HPR_PGA_ENA, WM8904_HPR_RMV_SHORT, WM8904_INL_ENA, WM8904_INR_ENA, WM8904_ISEL_HP_BIAS, WM8904_LIN_VOL, WM8904_LRCLK_DIR, WM8904_LRCLK_RATE, WM8904_POWER_MANAGEMENT_0, WM8904_POWER_MANAGEMENT_2, WM8904_POWER_MANAGEMENT_6, wm8904_read_register(), WM8904_RIN_VOL, WM8904_SAMPLE_RATE, WM8904_SW_RESET_AND_ID, WM8904_SYSCLK_SRC, WM8904_VMID_BUF_ENA, WM8904_VMID_CONTROL_0, WM8904_VMID_ENA, WM8904_VMID_RES_FAST, WM8904_VMID_RES_NORMAL, and wm8904_write_register().
Referenced by main().
|
static |
Configure UART console.
References uart_rs232_options::baudrate, CONF_UART, CONF_UART_BAUDRATE, CONF_UART_CHAR_LENGTH, CONF_UART_PARITY, CONF_UART_STOP_BITS, CONSOLE_UART_ID, stdio_serial_init(), and sysclk_enable_peripheral_clock().
Referenced by main().
|
static |
References BITS_BY_SLOT, pmc_enable_periph_clk(), SLOT_BY_FRAME, ssc_disable_interrupt(), ssc_disable_rx(), ssc_disable_tx(), ssc_reset(), ssc_set_receiver(), ssc_set_transmitter(), SSC_TCMR_START_TF_EDGE, clock_opt_t::ul_ckg, clock_opt_t::ul_cki, clock_opt_t::ul_cko, clock_opt_t::ul_cks, data_frame_opt_t::ul_datlen, data_frame_opt_t::ul_datnb, data_frame_opt_t::ul_fsedge, data_frame_opt_t::ul_fslen, data_frame_opt_t::ul_fslen_ext, data_frame_opt_t::ul_fsos, data_frame_opt_t::ul_msbf, clock_opt_t::ul_period, clock_opt_t::ul_start_sel, and clock_opt_t::ul_sttdly.
Referenced by main().
|
static |
References AudioBuffer, xdmac_channel_config_t::mbr_cfg, lld_view1::mbr_da, lld_view1::mbr_nda, lld_view1::mbr_sa, lld_view1::mbr_ubc, MICROBLOCK_LEN, pmc_enable_periph_clk(), TOTAL_BUFFERS, XDMA_CH_SSC_RX, XDMA_CH_SSC_TX, xdmac_channel_enable_interrupt(), xdmac_channel_set_descriptor_addr(), xdmac_channel_set_descriptor_control(), xdmac_configure_transfer(), xdmac_enable_interrupt(), XDMAC_UBC_NDE_FETCH_EN, XDMAC_UBC_NSEN_UPDATED, and XDMAC_UBC_NVIEW_NDV1.
Referenced by main().
int main | ( | void | ) |
References board_init(), configure_codec(), configure_console(), configure_ssc(), configure_xdma(), delay_ms, pmc_enable_pck(), PMC_PCK_2, pmc_pck_set_prescaler(), pmc_pck_set_source(), ssc_enable_rx(), ssc_enable_tx(), STRING_HEADER, sysclk_init(), TWIHS_SUCCESS, wm8904_twi_init(), XDMA_CH_SSC_RX, XDMA_CH_SSC_TX, and xdmac_channel_enable().
|
static |
Referenced by configure_xdma().
|
static |
|
static |