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

ADAU1761 initialisation issue

SigmaDSP & SigmaStudio ADIApproved Aug 21, 2020 00:00 8 replies Original on forum ↗
Subscribe
ADIApproved Question
Aug 21, 2020 00:00

Hello SigmaDSP support team,

My customer evaluates ADAU1761 on the prototype. DSP doesn't start correctly after power on and the customer has to perform software reset after power on and write all required registers once again.

Could you please give recommendations on how to start ADAU1761 without software reset or give an initialization code example?

The customer initialization code as follows:

void ADAU1761_Init(void)

{

uint8_t p;

uint32_t m;

osStatus statusMutex;

statusMutex = osMutexWait(mvMutexAICHandle, portMAX_DELAY);

ADAU1761_WriteReg(ADAU1761_R0, 0x00);

ADAU1761_Init_PLL(0x00, 0x7D, 0x00, 0x0C, 0x20, 0x00);

ADAU1761_Init_PLL(0x00, 0x7D, 0x00, 0x0C, 0x20, 0x01);

while(!ADAU1761_Lock_PLL()){};

ADAU1761_WriteReg(ADAU1761_R0, 0x0F);

for(m = 0; m <

(sizeof(preferredSettings)/sizeof(registerSetting_t)); ++m)

{ADAU1761_WriteReg(preferredSettings[m].addr,

preferredSettings[m].data);}

osDelay(ADAU1761_DELAY);

DMA1_Stream4 ->CR &= (~DMA_SxCR_CIRC);

statusMutex = osMutexRelease(mvMutexAICHandle);

if(osOK != statusMutex) mvRokotError_Handler("AIC Mutex");

ADAU1761_Off();

}

Best regards,

Dmitry

Audio Signal Processors

SigmaDSP Audio Processors

adau1761

DaveThib Reply
Aug 21, 2020 00:00

Hello Dmitry,

This is what you are sending to the PLL

Unknown said:
ADAU1761_Init_PLL(0x00, 0x7D, 0x00, 0x0C, 0x20, 0x00);

I am not sure which is byte 0 and which is byte 5.

I am assuming that the registers are written from right to left on this list. I am making that assumption because of the 00 then 01 of the two writes you are doing. That would disable then enable the PLL.

So looking at the datasheet this is what I think are the PLL configuration you are using:

Byte 0 = 0x00

Byte 1 = 0x7D

Byte 2 = 0x00

Byte 3 = 0x0C

Byte 4 = 0x20

Byte 5 = 0x00 Then 0x01 after the second write.

So byte 4 is the byte of interest.

0x20 means that the following:

R = 4

X = 1

PLL Type = Integer.

Since it is set to an integer type, the other M and N values are ignored so they do not matter.

So what frequency is the master clock? ( If it is 12.288MHz then you are fine. If it is not then there is an issue)

Are you using SPI or I2C?

What frequency of SPI or I2C clocks?

Thanks

Dave T

ADIApproved Reply
Aug 25, 2020 00:00

Hi Dave,

Thank you for your answer.

The customer is using I2C with a clock rate of 400kHz. Masterclock is 12.288MHz.

ADAU1761 clocking settings are listed below:

11223455.jpg
11223455.jpg
DaveThib Reply
Aug 25, 2020 00:00

Hello rotax,

The clocking diagram is not from the ADAU1761. I do not recognize it.

400kHz is the max rate so you could try to lower it to 100kHz as a test. I don't think this is the issue but it is worth a try.

Is it possible to capture the I2C communications to see the data that is being sent and the timing?

Dave T

ADIApproved Reply
Aug 27, 2020 00:00

Hi Dave,

Sorry, the clock diagram is from STM32.

The customer has reduced I2C rate down to 100kHz, nothing has changed.

So, they still have to perform software reset and write all required registers once again after startup

Best regards, Dmitry.

DaveThib Reply
Aug 28, 2020 00:00

Hello Dmitry,

How long after power up are you trying to program the 1761?

You said you have to perform a software reset after power up but this part does not have a soft reset or even a reset pin. So what is being reset?

Can you capture the I2C communications from power up?

Thanks,

Dave T

ADIApproved Reply
Sep 2, 2020 00:00

Hello Dave,

The customer asks: Do any recommendations about the minimal time between power-on and programming ADAU1761 exist?

Best regards, Dmitry

DaveThib Reply
Sep 3, 2020 00:00

Hello Dmitry,

There is some mention of this in the datasheet. Here is what is written.

It mentions that once the AVDD reaches the threshold when POR is active to when POR is done is 14ms. The graph does show that the rise time of AVDD and the completion of the rise time of DVDD is shown but no time is given. This is because it depends on the power supplies and filter caps on the customer PCB so we cannot specify this time exactly since it is out of our hands. So you could capture these voltages on a scope to get a much more exact value for your design.

Dave T

pastedimage1599159118236v1.png
pastedimage1599159118236v1.png
ADIApproved Reply
Sep 30, 2020 00:00

Hi Dave,

The customer has resolved the issue.

Thank you so much for your support.

Best regards, Dmitry