This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLV320AIC3254-Q1: POP noise will be triggered when switching between music play and pause

Part Number: TLV320AIC3254-Q1

Tool/software:

Hi Team,

The pop noise will be triggered when switching between music play and pause (the attachment is the CODEC log file). Is there a register that can be adjusted?
Also, is there a register to clear the DAC buffer?
(I have tried it. When Codec DAC Channel Setup Register 2 is set to full mute, the codec output still has a pop noise when switching between play and pause.)

/* pasue to play */
[Rx][14:57:47.390] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:57:47.400] : tlv320aic_write_reg reg_addr(40) reg_data(10)  

/* play to pause */
[Rx][14:57:06.580] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:57:06.590] : tlv320aic_write_reg reg_addr(40) reg_data(1C) 


/* 1st play */
[Rx][14:58:55.418] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.418] : tlv320aic_write_reg reg_addr(01) reg_data(01) 

[Rx][14:58:55.428] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.438] : tlv320aic_write_reg reg_addr(1B) reg_data(00) 

[Rx][14:58:55.458] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.468] : tlv320aic_write_reg reg_addr(04) reg_data(07) 
[Rx][14:58:55.468] : tlv320aic_write_reg reg_addr(06) reg_data(14) 
[Rx][14:58:55.478] : tlv320aic_write_reg reg_addr(07) reg_data(00) 
[Rx][14:58:55.488] : tlv320aic_write_reg reg_addr(08) reg_data(00) 
[Rx][14:58:55.488] : tlv320aic_write_reg reg_addr(05) reg_data(93) 
[Rx][14:58:55.498] : tlv320aic_write_reg reg_addr(0B) reg_data(85) 
[Rx][14:58:55.498] : tlv320aic_write_reg reg_addr(0C) reg_data(83) 
[Rx][14:58:55.518] : tlv320aic_write_reg reg_addr(0D) reg_data(00) 
[Rx][14:58:55.518] : tlv320aic_write_reg reg_addr(0E) reg_data(80) 

[Rx][14:58:55.518] : tlv320aic_write_reg reg_addr(00) reg_data(01) 
[Rx][14:58:55.528] : tlv320aic_write_reg reg_addr(01) reg_data(08) 
[Rx][14:58:55.538] : tlv320aic_write_reg reg_addr(02) reg_data(01) 
[Rx][14:58:55.547] : tlv320aic_write_reg reg_addr(47) reg_data(32) 
[Rx][14:58:55.547] : tlv320aic_write_reg reg_addr(7B) reg_data(01) 

[Rx][14:58:55.557] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.567] : tlv320aic_write_reg reg_addr(3C) reg_data(02) 

[Rx][14:58:55.567] : tlv320aic_write_reg reg_addr(00) reg_data(2C) 
[Rx][14:58:55.577] : tlv320aic_write_reg reg_addr(01) reg_data(04) 

[Rx][14:58:55.587] : tlv320aic_write_reg reg_addr(00) reg_data(01) 
[Rx][14:58:55.587] : tlv320aic_write_reg reg_addr(0E) reg_data(08) 
[Rx][14:58:55.597] : tlv320aic_write_reg reg_addr(0F) reg_data(08) 
[Rx][14:58:55.607] : tlv320aic_write_reg reg_addr(12) reg_data(03) 
[Rx][14:58:55.607] : tlv320aic_write_reg reg_addr(13) reg_data(03) 
[Rx][14:58:55.617] : tlv320aic_write_reg reg_addr(09) reg_data(0C) 

[Rx][14:58:55.667] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.677] : tlv320aic_write_reg reg_addr(3F) reg_data(D4) 
[Rx][14:58:55.677] : tlv320aic_write_reg reg_addr(40) reg_data(1C) 

[Rx][14:58:55.697] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.707] : tlv320aic_write_reg reg_addr(41) reg_data(82) 
[Rx][14:58:55.707] : tlv320aic_write_reg reg_addr(42) reg_data(82) 

[Rx][14:58:55.767] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.767] : tlv320aic_write_reg reg_addr(40) reg_data(10) 

[Rx][14:58:55.777] : tlv320aic_write_reg reg_addr(00) reg_data(00) 
[Rx][14:58:55.777] : tlv320aic_write_reg reg_addr(41) reg_data(D6) 
[Rx][14:58:55.788] : tlv320aic_write_reg reg_addr(42) reg_data(D6) 




  • Hi,

    How are you defining your music play and pause? Something to keep in mind is that if the digital audio goes from a nonzero value to zero - a "pause" - without a ramp down, then there will always be a pop.

    I see in your script you unmute at the end and then set the volume slightly higher, this also may cause a pop? Can you change your volume set to be before the mute? I think, however, that instead of muting the device, you may want to implement a ramp-down/up of a few ms on your audio that you are trying to play back for ideal pop control. Even though you have soft stepping enabled, this does not cover soft stepping between mute and unmute, just different volume levels. If you switched between -63dB and 0dB this would not have a pop sound, but I see your system sets to -63dB, unmutes, and then sets to -42dB. Removing the mute in the system may help with the pop as well. Let me know if you need more help with this.

    Attaching annotated script for future reference here:

    /* pause to play */
    00 00 #page 0
    40 10 #dac auto muted if input si dc for more than 100 samps, left and right dac not muted, independent volume control
    
    /* play to pause */
    00 00 
    40 1C #left channel and right muted. 
    
    /* 1st play */
    00 00 
    01 01 #software reset
    
    00 00 
    1B 00 #i2s, 16 bit, slave mode
    
    00 00 
    04 07 #pll input=bclk, pll clock is codec_clkin
    06 14 #J=20
    07 00 #D = 0
    08 00 #D = 0
    05 93 #pll powered up, P=1, R=3
    0B 85 #NDAC powered up, ndac=5
    0C 83 #MDAC powered up, mdac = 3
    0D 00 #DOSR msb = 0
    0E 80 #DOSR = 128
    
    00 01 #page 1
    01 08 #disable weak connection of avdd with dvdd
    02 01 #avdd ldo powered up
    47 32 #analog inputs power up time is 6.4ms
    7B 01 #reference will power up in 40ms when analog blocks are powered up
    
    00 00 #page 0
    3C 02 #minidsp a and d are independently powered up, PRB_P2
    
    00 2C #page 0x2c
    01 04 #adaptive filtering enabled for DAC
    
    00 01 #page 1
    0E 08 #left channel dac reconstruction filter output is routed to LOL
    0F 08 #right channel dac reconstruction filter is routed to LOR
    12 03 #lol not muted, gain=3dB
    13 03 #lor not muted, gain=3dB
    09 0C #HPL and HPR powered down, LOL and LOR powered up, MAL and MAR powered down
    
    00 00 #Page 0
    3F D4 #left and right dac channel powered up, left is left and right is right, soft stepping is 1 step per dac wclk
    40 1C #auto mute at 100, left dac and right dac muted
    
    00 00 #page 0
    41 82 #left DAC digital volume = -63dB
    42 82 #right DAC dig volume = -63dB
    
    00 00 #page 0
    40 10 #left dac and right dac not muted
    
    00 00 #page 0
    41 D6 #left DAC to 1101 0110 - this is a negative number, -42 which corresponds to -21dB
    42 D6 #same for right DAC
    
    
    
    
    

    Best,
    Mir