Jieli Bluetooth Smart Speaker Development: Key Considerations for AC696N SoCs

When developing Bluetooth smart speakers based on Jieli's AC696N series of SoCs, paying attention to certain hardware and software details can significantly improve development efficiency and system stability. This article summarizes several key points, including RTC power supply, register debugging, AAC format support, and DAC fade-in settings.


1. Developing with RTC Functionality

Note:The RTCVDD pinmust be powered by an external power source, such as a button cell battery or IOVDD. Do not leave it floating or connect it to an inappropriate voltage rail.



2. Chip-Related Register Printing

ADDA Register Value Printing

The following functions can be used to dump the current state of the Audio DAC/ADC registers, which is invaluable for debugging audio issues.

· Print all DAC and ADC registers:
void audio_adda_dump(void) {
printf("DAC_VL0:%x", JL_AUDIO->DAC_VL0);
printf("DAC_TM0:%x", JL_AUDIO->DAC_TM0);
printf("DAC_DTB:%x", JL_AUDIO->DAC_DTB);
printf("DAC_CON:%x", JL_AUDIO->DAC_CON);
printf("ADC_CON:%x", JL_AUDIO->ADC_CON);
printf("DAC RES: DA0:0x%x DA1:0x%x DA2:0x%x DA3:0x%x ,ADC RES:ADA0:0X%x ADA1:0X%x ADA2:0X%x ADA3:0X%x\n", \
JL_ANA->DAA_CON0, JL_ANA->DAA_CON1, JL_ANA->DAA_CON2, JL_ANA->DAA_CON3, \
JL_ANA->ADA_CON0, JL_ANA->ADA_CON1, JL_ANA->ADA_CON2, JL_ANA->ADA_CON3);
}
· Print all DAC and ADC registers:Print all ADC and DAC gain settings:
void audio_adda_gain_dump(void) {
u8 dac_again_fl = JL_ANA->DAA_CON1 & 0x1F;
u8 dac_again_fr = (JL_ANA->DAA_CON1 >> 5) & 0x1F;
u8 dac_again_rl = (JL_ANA->DAA_CON1 >> 10) & 0x1F;
u8 dac_again_rr = (JL_ANA->DAA_CON1 >> 15) & 0x1F;
u32 dac_dgain_fl = JL_AUDIO->DAC_VL0 & 0xFFFF;
u32 dac_dgain_fr = (JL_AUDIO->DAC_VL0 >> 16) & 0xFFFF;
u32 dac_dgain_rl = JL_AUDIO->DAC_VL1 & 0xFFFF;
u32 dac_dgain_rr = (JL_AUDIO->DAC_VL1 >> 16) & 0xFFFF;
u8 mic0_gain = (JL_ANA->ADA_CON0 >> 8) & 0x1F;
u8 mic0_db = (JL_ANA->ADA_CON4 >> 29) & 0x1; // 0dB or 6dB
u8 linein_r_gain = (JL_ANA->ADA_CON0 >> 4) & 0xF;
u8 linein_l_gain = JL_ANA->ADA_CON0 & 0xF;
printf("MIC_G:%d,MIC_0_6:%d, linein_gain:%d,%d,DAC_AG:%d,%d,%d,%d,DAC_DG:%d,%d,%d,%d\n",
mic0_gain, mic0_db, linein_l_gain, linein_r_gain,
dac_again_fl, dac_again_fr, dac_again_rl, dac_again_rr,
dac_dgain_fl, dac_dgain_fr, dac_dgain_rl, dac_dgain_rr);
}

3. Enabling AAC Format Support

To add AAC audio decoding support to your project:

1)Enable the main macro definition in your configuration:
#define TCFG_BT_SUPPORT_AAC                 1   // Enable AAC format support
2)Important: For AC696N Soundbox SDK versions (1.5.0 and above), you must also enable the following configuration in:  SDK\apps\soundbox\log_config\lib_media_config.c 
const int config_aac_dec_use_malloc     = 1;

4. Disabling DAC Fade-In Function

Principle:Prevent the DAC from ramping the volume down to zero when stopping. This may lead to a perceptible increase in background noise, depending on your hardware design.
  • Call this function before playing audio:
audio_dac_vol_mute_lock(1);

Note: Due to hardware design constraints, the DAC fade-out function cannot be disabled. Compare the DAC output with this switch toggled on and off to evaluate the impact on your specific design.


By keeping these points in mind—proper RTC power, utilizing register dump functions, correctly enabling AAC, and managing DAC behavior—you can avoid common pitfalls and streamline your development process for AC696N-based smart speaker products.

评论

此博客中的热门博文

KT148A Voice Chip at Baidu Baike

KT148A Voice Chip: A Powerful Tool to Enhance the User Experience of Smart Soymilk Makers

KT148A Voice Chip Issue: Difficult to Play with Code Sending - Normal Playback After Grounding Pin 4, What’s the Reason?