From 6121ee23f3f149bc5c1752dbc578f7265abc4bf0 Mon Sep 17 00:00:00 2001 From: Hendrik Langer Date: Fri, 8 Oct 2021 17:34:29 +0200 Subject: [PATCH 1/3] add function to enable high pass filter --- src/WM8978.cpp | 9 +++++++++ src/WM8978.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/WM8978.cpp b/src/WM8978.cpp index ed0d7ae..d19f479 100644 --- a/src/WM8978.cpp +++ b/src/WM8978.cpp @@ -300,6 +300,15 @@ 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 = (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); From 06246ce54881dad71fc02d3715ab490d5687a677 Mon Sep 17 00:00:00 2001 From: Hendrik Langer Date: Fri, 8 Oct 2021 21:08:58 +0200 Subject: [PATCH 2/3] fix regval overwrite --- src/WM8978.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/WM8978.cpp b/src/WM8978.cpp index d19f479..f84fb8a 100644 --- a/src/WM8978.cpp +++ b/src/WM8978.cpp @@ -305,7 +305,8 @@ void WM8978::setHPF(uint8_t enable) uint16_t regval; regval = WM8978::Read_Reg(14); - regval = (enable << 8); + regval &= ~(1 << 8); + regval |= (enable << 8); Write_Reg(14, regval); //R14,high pass filter } From e86ab8cc459fd04f2e6ef711cbcaed7415f0f3c8 Mon Sep 17 00:00:00 2001 From: Hendrik Langer Date: Tue, 12 Oct 2021 17:58:33 +0200 Subject: [PATCH 3/3] enable high pass filter on default --- src/WM8978.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WM8978.cpp b/src/WM8978.cpp index f84fb8a..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; }