ΣSigmaStudio Ask AI Русский Log in

ADAU1452 Hardware configuration, running without "Start Pulse"

SigmaDSP & SigmaStudio philipj451 Jul 6, 2023 00:00 5 replies Original on forum ↗
Subscribe
philipj451 Question
Jul 6, 2023 00:00

Hi,

I have a number of designs based upon ADAU1452 and I always have a green LED on MP0 pin which is flashed by a 1Hz oscillator to indicate the design is alive and operating.

I assume that the ADAU program runs only when there is a "Start Pulse" present (assuming all the other settings, Start Core, Not Hibernating etc. are correctly set.

My designs are set to use Start Pulse of "Serial Input 0 rate" and I have been having some problems where the LED doesn't flash but I can 'scope the input pin of the ADAU and there is definitly a 48 kHz clock there.

So, to my questions:

I don't suppose it is possible to have a section of sigmaDSP code run even if there is no Start Pulse ?

Can I change the Start Pulse selection "on the fly" (i.e. write to register 0xF401 and change the value from 0x08 to 0x02) ?

My design is not connected to SigmaStudio so I can't use any of it's features to debug the ADAU, but I can read/write all the ADAU memory from my Host CPU so are there any registers I can read to see why the core isn't running?

Thanks for any advice

Regards

PhilipJ

Audio Signal Processors

adau1452

Audio Products

software

sigmaStudio 4.7

SigmaDSP Audio Processors

Sigma Studio v4.7

Show More

Harishgowtham Reply
Jul 6, 2023 00:00

Hello Philip,

philipj451 said:
I don't suppose it is possible to have a section of sigmaDSP code run even if there is no Start Pulse ?

Yes, it won't run without a start pulse reference. It is an interrupt that tells the core "Start processing a new sample.". Let's imagine this, I'm using one of the serial input ports as a slave and I'm setting the start pulse rate as that particular serial input rate. You must have given the serial clocks to that serial input port externally. If you cut-off the clock to that input port, then the DSP won't run since it doesn't have an interrupt reference.

You could change it in runtime, but you might hear an audible click if it's different sources. why do you want to change it, since you slaved a serial port it's better to sync with the incoming rate.

Simply, you can set any DC value and read it back from your host like we do in sigma studio.

philipj451 said:
My designs are set to use Start Pulse of "Serial Input 0 rate" and I have been having some problems where the LED doesn't flash but I can 'scope the input pin of the ADAU and there is definitly a 48 kHz clock there.

I hope you have correctly given the clocks and ground connections externally to the serial input port. Just put an audio pass thru and see whether it works.

Did you use any self-boot feature? Remember that MP0 is supposed to be the SS pin for the self-boot EEPROM.

Regards,

Harish

philipj451 Reply
Jul 6, 2023 00:00

Hi Harish, thanks for the comprehensive reply.

I asked about changing it in run-time because it would be a simple test. If the LED isn't flashing perform the command to change over to BaseFs and if the LED starts flashing then the problem is that the clock is not being supplied properly to SerialIn 0, just helpful for checking new boards if there are any faults then narrowing down what signals to look at. I accept that any audio would glitch, but under circumstances where the SerialIn wasn't being clocked anyway it wouldn't matter.

As it turns out, I checked the Panic Registers, and I was getting aPanic Flag and a Panic Code of 8 (error in PM1) so I have swapped over to a new PCB and everything seems to be fine, I would conclude that the ADAU on the original board had a fault.

Thanks so much for your assistance and advice.

Regards

PhilipJ

philipj451 Reply
Jul 11, 2023 00:00

Hi again Harish,

I didn't fully explain myself in my previous reply:

I am trying to help with possible problems when units are being tested in a production environment. My plan was to boot the chip with START PULSE set to internal core clock and then find some method to test whether the clock feeding SerialIn0 was present. If it is then I would change the START PULSE to operate off it (and thus be in sync with the rest of the system) but if it isn't detected then show this by flashing a LED with a different cadence.

Thus a test engineer simply looks at the LED, if it isn't flashing at all then the main MCLK is not present, if it is flashing with a specific pattern then SerialIn0 is not present and if it is flashing with normal cadence then required clocks are all present and DSP is in sync with the system.

Haven't worked out yet how I can check for presence of clocks for Serial Inputs yet, perhaps start off with them programmed as GPIO pins (MP10) and feed them to some sort of pulse counter, if after a test period the pulse counter value is non-zero then re-program the pins to be Serial Port clock inputs.

Thanks for your attention

PhilipJ

DaveThib Reply
Jul 21, 2023 00:00

Hello Phillip,

You have touched upon a couple of sore spots in the design. As you are well aware, this core is able to write to its own memories and registers. This is a powerful feature allow it to adapt during runtime. However, if you set the Start Pulse to be an external source from a serial port and that clock goes away, the core will no longer get an interrupt to start executing the program at the start of the frame. So the core stops. Therefore, any code you write to change the start pulse back to an internal source can never be reached because the program is not running.

Since you have a system controller you certainly can have the system controller watch your heartbeat oscillator and if it stops then change the start pulse to an internal setting and you will recover. I assume you also would want to change the audio path to a different source that is safe and still operating.

For the second part of your question regarding sensing if the serial port is getting valid clocks? If you have an ASRC available, I would set it up to take input from the serial port and then output to the core. This will give you two things to check. The first is the ASRC lock bit to see if it is locked. The second is the ASRC Ratio register which tells you the ratio between the two sample rates. This will tell you the sampling rate. In your case all you will need to check is the ASRC lock bit and if it is not locked then you have no clock and you could flash the LED differently.

Dave T

philipj451 Reply
Mar 17, 2025 00:00

Hi Dave,

I am sorry that I have "ignored" your reply for SOOOO long, to be honest I forgot that I had asked the question and it turns out that I am just now experiencing a similar issue with an ADAU1467 device that appears to not run, I searched for anything on this subject and amazingly I found my own thread!!

Your suggestion about using an ASRC is brilliant!! :-) thank you I will try that.

Kind regards

PhilipJ