diff --git a/src/WM8978.cpp b/src/WM8978.cpp index ed0d7ae..8f6a90c 100644 --- a/src/WM8978.cpp +++ b/src/WM8978.cpp @@ -56,7 +56,7 @@ uint8_t WM8978::Init(void) Write_Reg(48, 1 << 8); //R48设置,PGABOOSTR,右通道MIC获得20倍增益 Write_Reg(49, 1 << 1); //R49,TSDEN,开启过热保护 Write_Reg(10, 1 << 3); //R10,SOFTMUTE关闭,128x采样,最佳SNR - Write_Reg(14, 1 << 3); //R14,ADC 128x采样率 + Write_Reg(14, 1 << 3 | 1 << 8); //R14,ADC 128x采样率 and enable high pass filter (3.7Hz cut-off) return 0; } @@ -300,6 +300,16 @@ void WM8978::setNoise(uint8_t enable, uint8_t gain) Write_Reg(35, regval); //R18,EQ1设置 } +void WM8978::setHPF(uint8_t enable) +{ + uint16_t regval; + + regval = WM8978::Read_Reg(14); + regval &= ~(1 << 8); + regval |= (enable << 8); + Write_Reg(14, regval); //R14,high pass filter +} + bool WM8978::begin() { Wire.beginTransmission(WM8978_ADDR); diff --git a/src/WM8978.h b/src/WM8978.h index 0db142e..8470f1a 100644 --- a/src/WM8978.h +++ b/src/WM8978.h @@ -55,6 +55,7 @@ class WM8978 void setEQ5(uint8_t cfreq, uint8_t gain); void setNoise(uint8_t enable, uint8_t gain); void setALC(uint8_t enable, uint8_t maxgain, uint8_t mingain); + void setHPF(uint8_t enable); private: uint8_t Init(void);