I would like some confirmation on a rather serious issue I have been observing regarding the setup of the ADAU1701 SigmaDSP from an external MCU.
We have been using this chip for about 2 years and are ready to send our first product with this DSP to the market very soon. But, we have recently been observing that after configuration, the DSP outputs "random" noise instead of the actual audio signal.
This does not happen every time we boot the system, and we have only seen it on ~5% of the final products, so there is not any apparent consistency in the behavior we are observing.
I have seen that, when the DSP starts up normally, the Interface Register data are all 0x00, while when the DSP starts up in the Error state, the Interface Registers are different from 0x00. We don't use these registers at all. And it shouldn't affect our setup since we don't use the Selfboot mode. But there is 100% consistency of the Interface Register data values and the good/bad behavior of the DSP.
What we have found is that when writing the program and parameter memory data to the DSP during initialization after a reset, our previous approach of writing only to the part of the memory, which is actually used, can in some cases trigger this error. Changing the configuration to write all the remaining parameter and program registers to 0x00 (as it should be by default) fixes the error.
How can this be the case? I get that, if there is some random data on that part of the memory, the DSP program can be corrupted and would result in unpredictable behavior. But why isn't this part cleared after a reset?
Our setup consists of an external MCU that configures the DSP via I2C. The MCU is also controlling the DSP reset and a power switch to the DSP to reduce standby power consumption. Please note that this configuration has been working for us since the beginning. So how can this all of a sudden become a problem once we begin mass producing?
Luckily, we have found this fix to the problem since the result is rather catastrophic - we use the DSP to adjust the volume also, so once the DSP starts outputting random data at full-scale, the acoustic shock is rather extreme :-)