I’ve implemented a 5 band peaking equalizer using the ADU1701. The ADU1701 interfaces with a microcontroller via SPI. Using the safeload mechanism, updating coefficients of each band works most of the time(approx. 90%). However, there are occasional safeloads that result in unexpected behavior – scrambled sounding audio or no audio output.
After a safeload in which the filter fails, reading back coefficients from parameter ram reveals a mismatch. I’ve only ever detected one out of the five coefficients showing a mismatch with what was sent by the microcontroller, and it is never the same coefficient. Moreover, the mismatch parameter ram value appears to be of the previous filter configuration.
My firmware waits for the IST bit to clear before initiating a safeload.
The last paragraph on page 35 of the ADU1701 datasheet reads:
“When the initiate safeload transfer bit is asserted, only data from those two registers are sent to the RAM; the other three registers are not sent to the RAM and may hold old or invalid data. “
This is precisely what seems to be happening in my application except I’m updating all five coefficients.
Beyond waiting for the IST bit to clear, is there anything more I can do to reach a 100% safeload success rate?
Would writing zeros to the safeload data ram before writing the new coefficients help?
Does it matter which order you update the safeload address / data registers?
Thanks in advance for your help.
The FAQ is done. It's available here: http://ez.analog.com/docs/DOC-2632
When you said you'd make a FAQ right away, you weren't kidding. Hopefully this will clear up some confusion for others.
Hi ael, Brett and Robert. Good day for you all.
I had download and tried Brett's project above.
When debugging, I also print out the data send out from MCU and able to get the exactly same data as Brett shown above.
But, my ADAU1701 seems does not recognize the command and it does not have take effect to the audio output.
So, I tried to add a DSP Readback to the SigmaStudio Project to verify if the I2C bus is working fine. And yes, I can confirm that the I2C bus is working excellent and DSP readback replied correct data out.
I have been keep reading the datasheet and Nando's post and couldn't find a way out.
Could anyone please help and give a guide. Hereby, I attached my MCU codings.
Thanks & Regards