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.

TLV320AIC3120: Reading miniDSP Coefficients back over I2C

Part Number: TLV320AIC3120


Hello,

I'm currently troubleshooting an issue where the TLV320AIC3120 starts outputting loud bad noise after it is configured by my MCU. (inconsistently, some times it sounds fine other times it does not)

During my troubleshooting I read back all of the configuration and miniDSP coefficients back from the codec and compare them to the config header file that pure_path studio generates for me.

This comparison shows that large portions of the miniDSP's coefficient memory are holding zeros when they should be holding the a value the was written to them. I feel that I'm missing something to 

read back these memory locations?

Do I need to power something down or changes modes somewhere to read from these locations?

Side observation that doesn't seem to affect anything (whether they are fixed or not): I've also noticed that some of the configuration writes that pure path studio generates write wrong values to reserved bits in some of the configuration settings.

Thank you,

J

  • Hi Jacob,

    Are you using the .h file provided by PPS?  

    you should be reading the same coefficients back,  are you certain that you are selecting the correct page when you are reading back registers?

    regarding the reserved register writes, PPS uses a fixed block for the AIC31xx devices,  The original AIC31xx device was the AIC3111 which features two class-D outputs while the AIC3120 only has one,  The associated registers for that second CLASSD, plus routing might account for the difference. in the AIC3120 writing to these registers will not cause a problem... feel free to list the register writes you are concerned about and I can confirm that you can remove them.

    best regards,

    -Steve Wilson

  • Steve,

    Yes I do use the .h provided by PPS. I do change a few of the config registers to match my application.

    I figured out why I couldn't read back the registers. After reading 'SLAA425D', I learned that I cannot interface with the memory while the miniDSP is active. (Unless its in adaptive mode)

    Now that I'm able to properly read back all of the registers from aic3120, I've found that several of the registers in my DSP D core are either not changing to what I write to them (although they appear to, if I read them back immediately they return the proper value but later they will not) or are resetting back to zero.

    This problem remains consistent while the device is powered. If I power down and re power up the problem may or may not appear. When it re-appears the registers that act up are different.

    A reset with either the reset pin or the SW reset does not fix the issue. Only a power down effects it.

    When acting up the registers always return zero.

    So far it looks like it has only been affecting the coef. registers for the DSP D core.

    I'm not sure what to do to fix this issue?

    Thank you,

    Jacob