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.

SLOS602A TLV320AIC3204 REGISTER MAP ERRORS

I am finishing-up my code and noticed numerous mistakes in the register map in document SLOS602A (datahseet for AIC3204).

Two of the mistakes that concern me at the moment are the following:

P0_R91/R92

Register 91 (Left channel AGC control register 6):

Bits D7-D5: Reserved, leave as 000x xxxx

Bits D4-D0: The binary values don't make sense. If you set these bits to xxx0 0001, it sets the noise debounce time to 0. But then, if you make the calculations, and set xxx0 0010, it sets the debounce time to 4. So far, so good. But then, since there are 31 combinations, not all combinations are listed. The next in line after <4> is 1024 which, in the docs, indicate that it is value xxx0 1010. That's the problem. If every increase of 1 at the binary level is multipled by 2 at the ADC WCLK level, the table should read like this if it was fully printed in the docs:

xxx0 0001: 0

xxx0 0010: 4 ADC WCLK

xxx0 0011: 8 ADC WCLK

xxx0 0100: 16 ADC WCLK

xxx0 0101: 32 ADC WCLK

xxx0 0110: 64 ADC WCLK

xxx0 0111: 128 ADC WCLK

xxx0 1000: 256 ADC WCLK

xxx0 1001: 512 ADC WCLK

xxx0 1010: 1024 ADC WCLK >>>> ERROR: Docs say that this value is 2048 ADC WCLK

xxx0 1011: 2048 ADC WCLK >>>> ERROR: Docs say that this value is 4096 ADC WCLK

And it's all wrong from here on-end. So this means that a value of xxx1 1111 should be what? 20*4096 ADC WCLK as opposed to what's stated in the docs as 21*4096 ADC WCLK?

Register 92 (Left channel AGC control register 7): It's the same idea.

Bits D7-D4: Reserved, leave as 0000 xxxx

Bits D3-D0: Only the binary values for 0,4 and 8 are printed. Then it skips to 1024 which, in the docs, say that this is xxxx 1001. But if you follow the binary logic starting from the begining, it should read like this:

xxxx 0001: 0

xxxx 0010: 4 ADC WCLK

xxxx 0011: 8 ADC WCLK

xxxx 0100: 16 ADC WCLK

xxxx 0101: 32 ADC WCLK

xxxx 0110: 64 ADC WCLK

xxxx 0111: 128 ADC WCLK

xxxx 1000: 256 ADC WCLK

xxxx 1001: 512 ADC WCLK >>>> ERROR: Docs say that this value is 1024 ADC WCLK

xxxx 1010: 1024 ADC WCLK >>>> ERROR: Docs say that this value is 2048 ADC WCLK

xxxx 1011: 2048 ADC WCLK >>>> ERROR: Docs say that this value is 4096 ADC WCLK

And again, it's all wrong from here on-end. So this means that a value of xxxx 1111 should be what? 5*2048 ADC WCLK as opposed to what's stated in the docs as 6*4096 ADC WCLK.

Can someone please confirm the above? The reason I noticed and that I am asking is because I am pushing the CODEC settings over IP to an application and it should be very simple logic to position a slider object at the right location but the calculations only work for the first few values... afterwards, it doesn't match-up to the documentation.

  • Ok, not sure why I can't edit my own post but for Register 91, I meant to say:

    "[...] not all combinations are listed. The next in line after <8> is 1024 [...]" >> The value should have read an '8' instead of a '4'.

    And TI, can you please re-add the 'EDIT' button so that I can edit my own posts?

    Thanks again,

    Ben
  • Hi Benoit,

    You should be able to edit your own post, the new E2E site has just moved buttons around. I have notified our applications engineer that covers this part about this error, we will verify this when he gets back from vacation.

    Justin
  • Hi Benoit,

    You are correct. The issue is that the table should start at 0, not 1. This also applies to Register 99 and 100. Below is a corrected table. We will add this to the list of datasheet updates. Thanks for letting us know.

    Register 91/99:

    0 Left AGC Noise Debounce = 0/Fs
    1 Left AGC Noise Debounce = 4/Fs
    2 Left AGC Noise Debounce = 8/Fs
    3 Left AGC Noise Debounce = 16/Fs
    4 Left AGC Noise Debounce = 32/Fs
    5 Left AGC Noise Debounce = 64/Fs
    6 Left AGC Noise Debounce = 128/Fs
    7 Left AGC Noise Debounce = 256/Fs
    8 Left AGC Noise Debounce = 512/Fs
    9 Left AGC Noise Debounce = 1024/Fs
    10 Left AGC Noise Debounce = 2048/Fs
    11 Left AGC Noise Debounce = 4096/Fs
    12 Left AGC Noise Debounce = 2*4096/Fs
    13 Left AGC Noise Debounce = 3*4096/Fs
    14 Left AGC Noise Debounce = 4*4096/Fs
    30 Left AGC Noise Debounce = 20*4096/Fs
    31 Left AGC Noise Debounce = 21*4096/Fs

     Register 92/100:

    0 Left AGC Signal Debounce = 0/Fs
    1 Left AGC Signal Debounce = 4/Fs
    2 Left AGC Signal Debounce = 8/Fs
    3 Left AGC Signal Debounce = 16/Fs
    4 Left AGC Signal Debounce = 32/Fs
    5 Left AGC Signal Debounce = 64/Fs
    6 Left AGC Signal Debounce = 128/Fs
    7 Left AGC Signal Debounce = 256/Fs
    8 Left AGC Signal Debounce = 512/Fs
    9 Left AGC Signal Debounce = 1024/Fs
    10 Left AGC Signal Debounce = 2048/Fs
    11 Left AGC Signal Debounce = 2*2048/Fs
    12 Left AGC Signal Debounce = 3*2048/Fs
    13 Left AGC Signal Debounce = 4*2048/Fs
    14 Left AGC Signal Debounce = 5*2048/Fs
    15 Left AGC Signal Debounce = 6*2048/Fs

     Regards,

    J-