mic gain logic
This commit is contained in:
@@ -38,7 +38,7 @@ endif()
|
|||||||
# Firmware version (maps to BCD_DEVICE_J.M.N in USB descriptor)
|
# Firmware version (maps to BCD_DEVICE_J.M.N in USB descriptor)
|
||||||
set(FW_VER_J 1)
|
set(FW_VER_J 1)
|
||||||
set(FW_VER_M 1)
|
set(FW_VER_M 1)
|
||||||
set(FW_VER_N 4)
|
set(FW_VER_N 5)
|
||||||
set(FW_VERSION "v${FW_VER_J}.${FW_VER_M}.${FW_VER_N}")
|
set(FW_VERSION "v${FW_VER_J}.${FW_VER_M}.${FW_VER_N}")
|
||||||
|
|
||||||
set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -Os
|
||||||
@@ -94,8 +94,8 @@ set(APP_COMPILER_FLAGS_f5_music_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC
|
|||||||
-DNUM_USB_CHAN_OUT=8
|
-DNUM_USB_CHAN_OUT=8
|
||||||
-DNUM_USB_CHAN_OUT_FS=2
|
-DNUM_USB_CHAN_OUT_FS=2
|
||||||
-DNUM_USB_CHAN_IN=2
|
-DNUM_USB_CHAN_IN=2
|
||||||
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24
|
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=24
|
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||||
-DINPUT_FORMAT_COUNT=1
|
-DINPUT_FORMAT_COUNT=1
|
||||||
-DOUTPUT_FORMAT_COUNT=1
|
-DOUTPUT_FORMAT_COUNT=1
|
||||||
#-DNUM_EX3D_CHAN_OUT=2
|
#-DNUM_EX3D_CHAN_OUT=2
|
||||||
@@ -204,6 +204,10 @@ set(APP_COMPILER_FLAGS_f6_f7_fps_uac1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|||||||
-DMAX_FREQ=48000
|
-DMAX_FREQ=48000
|
||||||
-DMCLK_441=512*44100
|
-DMCLK_441=512*44100
|
||||||
-DMCLK_48=512*48000
|
-DMCLK_48=512*48000
|
||||||
|
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||||
|
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||||
|
-DINPUT_FORMAT_COUNT=1
|
||||||
|
-DOUTPUT_FORMAT_COUNT=1
|
||||||
-DUAC1_MODE=1
|
-DUAC1_MODE=1
|
||||||
-DUSE_EX3D=1
|
-DUSE_EX3D=1
|
||||||
-DF6_F7_FPS_UAC1=1
|
-DF6_F7_FPS_UAC1=1
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ void board_setup()
|
|||||||
|
|
||||||
// tile 0
|
// tile 0
|
||||||
// called on tile 0 - start
|
// called on tile 0 - start
|
||||||
#define NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE 0x1 // 0x1=1, 0dB (0x0, -1dB which is not used in this design)
|
#define NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE 0x0 // 0x1=1, 0dB (0x0, -1dB which is not used in this design)
|
||||||
#define NAU88L21_PGA_GAIN_REG_MAX_VALUE 0x25+1 // 0x25=37, 36dB. +1 is for extra 1.5dB digital gain
|
#define NAU88L21_PGA_GAIN_REG_MAX_VALUE 0x25+1 // 0x25=37, 36dB. +1 is for extra 1.5dB digital gain
|
||||||
#define NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE (NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
#define NAU88L21_PGA_GAIN_REG_DEFAULT_VALUE (NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ void dac_volume(signed level)
|
|||||||
|
|
||||||
void mic_volume(unsigned level)
|
void mic_volume(unsigned level)
|
||||||
{
|
{
|
||||||
if (level == 0 || level == 1)
|
if (level == 0)
|
||||||
{
|
{
|
||||||
// mute: 关闭PGA和输出放大器
|
// mute: 关闭PGA和输出放大器
|
||||||
unsafe {NAU88C22_REGWRITE(0x007E, 0, (client interface i2c_master_if)i_i2c_client);}
|
unsafe {NAU88C22_REGWRITE(0x007E, 0, (client interface i2c_master_if)i_i2c_client);}
|
||||||
@@ -601,7 +601,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
// 从 Flash 恢复 mic/dac 音量
|
// 从 Flash 恢复 mic/dac 音量
|
||||||
{
|
{
|
||||||
unsigned char saved_mic = load_value(mic_vol_path);
|
unsigned char saved_mic = load_value(mic_vol_path);
|
||||||
if(saved_mic <= NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
if(saved_mic >= NAU88L21_PGA_GAIN_REG_MIN_USED_VALUE && saved_mic <= NAU88L21_PGA_GAIN_REG_MAX_VALUE)
|
||||||
codec_adc_pga_gain_reg_value = saved_mic;
|
codec_adc_pga_gain_reg_value = saved_mic;
|
||||||
else
|
else
|
||||||
save_value(mic_vol_path, (unsigned char)codec_adc_pga_gain_reg_value); // 出厂默认22(21dB)
|
save_value(mic_vol_path, (unsigned char)codec_adc_pga_gain_reg_value); // 出厂默认22(21dB)
|
||||||
@@ -1581,11 +1581,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
if((codec_adc_pga_gain_reg_value < NAU88L21_PGA_GAIN_REG_MAX_VALUE) && (flag_mic_mute == 0)) {
|
if((codec_adc_pga_gain_reg_value < NAU88L21_PGA_GAIN_REG_MAX_VALUE) && (flag_mic_mute == 0)) {
|
||||||
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
||||||
|
|
||||||
// 从mute(0)跳到首个LED档位(3),跳过无LED的1-2档
|
++codec_adc_pga_gain_reg_value;
|
||||||
if (codec_adc_pga_gain_reg_value == 0)
|
|
||||||
codec_adc_pga_gain_reg_value = 3;
|
|
||||||
else
|
|
||||||
++codec_adc_pga_gain_reg_value;
|
|
||||||
if (!mic_det_muted)
|
if (!mic_det_muted)
|
||||||
mic_volume(codec_adc_pga_gain_reg_value);
|
mic_volume(codec_adc_pga_gain_reg_value);
|
||||||
g_mic_volume_level = (codec_adc_pga_gain_reg_value <= 37) ? codec_adc_pga_gain_reg_value : 37;
|
g_mic_volume_level = (codec_adc_pga_gain_reg_value <= 37) ? codec_adc_pga_gain_reg_value : 37;
|
||||||
@@ -1604,11 +1601,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
|
|||||||
if((codec_adc_pga_gain_reg_value > 0) && (flag_mic_mute == 0)) {
|
if((codec_adc_pga_gain_reg_value > 0) && (flag_mic_mute == 0)) {
|
||||||
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value];
|
||||||
|
|
||||||
// 减小音量:在首个LED档位(<=3)直接跳到mute(0),跳过无LED的1-2档
|
--codec_adc_pga_gain_reg_value;
|
||||||
if (codec_adc_pga_gain_reg_value <= 3)
|
|
||||||
codec_adc_pga_gain_reg_value = 0;
|
|
||||||
else
|
|
||||||
--codec_adc_pga_gain_reg_value;
|
|
||||||
if (!mic_det_muted) {
|
if (!mic_det_muted) {
|
||||||
if (codec_adc_pga_gain_reg_value == 0)
|
if (codec_adc_pga_gain_reg_value == 0)
|
||||||
mic_volume(0);
|
mic_volume(0);
|
||||||
|
|||||||
@@ -89,15 +89,15 @@ const uint8_t led_d_physical_map[15] = {
|
|||||||
|
|
||||||
const uint8_t mic_gain_to_led[39] = {
|
const uint8_t mic_gain_to_led[39] = {
|
||||||
0, // [-1] 增益-1: 0个LED,这个设计未启用
|
0, // [-1] 增益-1: 0个LED,这个设计未启用
|
||||||
0, // [0] 增益0: 0个LED
|
1, // [0] 增益0: 0个LED
|
||||||
0, // [1] 增益1: 0个LED
|
1, // [1] 增益1: 0个LED
|
||||||
0, // [2] 增益2: 0个LED
|
1, // [2] 增益2: 0个LED
|
||||||
1, // [3] 增益3: 1个LED
|
1, // [3] 增益3: 1个LED
|
||||||
1, // [4] 增益4: 1个LED
|
2, // [4] 增益4: 1个LED
|
||||||
1, // [5] 增益5: 1个LED
|
2, // [5] 增益5: 1个LED
|
||||||
2, // [6] 增益6: 2个LED
|
2, // [6] 增益6: 2个LED
|
||||||
2, // [7] 增益7: 2个LED
|
2, // [7] 增益7: 2个LED
|
||||||
2, // [8] 增益8: 2个LED
|
3, // [8] 增益8: 2个LED
|
||||||
3, // [9] 增益9: 3个LED
|
3, // [9] 增益9: 3个LED
|
||||||
3, // [10] 增益10: 3个LED
|
3, // [10] 增益10: 3个LED
|
||||||
3, // [11] 增益11: 3个LED
|
3, // [11] 增益11: 3个LED
|
||||||
|
|||||||
Reference in New Issue
Block a user