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 8063221..286ca07 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 14) +set(FW_VER_N 15) set(FW_VERSION "v${FW_VER_J}.${FW_VER_M}.${FW_VER_N}") set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -Os 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 10e5aad..6653234 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 @@ -287,6 +287,7 @@ static inline i2c_regop_res_t NAU88C22_REGWRITE(unsigned reg, unsigned val, clie } else { + debug_printf("I2C write success: reg=%08x, val=%08x\n", reg, val); //debug_printf("I2C write success: reg="); //printhex(reg); //debug_printf(", val="); @@ -1249,8 +1250,15 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol, mic_det_muted = 0; // 恢复音量,但如果用户手动mute了则不恢复 if (!flag_mic_mute) { - mic_volume(codec_adc_pga_gain_reg_value); - debug_printf("mic_det: unmute -> pga=%d\n", codec_adc_pga_gain_reg_value); + // 改动原因(关键修复): + // codec_adc_pga_gain_reg_value 在当前版本保存的是 49级HID音量等级(0~48),不是Codec寄存器原始值。 + // 这里之前直接写 mic_volume(codec_adc_pga_gain_reg_value) 会绕过统一映射逻辑, + // 造成“插拔后恢复增益”与“旋钮/HID设置增益”不一致,表现为录音音量异常(偏小/不稳定)。 + // 必须与其它路径保持一致,先做 HID->Codec PGA 映射再写寄存器。 + unsigned codec_gain = mic_hid_level_to_codec_gain(codec_adc_pga_gain_reg_value); + mic_volume(codec_gain); + debug_printf("mic_det: unmute -> hid=%d codec_pga=%d\n", + codec_adc_pga_gain_reg_value, codec_gain); } } else if (mic_det_cmd == MIC_DET_DAC_MUTE) { dac_det_muted = 1;