AudioCodec_NAU88U10YG/Inc/nau88u10yg_enums.h

173 lines
5.6 KiB
C

//
// Created by ilya on 09.01.24.
//
#ifndef NAU88U10YG_ENUMS_H
#define NAU88U10YG_ENUMS_H
//// POWER MANAGEMENT REGISTERS
// IMPEDANCE SELECTION
typedef enum {
NAU88U10YG_PowerManagement1_REFIMP_Disable = 0b00,
NAU88U10YG_PowerManagement1_REFIMP_80KOm = 0b01,
NAU88U10YG_PowerManagement1_REFIMP_300KOm = 0b10,
NAU88U10YG_PowerManagement1_REFIMP_3KOm = 0b11,
}eNAU88U10YG_PowerManagement1_REFIMP;
//// AUDIO CONTROL REGISTERS (REG_AUDIO_INTERFACE)
// Word Length Selection
typedef enum {
NAU88U10YG_AudioInterface_WLEN_16Bits = 0b00,
NAU88U10YG_AudioInterface_WLEN_20Bits = 0b01,
NAU88U10YG_AudioInterface_WLEN_24Bits = 0b10,
NAU88U10YG_AudioInterface_WLEN_32Bits = 0b11,
}eNAU88U10YG_AudioInterface_WLEN;
// Audio Data Format Select
typedef enum {
NAU88U10YG_AudioInterface_AIFMT_RightJustified = 0b00,
NAU88U10YG_AudioInterface_AIFMT_LeftJustified = 0b01,
NAU88U10YG_AudioInterface_AIFMT_I2S = 0b10,
NAU88U10YG_AudioInterface_AIFMT_PCM_A = 0b11,
}eNAU88U10YG_AudioInterface_AIFMT;
// Companding Mode 8-bit word enable
typedef enum {
NAU88U10YG_CompandingCMB8_NormalOperation = 0b0,
NAU88U10YG_CompandingCMB8_8bit_Operation = 0b1,
}eNAU88U10YG_CompandingCMB8;
// DAC Companding Selection
typedef enum {
NAU88U10YG_CompandingDACCM_Disabled = 0b00,
NAU88U10YG_CompandingDACCM_uLaw = 0b10,
NAU88U10YG_CompandingDACCM_ALaw = 0b11,
}eNAU88U10YG_CompandingDACCM;
// ADC Companding Selection
typedef enum {
NAU88U10YG_CompandingADCCM_Disabled = 0b00,
NAU88U10YG_CompandingADCCM_uLaw = 0b10,
NAU88U10YG_CompandingADCCM_ALaw = 0b11,
}eNAU88U10YG_CompandingADCCM;
//// Clock Control Register
// Master Clock Selection
typedef enum {
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div1 = 0b000,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div1_5 = 0b001,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div2 = 0b010,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div3 = 0b011,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div4 = 0b100,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div6 = 0b101,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div8 = 0b110,
NAU88U10YG_ClockControl1_MCLKSEL_Mode_div12 = 0b111,
}eNAU88U10YG_ClockControl1_MCLKSEL;
// Bit Clock Select
typedef enum {
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div1 = 0b000, //BCLK=MCLK
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div2 = 0b001, //BCLK=MCLK/2
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div4 = 0b010,
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div8 = 0b011,
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div16 = 0b100,
NAU88U10YG_ClockControl1_BCLKSEL_Mode_div32 = 0b101,
}eNAU88U10YG_ClockControl1_BCLKSEL;
// Source of Internal Clock
typedef enum {
NAU88U10YG_ClockControl1_CLKM_PLL_Bypassed = 0b0,
NAU88U10YG_ClockControl1_CLKM_PLL_Output = 0b1
}eNAU88U10YG_ClockControl1_CLKM;
// FRAME and BCLK
typedef enum {
NAU88U10YG_ClockControl1_CLKIOEN_Mode_Slave = 0b0,
NAU88U10YG_ClockControl1_CLKIOEN_Mode_Master = 0b1
}eNAU88U10YG_ClockControl1_CLKIOEN;
/// Audio Sample Rate Control Register (Clock Control 2)
// Sample Rate Selection
typedef enum {
NAU88U10YG_ClockControl2_SMPLR_Mode_48KHz = 0b000,
NAU88U10YG_ClockControl2_SMPLR_Mode_32KHz = 0b001,
NAU88U10YG_ClockControl2_SMPLR_Mode_24KHz = 0b010,
NAU88U10YG_ClockControl2_SMPLR_Mode_16KHz = 0b011,
NAU88U10YG_ClockControl2_SMPLR_Mode_12KHz = 0b100,
NAU88U10YG_ClockControl2_SMPLR_Mode_8KHz = 0b101,
}eNAU88U10YG_ClockControl2_SMPLR;
// Slow Clock Enable
typedef enum {
NAU88U10YG_ClockControl2_MCLK_SCLKEN_MCLK = 0b0,
NAU88U10YG_ClockControl2_MCLK_SCLKEN_PLL_Output = 0b1, // Period 2^21 * MCLK
}eNAU88U10YG_ClockControl2_MCLK_SCLKEN;
//// DAC Control Register (REG_DAC_CTRL)
// Over Sample Rate
typedef enum {
NAU88U10YG_DAC_CTRL_DACOS_64x = 0b0,
NAU88U10YG_DAC_CTRL_DACOS_128x = 0b1,
}eNAU88U10YG_DAC_CTRL_DACOS;
// Polarity Invert
typedef enum {
NAU88U10YG_DAC_CTRL_DACPL_Normal = 0b0,
eNAU88U10YG_DAC_CTRL_DACPL_DAC_Output_invert = 0b1
}eNAU88U10YG_DAC_CTRL_DACPL;
// De-emphasis
typedef enum {
NAU88U10YG_DAC_CTRL_DEEMP_No_deEmphasis = 0b00,
NAU88U10YG_DAC_CTRL_DEEMP_SMPLR_33KHz = 0b01,
NAU88U10YG_DAC_CTRL_DEEMP_SMPLR_44_1KHz = 0b10,
NAU88U10YG_DAC_CTRL_DEEMP_SMPLR_48KHz = 0b11,
}eNAU88U10YG_DAC_CTRL_DEEMP;
//// DAC Gain Control Register (REG_DAC_VOLUME)
// DAC Gain (DACGAIN)
// DAC Gain Range -127dB to 0dB @ 0.5 increments
// 0x0 - Digital Mute
//// ADC Control Register (REG_ADC_CTRL)
// Audio or Application Mode
typedef enum {
NAU88U10YG_ADC_CTRL_HPFAM_Audio = 0b0, // 1st order, fc ~ 3.7 Hz
NAU88U10YG_ADC_CTRL_HPFAM_Application = 0b1 //2 nd order, fc = HPF
}eNAU88U10YG_ADC_CTRL_HPFAM;
// Over Sample Rate
typedef enum {
NAU88U10YG_ADC_CTRL_ADCOS_64x = 0b0, // Lowest power
NAU88U10YG_ADC_CTRL_ADCOS_128x = 0b1 // best SNR
}eNAU88U10YG_ADC_CTRL_ADCOS;
// High Pass Filter
//HPF 12.3.7 ADC Control Register page 67
// ADC Gain Control Register
//0x0 - unused
// ADC Gain Range -127dB to 0dB @ 0.5 increments
/// INPUT, OUTPUT & MIXER CONTROL
/// Output Register
// MONO Output Boost Stage
typedef enum {
NAU88U10YG_OUTPUT_CTRL_MOUTBST_x1_0VREF_GainBoost = 0b00, //(1.0 x VREF) Gain Boost
NAU88U10YG_OUTPUT_CTRL_MOUTBST_x1_5VREF_GainBoost = 0b01, //(1.5 x VREF) Gain Boost
}eNAU88U10YG_OUTPUT_CTRL_MOUTBST;
// Speaker Output Boost Stage
typedef enum {
NAU88U10YG_OUTPUT_CTRL_SPKBST_x1_0VREF_GainBoost = 0b00, //(1.0 x VREF) Gain Boost
NAU88U10YG_OUTPUT_CTRL_SPKBST_x1_5VREF_GainBoost = 0b01, //(1.5 x VREF) Gain Boost
}eNAU88U10YG_OUTPUT_CTRL_SPKBST;
typedef enum {
NAU88U10YG_OUTPUT_CTRL_AOUTIMP_1kOm = 0b00, //~1kΩ
NAU88U10YG_OUTPUT_CTRL_AOUTIMP_30kOm = 0b01, //~30 kΩ
}eNAU88U10YG_OUTPUT_CTRL_AOUTIMP;
#endif //NAU88U10YG_ENUMS_H