From 9d0aa73cc5a90b36f7858db1a439365460eb426c Mon Sep 17 00:00:00 2001 From: Steven Dan Date: Tue, 21 Apr 2026 19:55:38 +0800 Subject: [PATCH] mic gain logic --- .../CMakeLists.txt | 10 +++++++--- .../src/extensions/audiohw.xc | 20 +++++++------------ .../src/extensions/led_control.c | 12 +++++------ 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/CMakeLists.txt b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/CMakeLists.txt index 90d7dd2..a6a28d6 100644 --- a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/CMakeLists.txt +++ b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/CMakeLists.txt @@ -38,7 +38,7 @@ endif() # Firmware version (maps to BCD_DEVICE_J.M.N in USB descriptor) set(FW_VER_J 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(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_FS=2 -DNUM_USB_CHAN_IN=2 - -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=24 - -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=24 + -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16 + -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16 -DINPUT_FORMAT_COUNT=1 -DOUTPUT_FORMAT_COUNT=1 #-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 -DMCLK_441=512*44100 -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 -DUSE_EX3D=1 -DF6_F7_FPS_UAC1=1 diff --git a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/audiohw.xc b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/audiohw.xc index 2f69672..ef0ac32 100644 --- a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/audiohw.xc +++ b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/audiohw.xc @@ -169,7 +169,7 @@ void board_setup() // tile 0 // 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_DEFAULT_VALUE (NAU88L21_PGA_GAIN_REG_MAX_VALUE) @@ -219,7 +219,7 @@ void dac_volume(signed level) void mic_volume(unsigned level) { - if (level == 0 || level == 1) + if (level == 0) { // mute: 关闭PGA和输出放大器 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 音量 { 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; else 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)) { uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value]; - // 从mute(0)跳到首个LED档位(3),跳过无LED的1-2档 - if (codec_adc_pga_gain_reg_value == 0) - codec_adc_pga_gain_reg_value = 3; - else - ++codec_adc_pga_gain_reg_value; + ++codec_adc_pga_gain_reg_value; + if (!mic_det_muted) 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; @@ -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)) { uint8_t old_led_count = mic_gain_to_led[codec_adc_pga_gain_reg_value]; - // 减小音量:在首个LED档位(<=3)直接跳到mute(0),跳过无LED的1-2档 - if (codec_adc_pga_gain_reg_value <= 3) - codec_adc_pga_gain_reg_value = 0; - else - --codec_adc_pga_gain_reg_value; + --codec_adc_pga_gain_reg_value; + if (!mic_det_muted) { if (codec_adc_pga_gain_reg_value == 0) mic_volume(0); diff --git a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/led_control.c b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/led_control.c index 6ff0300..fdf437e 100644 --- a/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/led_control.c +++ b/sw_usb_audio/app_usb_aud_phaten_golden_6ch/src/extensions/led_control.c @@ -89,15 +89,15 @@ const uint8_t led_d_physical_map[15] = { const uint8_t mic_gain_to_led[39] = { 0, // [-1] 增益-1: 0个LED,这个设计未启用 - 0, // [0] 增益0: 0个LED - 0, // [1] 增益1: 0个LED - 0, // [2] 增益2: 0个LED + 1, // [0] 增益0: 0个LED + 1, // [1] 增益1: 0个LED + 1, // [2] 增益2: 0个LED 1, // [3] 增益3: 1个LED - 1, // [4] 增益4: 1个LED - 1, // [5] 增益5: 1个LED + 2, // [4] 增益4: 1个LED + 2, // [5] 增益5: 1个LED 2, // [6] 增益6: 2个LED 2, // [7] 增益7: 2个LED - 2, // [8] 增益8: 2个LED + 3, // [8] 增益8: 2个LED 3, // [9] 增益9: 3个LED 3, // [10] 增益10: 3个LED 3, // [11] 增益11: 3个LED