Cis mode - Mic issues

Hi,

With this setup in Issue with Stereo Sound from External Codec on nRF5340 DK (SDK v2.6.2) , I successfully built a CIS mode using my nRF5340 DKs, enabling stereo sound while the microphone is active.

However, I am currently experiencing several issues:

  • The recorded microphone signal is accelerated, playing back faster than it was recorded.
  • The input signal quality is poor when using an analog microphone, but it improves significantly with a digital microphone.
  • When using the microphone and playing audio through the headset simultaneously, the recorded sound is barely audible (very low signal strength).
  • Occasionally, one of the DKs disconnects, causing a complete loss of audio.

Any insights into what might be causing these issues? and how might they be solved?

Thank you in advance—I truly appreciate your time and support.

Best regards,
Abdulmohaimen Algamoudi 

  • Hi Dejan,

    When I use the microphone to record a voice signal on my computer, the playback (of the microphone recorded signal) sounds faster than the original recording. This affects the signal quality, making it appear accelerated—roughly by a factor of 1.25 to 1.3 (an estimation).

    The microphone is connected to the DA7212 hardware codec. I haven’t modified the sample rate, so I assume it's the same for both recording and playback.

    Additionally, I measured the clock signal from the NRF DK and noticed:

    • MCLK: 3.471 MHz
    • BCLK: 1.536 MHz
    • WCLK: 48,000 Hz

    This is the set up i am using for the HW codec as salve setup:

      ret = da7212_write_reg(DA7212_PLL_CTRL, DA7212_PLL_EN_MASK | DA7212_PLL_SRM_EN_MASK |  DA7212_PLL_INDIV_2_10MHZ); 
         if(ret < 0)
         printk("da7212 write operation failed\n");
           // Set the frame length to 32.
         ret = da7212_write_reg(DA7212_DAI_CLK_MODE, DA7212_DAI_BCLKS_PER_WCLK_BCLK32 ); 
         if(ret < 0)
         printk("da7212 write operation failed\n");   
     
     
         // Enable Digital Audio Interface (DAI)
         ret = da7212_write_reg(DA7212_DAI_CTRL, DA7212_DAI_EN_MASK | DA7212_DAI_OE_MASK); 
         if(ret < 0)
         printk("da7212 write operation failed\n");
     
         
         ret = da7212_write_reg(DA7212_SR, DA7212_SR_48KHZ);
         if (ret < 0) printk("Sample rate configuration failed\n");


    Best regards,
    Abdulmohaimen

  • Hi Abdulmohaimen,

    Abdulmohaimen said:
    I have applied the modifications from the GitHub link and made changes to the hardware codec file to configure the codec. Additionally, I enabled the I2S configuration to utilize the external HW codec.

    Can you show all your modifications/changes and provide GitHub link?

    Best regards,
    Dejan

Related