AnsweredAssumed Answered

ADAU1445 - Some projects don't work when uploaded from MCU (but work with USBi)

Question asked by InoJosh on Mar 12, 2014
Latest reply on Dec 25, 2014 by KJBob

So here is the situation:

I've used the 144x series a few times and haven't had a problem like this show up until now.

My setup: 1445 being controlled via a PIC32 over SPI. I have some jumpers on the board so I can switch to using the USBi for debugging/testing things in SigmaStudio.

Generally, uploading the code via the PIC32 and controlling everything works fine. There are some particular projects however, that don't respond after initialization/upload. I will hear audio, but writing to anything like a volume slider or switch is non-responsive. Also, reading a readback that is supposed to be the peak volume gives a constant number, even though I can hear the audio, which is varying in volume of course.

These same projects will upload and run fine over USBi. My init process is the normal "default_download_ic1()" (after setting to SPI mode). If I readback the entire contents of program RAM and compare it to the Program_Data_IC_1 array generated by SigmaStudio, they are the same.

 

Now, here is the strange part. The only projects that are failing are ones with a FIR filter in it. I've used FIR blocks with 200 coefficients before (in another application) and have not had a problem, as long as I stayed under the max MIPS/coefficient limits of the sigma chip, of course. Here, if a put a FIR filter in with 80 coefficients, the project will not respond when uploaded from the PIC32. The %'s in the compiler output are all under 25%, with the MIPS being the most at 23% (I'm running at quad rate). If I remove that FIR filter and replace it with a ton of first order filters (just to max out the MIPS at 25%), the resulting project works fine. If I drop the # of coefficients to 60, the project will deceptively appear to work, but certain blocks within the project will not respond, and others will!

 

This is what the non-working project looks like (with the 60 coeff FIR)

Subroutines called:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Total             800               800               338               265

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

(%)               22%         20%               4%         6%

 

And this is what a working project looks like, where the FIR is replaced by a ton of 1st order filters to max out the MIPS:

Subroutines called:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Total             894          894          364          253

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

(%)               25%         22%          4%         6%

 

 

 

At quad rate, this should be well within the limits! Any idea what is going on here?

Outcomes