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

ADAU1467 self boot EEPROM issues

SigmaDSP & SigmaStudio Julien S Dec 1, 2019 00:00 5 replies Original on forum ↗
Subscribe
Julien S Question
Dec 1, 2019 00:00

Hello Everybody,

I am having some difficulties with the selfboot EEPROM.

I am making a program with a FIR filter loaded with a table of 5500 taps, If I grow it with an additional channel (for to have two channels) and I load it by the command "Link Compil Download" it is working well. If I load it in EEPROM and reboot the DSP, it's working well.

If I replace the two channels FIR filter by two one channel FIR filter (loaded by the same 5500 taps table), when I load it by the command "Link Compil Download" it is working well. But if I load it in the self boot EEPROM (24AA256), when I reboot the DSP, the DSP doesn't start.
If I check the I2C line between the DSP and the EEPROM I see only one I2C frame and after nothing apen.

I tried many settings of the EEPROM configuration, without success. (for ex. set the pages size from 32 to 64 bytes).

I joined the two programs.

Please help me !!

Many thanks.

Programme 0_module FIR_V_test.zip

Audio Signal Processors

adau1467

SigmaDSP Audio Processors

DaveThib Reply
Dec 5, 2019 00:00

Hello Julien,

I have not downloaded your program but I can see what is happening most likely.

Growing an FIR filter uses the same coefficients, using two separate cells will use two sets of coefficients so it takes twice the storage space.

If the file is too large for the EEPROM then it will wrap about and start writing at the start of the EERPOM overwriting the start of the file. So when the DSP starts loading it reads the first byte and if it is not an 0xAA then it stops since the contents are not valid.

So either you need to use a larger EEPROM or go back to the stereo version of the FIR filter.

Dave T

Julien S Reply
Dec 6, 2019 00:00

Hello Dave,

Many thanks for your answer.

Unfortunately (for me) you are right.... I don't know why, I put one 256k EEPROM instead of 1M like the Eval board...

1M EEPROM is the maximum needed by the ADAU1467 ?

One more time, many thanks !

Julien S Reply
Dec 6, 2019 00:00

Dave,

I have changed the 256kb by a 1Mb EEPROM (AT24CM01). It's working fine now !

But I have a doubt about the configuration of the EEPROM, according to me we need 3 bytes to adress 1Mb, but If I configure that in the window "EEPROM Properties" it's not working (it's like before, with the 256kb EEPROM).

If I configure 2 bytes, It's working fine, but I think, like that, I can use only 512kb, am I right ?

Best regards.

Julien

DaveThib Reply
Dec 12, 2019 00:00

Hello Julien,

This is an I2C EEPROM so it will only accept a two-byte address for the data location. How the I2C standard gets around this limitation for larger memories is to add a 17th bit (A16) into the I2C device address byte. This means that the bit needs to be separated and transmitted separately (well, in a different byte but the same message) then reassembled upon being received. The Comms port in the DSP is not designed to do this so we cannot support I2C EEPROMs larger than 512k. With SPI EEPROMs we can use 24 bit addressing so it is not a problem with those.

I have not heard of anyone filing up a 512k EEPROM using a Sigma300 (ADAU1452) but the 1467 can hold a lot more memory but the max program size is still the same for both generations of parts. It would take more study on my part but it might be possible to fill up an I2C EEPROM on the Sigma350.

I got this from page 47 of the datasheet:

Considerations When Using a 1 Mb I2C Self Boot EEPROM
Because of the way I2C addressing works, 1 Mb of I2C EEPROM
memory can be divided, with a portion of its address space at Chip Address 0x50; another portion of the memory can be located
at a different address (for example, Chip Address 0x51). The
memory allocation varies, depending on the EEPROM design. When the EEPROM memory is divided, the memory portion that resides at a different chip address must be handled as though it
exists in a separate EEPROM.

So this shows that you can use this extra memory for other user functions but not for selfboot.

The datasheet does not really go into a discussion of program size and hex file sizes. I suspect that you will not run into issues.

Dave T

Julien S Reply
Dec 16, 2019 00:00

Hello Dave,

Thanks for your explanations, it's now clear for me.

I did some tests, I also think 512K is enough for my application.

Next time I will use a SPI EEPROM, just in case !

Best regards,

Julien