418 {0, 0x0}, {1, 0x1}, {2, 0x2}, {3, 0x3}, {4, 0x4}};
421 {0, 0x1}, {1, 0x2}, {2, 0x3}, {3, 0x4}};
432 {48000, 2,
true, {12288000, 19200000, 24000000}},
433 {16000, 1,
false, {4096000, 6400000, 8000000}},
434 {8000, 0,
false, {2048000, 3200000, 4000000}},
435 {44100, 2,
true, {11289600, 17640000, 22050000}},
436 {64000, 3,
false, {16384000, 25600000, 32000000}},
437 {96000, 3,
true, {24576000, 38400000, 48000000}},
438 {12000, 0,
true, {3072000, 4800000, 6000000}},
439 {24000, 1,
true, {6144000, 9600000, 12000000}},
440 {32000, 2,
false, {8192000, 12800000, 16000000}}};
446 bool begin(uint32_t fs, uint8_t bits_per_sample, uint16_t ratio) {
447 AD_LOGI(
"[NAU8325] beginDynamic() starting...");
449 AD_LOGI(
" ratio = %u Hz", ratio);
450 AD_LOGI(
" bits = %u", bits_per_sample);
452 if (bits_per_sample != 16 && bits_per_sample != 24 && bits_per_sample != 32) {
453 AD_LOGI(
"[NAU8325] Unsupported bit width: %u\n", bits_per_sample);
458 uint32_t mclk = fs * ratio;
462 if (!setSysClock(mclk))
return false;
464 if (!configureAudio(fs, mclk, bits_per_sample))
return false;
485 AD_LOGI(
"[NAU8325] beginDynamic() complete - sound should play");
490 bool begin(uint32_t fs, uint8_t bits) {
491 return begin(fs, bits, 256);
496 return begin(44100, 16, 256);
511 writeRegister(0x0000, 0x0001);
513 writeRegister(0x0000, 0x0000);
572 uint16_t value = ((left & 0xFF) << 8) | (right & 0xFF);
582 uint16_t set_ratio = 0;
583 bool alc_enable =
true;
584 bool clock_detection =
true;
585 bool clock_det_data =
true;
586 uint32_t dac_vref_microvolt = 2880000;
587 uint32_t vref_impedance_ohms = 125000;
590 void enableDAPMBlocks() {
602 bool applySampleRateClocks(
const SRateAttr* srate,
int n1_sel,
603 int mclk_mult_sel,
int n2_sel) {
604 if (!srate || n1_sel < 0 || n1_sel >= 3 || n2_sel < 0 || n2_sel >= 5) {
605 AD_LOGI(
"[NAU8325] Invalid N1/N2 divider index.");
609 AD_LOGI(
"--- Debugging clock dividers ---");
612 AD_LOGI(
"mult_sel=%d", mclk_mult_sel);
618 uint16_t clk_ctrl_val = 0;
621 if (mclk_mult_sel >= 0 && mclk_mult_sel <= 3)
624 clk_ctrl_val |= 0x1000;
629 switch (mclk_mult_sel) {
649 int getMclkRatioAndN2Index(
const SRateAttr* srate,
int mclk_hz,
int& n2_sel_out) {
652 for (
int i = 0; i < 5; i++) {
654 int mclk_src = mclk_hz >> div;
677 const SRateAttr* getSRateAttr(
int fs) {
688 bool chooseClockSource(
int fs,
int mclk,
const SRateAttr*& srate,
689 int& n1_sel,
int& mult_sel,
int& n2_sel) {
690 if (fs <= 0 || mclk <= 0) {
691 AD_LOGI(
"[NAU8325] Invalid fs or mclk.");
695 srate = getSRateAttr(fs);
697 AD_LOGI(
"[NAU8325] Unsupported fs: %d\n", fs);
701 int ratio = getMclkRatioAndN2Index(srate, mclk, n2_sel);
705 AD_LOGI(
"[NAU8325] Direct match: fs=%d, mclk=%d → N2=%d (Ratio=%d)\n", fs,
706 mclk, n2_sel, ratio);
711 int best_n1 = -1, best_mult = -1, best_n2 = -1;
713 for (
int i = 0; i < 3; ++i) {
714 for (
int j = 0; j < 4; ++j) {
716 int r = getMclkRatioAndN2Index(srate, m, n2_sel);
729 mult_sel = best_mult;
733 "[NAU8325] Matched via N1/N3 combo: fs=%d, mclk=%d → N1=%d, "
734 "N3(mult)=%d, N2=%d\n",
735 fs, mclk, n1_sel, mult_sel, n2_sel);
736 AD_LOGI(
"[NAU8325] chooseClockSource(): fs=%d, mclk=%d\n", fs, mclk);
741 AD_LOGI(
"[NAU8325] Failed to match MCLK %d Hz with fs %d Hz\n", mclk, fs);
746 bool configureClocks(
int fs,
int mclk) {
747 const SRateAttr* srate =
nullptr;
748 int n1_sel = 0, mult_sel = -1, n2_sel = 0;
750 if (!chooseClockSource(fs, mclk, srate, n1_sel, mult_sel, n2_sel)) {
751 AD_LOGI(
"[NAU8325] Failed to choose clock source for fs=%d, mclk=%d\n",
756 if (!applySampleRateClocks(srate, n1_sel, mult_sel, n2_sel)) {
757 AD_LOGI(
"[NAU8325] Failed to apply sample rate clocks.");
760 AD_LOGI(
"[NAU8325] configureClocks(): fs=%u, mclk=%u\n", fs, mclk);
766 const OsrAttr* getCurrentOSR() {
782 bool configureAudio(uint32_t fs, uint32_t mclk, uint8_t bits_per_sample) {
786 if (!configureClocks(fs, mclk)) {
793 const OsrAttr* osr = getCurrentOSR();
794 if (!osr || osr->osr == 0 || (fs * osr->osr >
CLK_DA_AD_MAX)) {
795 AD_LOGI(
"[NAU8325] Invalid OSR or fs × OSR exceeds max.");
802 uint16_t val_len = 0;
803 switch (bits_per_sample) {
817 AD_LOGI(
"[NAU8325] Invalid bit width: %u\n", bits_per_sample);
823 AD_LOGI(
"[NAU8325] configureAudio(): fs=%u, mclk=%u, bits=%u\n", fs, mclk,
831 uint16_t ctrl1_val = 0;
857 return writeRegisterBits(
864 bool setSysClock(uint32_t freq) {
866 AD_LOGI(
"[NAU8325] Invalid MCLK: %u Hz (allowed: %u - %u)\n", freq,
872 AD_LOGI(
"[NAU8325] MCLK set to %u Hz\n", mclk);
877 void initRegisters() {
904 uint16_t vref_val = 0xFFFF;
905 if (dac_vref_microvolt == 1800000)
907 else if (dac_vref_microvolt == 2700000)
909 else if (dac_vref_microvolt == 2880000)
911 else if (dac_vref_microvolt == 3060000)
914 if (vref_val != 0xFFFF) {
917 AD_LOGI(
"[NAU8325] Invalid DAC Vref: %lu uV\n", dac_vref_microvolt);
925 uint16_t vref_imp_val = 0xFFFF;
926 if (vref_impedance_ohms == 0)
928 else if (vref_impedance_ohms == 25000)
930 else if (vref_impedance_ohms == 125000)
932 else if (vref_impedance_ohms == 2500)
935 if (vref_imp_val != 0xFFFF) {
939 AD_LOGI(
"[NAU8325] Invalid VMID impedance: %lu ohms\n",
940 vref_impedance_ohms);
976 bool writeRegisterBits(uint16_t reg, uint16_t mask, uint16_t value) {
978 if (!readRegister(reg, current))
return false;
979 uint16_t new_value = (current & ~mask) | (value & mask);
980 return writeRegister(reg, new_value);
984 bool writeRegister(uint16_t reg, uint16_t val) {
985 AD_LOGI(
"[WRITE] reg=0x%04X val=0x%04X\n", reg, val);
987 uint8_t regBuf[2] = {(uint8_t)((reg >> 8) & 0xFF), (uint8_t)(reg & 0xFF)};
988 uint8_t dataBuf[2] = {(uint8_t)((val >> 8) & 0xFF), (uint8_t)(val & 0xFF)};
990 return i2c_bus_write_bytes(this->i2c, i2c_addr, regBuf,
sizeof(regBuf),
995 bool readRegister(uint16_t reg, uint16_t& value) {
996 uint8_t regBuf[2] = {(uint8_t)((reg >> 8) & 0xFF), (uint8_t)(reg & 0xFF)};
997 uint8_t dataBuf[2] = {0, 0};
999 if (i2c_bus_read_bytes(this->i2c, i2c_addr, regBuf,
sizeof(regBuf), dataBuf,
1004 value = ((uint16_t)dataBuf[0] << 8) | dataBuf[1];
#define RESULT_OK
Definition DriverCommon.h:74
#define AD_LOGI(...)
Definition Logger.h:13
Header-only driver for the Nuvoton NAU8325 Class-D amplifier with DAC.
Definition NAU8325.h:63
static constexpr uint32_t NAU8325_CLKPWRUP_SFT
Definition NAU8325.h:322
static constexpr uint16_t NAU8325_PWR_INT_MASK
Definition NAU8325.h:150
static constexpr uint16_t NAU8325_DEM_DITH_EN
Definition NAU8325.h:156
static constexpr uint16_t NAU8325_POWER_DOWN_L_MASK
Definition NAU8325.h:368
static constexpr uint16_t NAU8325_SHORTL_MASK
Definition NAU8325.h:272
static constexpr uint16_t NAU8325_L_CHANNEL_Vol_MASK
Definition NAU8325.h:265
static const SRateAttr target_srate_table[]
Definition NAU8325.h:431
static constexpr uint16_t NAU8325_SHUTDWNDRVR_R_MASK
Definition NAU8325.h:257
static const OsrAttr osr_dac_sel[]
Definition NAU8325.h:423
static constexpr uint16_t NAU8325_IRQ_OUTPUT_EN
Definition NAU8325.h:170
static constexpr uint16_t NAU8325_DACTEST_SFT
Definition NAU8325.h:362
static constexpr uint16_t NAU8325_R12_MUTE_CTRL
Definition NAU8325.h:82
static constexpr uint16_t NAU8325_ALC_ATK_MASK
Definition NAU8325.h:298
static constexpr uint16_t NAU8325_VMIDEN_MASK
Definition NAU8325.h:355
static constexpr uint16_t NAU8325_ARP_DWN_INT_SFT
Definition NAU8325.h:130
static constexpr uint16_t NAU8325_ALC_ATK_SFT
Definition NAU8325.h:296
static constexpr uint16_t NAU8325_DAC_RIGHT_CH_EN_SFT
Definition NAU8325.h:124
static constexpr uint16_t NAU8325_POWER_DOWN_L_SFT
Definition NAU8325.h:367
static constexpr uint16_t NAU8325_I2S_DF_PCM_AB
Definition NAU8325.h:216
static constexpr uint16_t NAU8325_R04_ENA_CTRL
Definition NAU8325.h:70
static constexpr uint16_t NAU8325_VMDFSTENB_MASK
Definition NAU8325.h:338
static constexpr uint16_t NAU8325_R29_DAC_CTRL1
Definition NAU8325.h:87
static constexpr uint32_t NAU8325_MCLK8XEN_SFT
Definition NAU8325.h:387
static constexpr uint16_t NAU8325_PWRUP_DFT
Definition NAU8325.h:326
static constexpr uint16_t NAU8325_I2S_DL_16
Definition NAU8325.h:211
static constexpr uint32_t NAU8325_CLK_DAC_SRC_MASK
Definition NAU8325.h:112
static constexpr uint32_t NAU8325_MCLK_SRC_MASK
Definition NAU8325.h:120
static constexpr uint16_t NAU8325_CLASSD_FINE_SFT
Definition NAU8325.h:373
static constexpr uint16_t NAU8325_TDM_EN
Definition NAU8325.h:180
static constexpr uint16_t NAU8325_OCP_OTP_SHTDWN_INT_MASK
Definition NAU8325.h:142
static constexpr uint16_t NAU8325_GAINZI3_MASK
Definition NAU8325.h:158
static constexpr uint32_t NAU8325_CLK_MUL_SRC_SFT
Definition NAU8325.h:114
static constexpr uint16_t NAU8325_R_CHANNEL_Vol_SFT
Definition NAU8325.h:262
static constexpr uint16_t NAU8325_I2S_DF_LEFT
Definition NAU8325.h:214
static constexpr uint32_t NAU8325_ALC_MINGAIN_MAX
Definition NAU8325.h:289
static constexpr uint16_t NAU8325_R1F_DEBUG_READ2
Definition NAU8325.h:85
static constexpr uint16_t NAU8325_LPF_IN1_EN_SFT
Definition NAU8325.h:308
static constexpr uint16_t NAU8325_R06_INT_CLR_STATUS
Definition NAU8325.h:72
void powerOff()
Powers off the analog and DAC blocks after soft-muting the output.
Definition NAU8325.h:544
static constexpr uint32_t NAU8325_REG_DATA_LEN
Definition NAU8325.h:110
static constexpr uint16_t NAU8325_IRQ_PL_ACT_HIGH
Definition NAU8325.h:161
static constexpr uint16_t NAU8325_I2C_ADDR
Definition NAU8325.h:65
static constexpr uint16_t NAU8325_R01_SOFTWARE_RST
Definition NAU8325.h:67
static constexpr uint16_t NAU8325_IRQ_PIN_DEBUG_SFT
Definition NAU8325.h:172
static constexpr uint16_t NAU8325_MUTEB_MASK
Definition NAU8325.h:259
static constexpr uint32_t NAU8325_REG_ADDR_LEN
Definition NAU8325.h:109
static constexpr uint32_t MASTER_CLK_MIN
Definition NAU8325.h:410
static constexpr uint16_t NAU8325_CLASSD_OCPN_MASK
Definition NAU8325.h:378
static constexpr uint16_t NAU8325_DAC_VOLUME_L_EN
Definition NAU8325.h:249
static constexpr uint32_t NAU8325_CLKPWRUP_DIS
Definition NAU8325.h:323
static constexpr uint16_t NAU8325_ANALOG_CTRL6_SPKL_EN
Definition NAU8325.h:396
static constexpr uint16_t NAU8325_POWER_DOWN_R_MASK
Definition NAU8325.h:371
static constexpr uint16_t NAU8325_ALC_HLD_MASK
Definition NAU8325.h:301
static constexpr uint16_t NAU8325_DEM_DITH_SFT
Definition NAU8325.h:155
static constexpr uint16_t NAU8325_PCM_TS_SFT
Definition NAU8325.h:217
static constexpr uint16_t NAU8325_ARP_DWN_INT_MASK
Definition NAU8325.h:131
static constexpr uint32_t NAU8325_DACCLKEN_R_MASK
Definition NAU8325.h:344
static constexpr uint16_t NAU8325_CLIP_INT_DIS_SFT
Definition NAU8325.h:144
static constexpr uint16_t NAU8325_LVD_INT_DIS
Definition NAU8325.h:148
static constexpr uint16_t NAU8325_IRQ_PE_SFT
Definition NAU8325.h:165
static constexpr uint32_t NAU8325_DAC_VOL_MAX
Definition NAU8325.h:254
bool begin(uint32_t fs, uint8_t bits)
Initializes the codec with sample rate and bit depth; uses default MCLK/FS ratio of 256.
Definition NAU8325.h:490
static constexpr uint16_t NAU8325_REG_ALT_SRATE_EN
Definition NAU8325.h:331
static constexpr uint16_t NAU8325_TEMP_COMP_ACT2_MASK
Definition NAU8325.h:307
static constexpr uint16_t NAU8325_PDM_LCH_EDGE__MASK
Definition NAU8325.h:176
static constexpr uint16_t NAU8325_BIASEN_SFT
Definition NAU8325.h:353
static constexpr uint16_t NAU8325_IRQOUT_SEL_MASK
Definition NAU8325.h:153
static constexpr uint16_t NAU8325_R2E_ALC_CTRL3
Definition NAU8325.h:91
void resetChip()
Performs a hardware reset by toggling the reset register.
Definition NAU8325.h:510
static constexpr uint16_t NAU8325_DAC_HPF_APP_MASK
Definition NAU8325.h:230
static constexpr uint16_t NAU8325_ANA_MUTE_SFT
Definition NAU8325.h:242
static constexpr uint16_t NAU8325_R2C_ALC_CTRL1
Definition NAU8325.h:89
static constexpr uint32_t NAU8325_ALC_MINGAIN_MASK
Definition NAU8325.h:291
static constexpr uint16_t NAU8325_REG_SRATE_MASK
Definition NAU8325.h:328
static constexpr uint32_t NAU8325_MCLK8XEN_EN
Definition NAU8325.h:388
static constexpr uint16_t NAU8325_ANTI_CLIP_SFT
Definition NAU8325.h:400
static constexpr uint16_t NAU8325_TDM_SFT
Definition NAU8325.h:179
static constexpr uint16_t NAU8325_DACCM_CTL_MASK
Definition NAU8325.h:191
static constexpr uint16_t NAU8325_R50_MIXER_CTRL
Definition NAU8325.h:96
static constexpr uint16_t NAU8325_GAINZI3_SFT
Definition NAU8325.h:157
static constexpr uint32_t NAU8325_DACCLKEN_R_SFT
Definition NAU8325.h:343
static constexpr uint16_t NAU8325_I2S_DF_RIGTH
Definition NAU8325.h:213
static constexpr uint16_t NAU8325_DAC_LEFT_SFT
Definition NAU8325.h:184
static constexpr uint16_t NAU8325_R02_DEVICE_ID
Definition NAU8325.h:68
static constexpr uint16_t NAU8325_BIASEN_MASK
Definition NAU8325.h:354
static constexpr uint32_t NAU8325_CLK_DAC_SRC_SFT
Definition NAU8325.h:111
static constexpr uint16_t NAU8325_ANALOG_CTRL1_CLASSD_EN
Definition NAU8325.h:357
static constexpr uint16_t NAU8325_R0F_L_TIME_SLOT
Definition NAU8325.h:79
static const SrcAttr mclk_n1_div[]
Definition NAU8325.h:415
static constexpr uint16_t NAU8325_DAC_HPF_FCUT_MASK
Definition NAU8325.h:233
static constexpr uint16_t NAU8325_CLIP_INT_MASK
Definition NAU8325.h:134
static constexpr uint16_t NAU8325_PGAL_GAIN_MASK
Definition NAU8325.h:266
static constexpr uint32_t NAU8325_DACCLKEN_SFT
Definition NAU8325.h:348
static constexpr uint16_t NAU8325_DAC_RIGHT_SFT
Definition NAU8325.h:187
static constexpr uint16_t NAU8325_AUTO_MUTE_DIS
Definition NAU8325.h:246
static const RegDefault reg_defaults[]
Definition NAU8325.h:413
static constexpr uint16_t NAU8325_DACTEST_MASK
Definition NAU8325.h:363
static constexpr uint16_t NAU8325_R64_ANALOG_CONTROL_4
Definition NAU8325.h:102
static constexpr uint16_t NAU8325_TMDET_MASK
Definition NAU8325.h:273
static constexpr uint16_t NAU8325_ANALOG_CTRL1_VMID_EN
Definition NAU8325.h:356
static constexpr uint16_t NAU8325_DAC_OVERSAMPLE_256
Definition NAU8325.h:277
static constexpr uint16_t NAU8325_R09_IRQOUT
Definition NAU8325.h:73
static constexpr uint32_t NAU8325_REG_MAX
Definition NAU8325.h:107
static constexpr uint16_t NAU8325_R49_TEST_STATUS
Definition NAU8325.h:94
static constexpr uint16_t NAU8325_IRQ_DS_SFT
Definition NAU8325.h:167
static constexpr uint16_t NAU8325_CMB8_0_MASK
Definition NAU8325.h:194
static constexpr uint32_t NAU8325_ALC_LVL_SFT
Definition NAU8325.h:302
static constexpr uint16_t NAU8325_PCM_OFFSET_CTRL_EN
Definition NAU8325.h:182
void setVolume(uint8_t left, uint8_t right)
Sets the DAC digital volume for left and right channels (0x00–0xFE, 0xFF = mute)
Definition NAU8325.h:571
static constexpr uint16_t NAU8325_I2S_DACPSHS0_SFT
Definition NAU8325.h:203
static constexpr uint16_t NAU8325_VDDSPK_LIM_MASK
Definition NAU8325.h:395
NAU8325(i2c_bus_handle_t wire)
Constructs the driver and binds it to the given I2C bus handle.
Definition NAU8325.h:443
static constexpr uint32_t NAU8325_MCLK_RANGE_EN
Definition NAU8325.h:385
static constexpr uint16_t NAU8325_DACEN_SFT
Definition NAU8325.h:351
static constexpr uint16_t NAU8325_LPF_IN1_TC_SFT
Definition NAU8325.h:311
static constexpr uint32_t NAU8325_ALC_ATK_MAX
Definition NAU8325.h:297
static constexpr uint16_t NAU8325_I2S_BP_MASK
Definition NAU8325.h:199
void powerOn()
Powers on the analog and DAC blocks and unmutes the output.
Definition NAU8325.h:525
static constexpr uint16_t NAU8325_IRQ_DS_HIGH
Definition NAU8325.h:168
static constexpr uint16_t NAU8325_BIAS_VMID_SEL_SFT
Definition NAU8325.h:334
static constexpr uint16_t NAU8325_VDDSPK_LIM_SFT
Definition NAU8325.h:392
static constexpr uint32_t CLK_DA_AD_MAX
Definition NAU8325.h:409
static constexpr uint16_t NAU8325_R0D_I2S_PCM_CTRL1
Definition NAU8325.h:77
bool begin()
Initializes the codec with default settings (44100 Hz, 16-bit, ratio 256)
Definition NAU8325.h:495
static constexpr uint16_t NAU8325_I2S_DL_MASK
Definition NAU8325.h:207
static constexpr uint16_t NAU8325_BIAS_VMID_SEL_MASK
Definition NAU8325.h:335
static constexpr uint16_t NAU8325_ENA_CTRL_DAC_EN_MASK
Definition NAU8325.h:129
static constexpr uint16_t NAU8325_I2S_BP_INV
Definition NAU8325.h:200
static constexpr uint16_t NAU8325_CLASSD_FINE_MASK
Definition NAU8325.h:374
static constexpr uint16_t NAU8325_PWMMOD_MASK
Definition NAU8325.h:361
static constexpr uint16_t NAU8325_I2S_BP_SFT
Definition NAU8325.h:198
static constexpr uint16_t NAU8325_R2A_DAC_CTRL2
Definition NAU8325.h:88
static constexpr uint32_t NAU8325_CLK_DAC_DELAY_EN
Definition NAU8325.h:404
static constexpr uint32_t NAU8325_ALC_LVL_MAX
Definition NAU8325.h:303
static constexpr uint16_t NAU8325_ENA_CTRL_DACR_EN
Definition NAU8325.h:127
static constexpr uint16_t NAU8325_DACEN_R_SFT
Definition NAU8325.h:346
static constexpr uint16_t NAU8325_IRQ_PL_SFT
Definition NAU8325.h:160
static constexpr uint32_t NAU8325_ALC_MINGAIN_SFT
Definition NAU8325.h:290
static constexpr uint16_t NAU8325_OCP_OTP_SHTDWN_INT_SFT
Definition NAU8325.h:141
static constexpr uint32_t NAU8325_MCLK_RANGE_SFT
Definition NAU8325.h:384
static constexpr uint16_t NAU8325_R2D_ALC_CTRL2
Definition NAU8325.h:90
static constexpr uint16_t NAU8325_DAC_OVERSAMPLE_MASK
Definition NAU8325.h:275
static constexpr uint16_t NAU8325_R4A_ANALOG_READ
Definition NAU8325.h:95
static constexpr uint16_t NAU8325_R00_HARDWARE_RST
Definition NAU8325.h:66
static constexpr uint16_t NAU8325_INT_STATUS_MASK
Definition NAU8325.h:151
static constexpr uint16_t NAU8325_SHORT_FS_DET_DIS
Definition NAU8325.h:223
static constexpr uint16_t NAU8325_R22_DEBUG_READ3
Definition NAU8325.h:86
static constexpr uint16_t NAU8325_R13_DAC_VOLUME
Definition NAU8325.h:83
static constexpr uint16_t NAU8325_LVD_INT_MASK
Definition NAU8325.h:137
static constexpr uint16_t NAU8325_ALC_DCY_MASK
Definition NAU8325.h:295
static constexpr uint16_t NAU8325_ANALOG_CTRL6_SPKR_EN
Definition NAU8325.h:397
void setOversampling(OversamplingMode mode)
Sets the DAC oversampling rate (OSR_32, OSR_64, OSR_128, or OSR_256)
Definition NAU8325.h:566
static constexpr uint16_t NAU8325_DACEN_R_MASK
Definition NAU8325.h:347
static constexpr uint16_t NAU8325_PDM_MODE_EN
Definition NAU8325.h:178
static constexpr uint16_t NAU8325_REG_ALT_SRATE_SFT
Definition NAU8325.h:330
static constexpr uint32_t NAU8325_ALC_HLD_MAX
Definition NAU8325.h:300
static constexpr uint16_t NAU8325_IRQOUT_SEL_SEF
Definition NAU8325.h:152
static constexpr uint16_t NAU8325_UA_OFFSET_MASK
Definition NAU8325.h:196
static constexpr uint16_t NAU8325_LPF_IN2_EN
Definition NAU8325.h:315
static constexpr uint32_t NAU8325_R40_CLK_DET_CTRL
Definition NAU8325.h:93
static constexpr uint16_t NAU8325_DAC_ZC_SFT
Definition NAU8325.h:237
static constexpr uint16_t NAU8325_I2S_DL_SFT
Definition NAU8325.h:206
static constexpr uint16_t NAU8325_TSLOT_L0_MASK
Definition NAU8325.h:225
static constexpr uint16_t NAU8325_CLIP_INT_DIS
Definition NAU8325.h:145
static constexpr uint16_t NAU8325_VBATLOW_SFT
Definition NAU8325.h:390
static constexpr uint16_t NAU8325_PCM8BIT0_MASK
Definition NAU8325.h:220
static const SrcAttr mclk_n3_mult[]
Definition NAU8325.h:420
static const SrcAttr mclk_n2_div[]
Definition NAU8325.h:417
static constexpr uint16_t NAU8325_R05_INTERRUPT_CTRL
Definition NAU8325.h:71
static constexpr uint16_t NAU8325_SHORTR_MASK
Definition NAU8325.h:271
static constexpr uint16_t NAU8325_I2S_DF_I2S
Definition NAU8325.h:215
static constexpr uint32_t NAU8325_MCLK_SEL_MASK
Definition NAU8325.h:118
static constexpr uint16_t NAU8325_LPF_IN1_TC_MASK
Definition NAU8325.h:312
static constexpr uint16_t NAU8325_R61_ANALOG_CONTROL_1
Definition NAU8325.h:99
static constexpr uint32_t NAU8325_DACCLKEN_MASK
Definition NAU8325.h:349
static constexpr uint16_t NAU8325_R62_ANALOG_CONTROL_2
Definition NAU8325.h:100
static constexpr uint16_t NAU8325_R0B_PDM_CTRL
Definition NAU8325.h:75
static constexpr uint16_t NAU8325_IRQ_PS_SFT
Definition NAU8325.h:163
static constexpr uint16_t NAU8325_IRQ_PS_UP
Definition NAU8325.h:164
static constexpr uint16_t NAU8325_R60_BIAS_ADJ
Definition NAU8325.h:98
static constexpr uint32_t NAU8325_ALC_MAXGAIN_MAX
Definition NAU8325.h:286
static constexpr uint16_t NAU8325_DACREFCAP_SFT
Definition NAU8325.h:364
static constexpr uint16_t NAU8325_IRQ_PE_EN
Definition NAU8325.h:166
static constexpr uint16_t NAU8325_DAC_HPF_SFT
Definition NAU8325.h:227
static constexpr uint16_t NAU8325_PDM_LCH_EDGE_SFT
Definition NAU8325.h:175
static constexpr uint16_t NAU8325_TALARM_MASK
Definition NAU8325.h:270
static constexpr uint16_t NAU8325_NAU8325_DAC_LEFT_MASK
Definition NAU8325.h:185
static constexpr uint32_t NAU8325_REG_DIV_MAX
Definition NAU8325.h:333
static constexpr uint16_t NAU8325_SDB_MASK
Definition NAU8325.h:269
static constexpr uint16_t NAU8325_R11_HPF_CTRL
Definition NAU8325.h:81
static constexpr uint16_t NAU8325_PWR_INT_DIS
Definition NAU8325.h:139
static constexpr uint16_t NAU8325_LVD_INT_SFT
Definition NAU8325.h:136
static constexpr uint16_t NAU8325_PCM_OFFSET_CTRL_SFT
Definition NAU8325.h:181
static constexpr uint16_t NAU8325_IRQ_PIN_DEBUG_EN
Definition NAU8325.h:173
static constexpr uint16_t NAU8325_SCAN_MODE_MASK
Definition NAU8325.h:268
static constexpr uint16_t NAU8325_DACVREFSEL_SFT
Definition NAU8325.h:406
static constexpr uint16_t NAU8325_ALC_MAXGAIN_MASK
Definition NAU8325.h:287
static constexpr uint16_t NAU8325_DAC_HPF_EN
Definition NAU8325.h:228
static constexpr uint16_t NAU8325_CLASSD_OCPP_SFT
Definition NAU8325.h:380
static constexpr uint16_t NAU8325_LPF_IN2_TC_SFT
Definition NAU8325.h:317
static constexpr uint32_t NAU8325_DAC_HPF_FCUT_SFT
Definition NAU8325.h:232
static constexpr uint16_t NAU8325_SHORT_FS_DET_SFT
Definition NAU8325.h:222
static constexpr uint16_t NAU8325_DACVREFSEL_MASK
Definition NAU8325.h:407
static constexpr uint16_t NAU8325_DAC_LEFT_CH_EN
Definition NAU8325.h:122
static constexpr uint32_t NAU8325_MCLK_SEL_SFT
Definition NAU8325.h:117
static constexpr uint16_t NAU8325_ALC_HLD_SFT
Definition NAU8325.h:299
static constexpr uint16_t NAU8325_ANA_MUTE_MASK
Definition NAU8325.h:243
static constexpr uint16_t NAU8325_PDOSCB_MASK
Definition NAU8325.h:260
static constexpr uint16_t NAU8325_APWRUP_SFT
Definition NAU8325.h:320
static constexpr uint16_t NAU8325_ALC_MAXGAIN_SFT
Definition NAU8325.h:285
static constexpr uint16_t NAU8325_CLIP_INT_SFT
Definition NAU8325.h:133
static constexpr uint16_t NAU8325_MIPS500_MASK
Definition NAU8325.h:256
static constexpr uint16_t NAU8325_DAC_RIGHT_CH_EN
Definition NAU8325.h:125
static constexpr uint16_t NAU8325_I2S_DACPSHS0_MASK
Definition NAU8325.h:204
static constexpr uint16_t NAU8325_VMDFSTENB_SFT
Definition NAU8325.h:337
static constexpr uint16_t NAU8325_R0C_TDM_CTRL
Definition NAU8325.h:76
static constexpr uint16_t NAU8325_DAC_OVERSAMPLE_128
Definition NAU8325.h:279
static constexpr uint16_t NAU8325_UNMUTE_CTL_MASK
Definition NAU8325.h:240
static constexpr uint16_t NAU8325_I2S_DL_24
Definition NAU8325.h:209
static constexpr uint16_t NAU8325_OSR100_MASK
Definition NAU8325.h:255
static constexpr uint16_t NAU8325_LVD_INT_DIS_SFT
Definition NAU8325.h:147
static constexpr uint16_t NAU8325_DAC_ZC_EN
Definition NAU8325.h:238
void softMute(bool enable)
Enables or disables soft mute on the DAC output.
Definition NAU8325.h:518
static constexpr uint16_t NAU8325_R10_R_TIME_SLOT
Definition NAU8325.h:80
static constexpr uint16_t NAU8325_R69_CLIP_CTRL
Definition NAU8325.h:105
static constexpr uint16_t NAU8325_IRQ_OUTPUT_SFT
Definition NAU8325.h:169
static constexpr uint16_t NAU8325_CLASSDEN_SFT
Definition NAU8325.h:340
static constexpr uint16_t NAU8325_LPF_IN1_EN
Definition NAU8325.h:309
static constexpr uint16_t NAU8325_DAC_VOLUME_R_EN
Definition NAU8325.h:252
static constexpr uint16_t NAU8325_UNMUTE_CTL_SFT
Definition NAU8325.h:239
static constexpr uint16_t NAU8325_PWR_INT_DIS_SFT
Definition NAU8325.h:138
static constexpr uint16_t NAU8325_DAC_LEFT_CH_EN_SFT
Definition NAU8325.h:121
static constexpr uint16_t NAU8325_I2S_DF_MASK
Definition NAU8325.h:212
static constexpr uint16_t NAU8325_R_CHANNEL_Vol_MASK
Definition NAU8325.h:263
static constexpr uint16_t NAU8325_ANTI_CLIP_EN
Definition NAU8325.h:401
static constexpr uint16_t NAU8325_R1D_DEBUG_READ1
Definition NAU8325.h:84
static constexpr uint16_t NAU8325_LPF_IN2_TC_MASK
Definition NAU8325.h:318
static constexpr uint16_t NAU8325_PWMMOD_SFT
Definition NAU8325.h:360
static constexpr uint16_t NAU8325_ENA_CTRL_DACL_EN
Definition NAU8325.h:128
static constexpr uint16_t NAU8325_I2S_PCMB_SFT
Definition NAU8325.h:201
static constexpr uint16_t NAU8325_I2S_PCMB_EN
Definition NAU8325.h:202
static constexpr uint32_t NAU8325_CLK_MUL_SRC_MASK
Definition NAU8325.h:115
static constexpr uint16_t NAU8325_PCM_TS_EN
Definition NAU8325.h:218
static constexpr uint16_t NAU8325_DACREFCAP_MASK
Definition NAU8325.h:365
static constexpr uint32_t NAU8325_DAC_OVERSAMPLE_SFT
Definition NAU8325.h:274
static constexpr uint16_t NAU8325_PCM8BIT0_SFT
Definition NAU8325.h:219
static constexpr uint32_t NAU8325_MCLK4XEN_EN
Definition NAU8325.h:389
static constexpr uint16_t NAU8325_I2S_DL_20
Definition NAU8325.h:210
static constexpr uint16_t NAU8325_SOFT_MUTE_SFT
Definition NAU8325.h:235
bool begin(uint32_t fs, uint8_t bits_per_sample, uint16_t ratio)
Initializes the codec with explicit sample rate, bit depth, and MCLK/FS ratio.
Definition NAU8325.h:446
static constexpr uint16_t NAU8325_DACCM_CTL_SFT
Definition NAU8325.h:190
static constexpr uint16_t NAU8325_CMB8_0_SFT
Definition NAU8325.h:193
static constexpr uint32_t NAU8325_R03_CLK_CTRL
Definition NAU8325.h:69
static constexpr uint16_t NAU8325_GAINZI2_MASK
Definition NAU8325.h:159
static constexpr uint16_t NAU8325_POWER_DOWN_R_SFT
Definition NAU8325.h:370
static constexpr uint16_t NAU8325_I2S_DL_32
Definition NAU8325.h:208
static constexpr uint16_t NAU8325_ALC_EN
Definition NAU8325.h:306
static constexpr uint16_t NAU8325_APWRUP_EN
Definition NAU8325.h:321
static constexpr uint16_t NAU8325_PWRUP_DFT_SFT
Definition NAU8325.h:325
static constexpr uint32_t MASTER_CLK_MAX
Definition NAU8325.h:411
static constexpr uint16_t NAU8325_POWERDOWN1B_D_MASK
Definition NAU8325.h:261
uint16_t readDeviceId()
Reads and returns the device ID register; returns 0xFFFF on failure.
Definition NAU8325.h:500
static constexpr uint16_t NAU8325_ALC_DCY_SFT
Definition NAU8325.h:293
static constexpr uint16_t NAU8325_AUTO_MUTE_SFT
Definition NAU8325.h:245
static constexpr uint16_t NAU8325_CLASSD_SLEWN_MASK
Definition NAU8325.h:383
static constexpr uint16_t NAU8325_R73_RDAC
Definition NAU8325.h:106
static constexpr uint16_t NAU8325_ALC_EN_SFT
Definition NAU8325.h:305
static constexpr uint16_t NAU8325_SOFT_MUTE
Definition NAU8325.h:236
static constexpr uint16_t NAU8325_R65_ANALOG_CONTROL_5
Definition NAU8325.h:103
static constexpr uint16_t NAU8325_VMIDEN_SFT
Definition NAU8325.h:108
static constexpr uint16_t NAU8325_CLASSD_OCPN_SFT
Definition NAU8325.h:377
static constexpr uint16_t NAU8325_CLASSD_OCPP_MASK
Definition NAU8325.h:381
static constexpr uint32_t NAU8325_DAC_VOLUME_R_SFT
Definition NAU8325.h:251
static constexpr uint16_t NAU8325_R0E_I2S_PCM_CTRL2
Definition NAU8325.h:78
static constexpr uint16_t NAU8325_DAC_OVERSAMPLE_32
Definition NAU8325.h:283
static constexpr uint16_t NAU8325_R55_MISC_CTRL
Definition NAU8325.h:97
static constexpr uint16_t NAU8325_UA_OFFSET_SFT
Definition NAU8325.h:195
static constexpr uint32_t NAU8325_ALC_DCY_MAX
Definition NAU8325.h:294
static constexpr uint16_t NAU8325_ANALOG_CTRL6_EN_MASK
Definition NAU8325.h:398
static constexpr uint16_t NAU8325_CLASSD_COARSE_GAIN_MASK
Definition NAU8325.h:376
void setPowerUpDefault(bool enable)
Enables or disables the power-up default flag in the clock detection register.
Definition NAU8325.h:560
static constexpr uint16_t NAU8325_DACEN_MASK
Definition NAU8325.h:352
static constexpr uint16_t NAU8325_SHUTDWNDRVR_L_MASK
Definition NAU8325.h:258
static constexpr uint16_t NAU8325_R2F_ALC_CTRL4
Definition NAU8325.h:92
static constexpr uint16_t NAU8325_REG_SRATE_SFT
Definition NAU8325.h:327
static constexpr uint16_t NAU8325_R0A_IO_CTRL
Definition NAU8325.h:74
static constexpr uint32_t NAU8325_CLK_DAC_DELAY_SFT
Definition NAU8325.h:403
static constexpr uint16_t NAU8325_VBATLOW_MASK
Definition NAU8325.h:391
static constexpr uint16_t NAU8325_CLASSDEN_MASK
Definition NAU8325.h:341
static constexpr uint16_t NAU8325_ALC_LVL_MASK
Definition NAU8325.h:304
static constexpr uint16_t NAU8325_DAC_RIGHT_MASK
Definition NAU8325.h:188
static constexpr uint16_t NAU8325_DAC_HPF_APP_SFT
Definition NAU8325.h:229
static constexpr uint16_t NAU8325_TSLOT_R0_MASK
Definition NAU8325.h:226
static constexpr uint16_t NAU8325_VDDSPK_LIM_EN
Definition NAU8325.h:393
static constexpr uint16_t NAU8325_DAC_OVERSAMPLE_64
Definition NAU8325.h:281
static constexpr uint16_t NAU8325_LPF_IN2_EN_SFT
Definition NAU8325.h:314
static constexpr uint16_t NAU8325_DAC_VOLUME_L_SFT
Definition NAU8325.h:248
static constexpr uint16_t NAU8325_CLIP_MASK
Definition NAU8325.h:267
static constexpr uint16_t NAU8325_R63_ANALOG_CONTROL_3
Definition NAU8325.h:101
static constexpr uint16_t NAU8325_ANALOG_CTRL1_EN_MASK
Definition NAU8325.h:358
static constexpr uint16_t NAU8325_R66_ANALOG_CONTROL_6
Definition NAU8325.h:104
Namespace for audio driver components.
Definition AudioBoard.h:5
AudioI2SFormat
Definition NAU8325.h:32
@ DSP_A
Definition NAU8325.h:32
@ DSP_B
Definition NAU8325.h:32
@ RIGHT_JUSTIFIED
Definition NAU8325.h:32
@ LEFT_JUSTIFIED
Definition NAU8325.h:32
@ I2S_STD
Definition NAU8325.h:32
void delayMs(unsigned long ms)
Definition API_Delay.h:19
ClockPolarity
Definition NAU8325.h:33
@ NORMAL_BCLK
Definition NAU8325.h:33
@ INVERTED_BCLK
Definition NAU8325.h:33
OversamplingMode
Definition NAU8325.h:34
@ OSR_128
Definition NAU8325.h:34
@ OSR_256
Definition NAU8325.h:34
@ OSR_64
Definition NAU8325.h:34
@ OSR_32
Definition NAU8325.h:34
ClockRatio
Definition NAU8325.h:36
@ NAU8325_MCLK_FS_RATIO_NUM
Definition NAU8325.h:40
@ NAU8325_MCLK_FS_RATIO_500
Definition NAU8325.h:39
@ NAU8325_MCLK_FS_RATIO_256
Definition NAU8325.h:37
@ NAU8325_MCLK_FS_RATIO_400
Definition NAU8325.h:38
void * i2c_bus_handle_t
Definition DriverCommon.h:155
uint8_t clk_src
Definition NAU8325.h:17
int osr
Definition NAU8325.h:16
uint16_t reg
Definition NAU8325.h:28
uint16_t val
Definition NAU8325.h:29
uint32_t mclk_src[3]
Definition NAU8325.h:24
bool max
Definition NAU8325.h:23
int fs
Definition NAU8325.h:21
uint8_t range
Definition NAU8325.h:22
int param
Definition NAU8325.h:11
uint8_t val
Definition NAU8325.h:12