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

Master Control Port Interface read/write i2c

SigmaDSP & SigmaStudio op-electronics Mar 3, 2017 00:00 8 replies Original on forum ↗
Subscribe
op-electronics Question
Mar 3, 2017 00:00

Hello,

i'm using a Microchip 24aa1025 i2c eeprom, i can selfboot programs from it without a problem but i'm having troubles to read/write from master control port interface.

Eeprom datasheet says that:

This device has an internal addressing boundary limitation that is divided into two segments of 512K bits. Block select bit ‘B0’ to control access to each segment.

Read=1

Write=0

Since adau1452 can only selfboot with address 0x50

When i write to eeprom through interface write with address 0x50 the dsp doesn't selfboot on next power-up. I know that adau1452 selfboot happens only at 0x50 so i can't hard set A0 and A1 bits to different values. The other usable address for interface write should be 0x54 (B0=1 which would write to the second 512Kb memory block) but despite the adau1452 selfboots correctly nothing is read from interface read.

I just want to selfboot a program and write/read from interface register from same eeprom.

What do you think? Should i change eeprom type? Did you test the i2c master interface with any particular device?

Thank you for your support

Omar

Audio Signal Processors

adau1452

SigmaDSP Audio Processors

464626359cb3e367c8bdf623d3599788.png
464626359cb3e367c8bdf623d3599788.png
464626359cb3e367c8bdf623d3599788.png-620x197.png
464626359cb3e367c8bdf623d3599788.png-620x197.png
op-electronics Reply
Mar 3, 2017 00:00

Update:

i tried to read the eeprom directly from usbi and i could read succesfully what has been written through interface write both using eeprom block at address 0x50 and 0x54.

Then i did the following test:

- burn the eeprom with latest compilation through dsp (adau1452 selfboots fine)

- read the eeprom content through usbi:

- write a value (394) through interface write at address 0x50 (adau1452 doesn't selfboot anymore)

- read the eeprom content:

As you can see, starting from address 0x2B i can find the value written through interface write (0x18A). However adau1452 doesn't selfboot anymore with this eeprom content.

So, am i wrong trying to selfboot and do write/read interface operations from same eeprom? Should i use 2 devices one for selfboot and one for interface r/w? Or it's just the eeprom i'm using which is not suited?

When using address 0x54 for interface write i can succesfully write to second 512K block of eeprom and selfboot the adau correctly but i don't get anything back from interface read. Could be that adau1452 i2c interface doesn't work for eeprom bigger than 512K?

Let me know your opinion! Thank you once again

Omar

87cf2f3e34c0989c9f5da8d0a4916aa6.png
87cf2f3e34c0989c9f5da8d0a4916aa6.png
87cf2f3e34c0989c9f5da8d0a4916aa6.png-385x472.png
87cf2f3e34c0989c9f5da8d0a4916aa6.png-385x472.png
4211e864a0091561b5e5558ebb07d2d7.png
4211e864a0091561b5e5558ebb07d2d7.png
4211e864a0091561b5e5558ebb07d2d7.png-331x489.png
4211e864a0091561b5e5558ebb07d2d7.png-331x489.png
op-electronics Reply
Mar 4, 2017 00:00

More tests:

i can read from eeprom using I2C Read block both at 0x50 than 0x54, my conclusion is that Interface write works but Interface read doesn't work:

14bd4290f8a69a5098e6c4c66e44786f.png
14bd4290f8a69a5098e6c4c66e44786f.png
14bd4290f8a69a5098e6c4c66e44786f.png-1374x736.png
14bd4290f8a69a5098e6c4c66e44786f.png-1374x736.png
aud_eng Reply
Mar 16, 2017 00:00

op-electronics,

Did you figure this out? I also have a similar setup. I'd like to interface a slave MCU to receive messages from the ADAU1452MINIZ kit via a GPIO trigger. Looks similar to what you are doing.

Thanks!

op-electronics Reply
Mar 16, 2017 00:00

Hey aud_eng,

not really, i reported a bug for Master control port interface read which should be fixed in the next SigmaStudio release.

For your application i guess it would be better to use slave control port to interface the mcu.

Omar

RitchRock Reply
Mar 17, 2017 00:00

Thanks for posting this. Curious - did you choose to use an I2C selfboot EEPROM vs SPI because you are controlling other ICs with I2C from the master control port? If so, does it work OK? I'm trying to decide if I want to go this route, but not being able to read/write values to non-volatile memory might be a deal-breaker. Did you get any suggestion as to when the bug might be fixed?

op-electronics Reply
Mar 17, 2017 00:00

Hey RitchRock,

with this application i i went I2C cause i need to store data when a GPIO is triggered and then recall the data at startup. Master Control Port Interface Read/Write can do this but it only works with I2C. I don't know if there will be a SPI release too, the configuration button on the block itself is labeled I2C SPI so i presume it's going to be available in an upcoming release.

Unfortunately, while Master Control Port Interface Write works, Interface Read doesn't yet. I reported this as a bug which you can follow it here:

https://ez.analog.com/thread/92888

I didn't try multiple slave devices yet but it can be done both with I2C than SPI.

RitchRock Reply
Mar 17, 2017 00:00

Gotcha and thanks for reporting that bug! I will follow the thread.

This question will probably show my inexperience with SigmaStudio, however it's important to me because I may use I2C like yourself in my system - How come you can't just use the the interface read/write blocks, under GPIO conditioning? Why do you even need to use the Master Control Port read/write? My understanding is they store data in one of 8 registers in the EEPROM. I would assume it uses the EEPROM address and info you setup in the hardware configuration tab, so it must use either I2C or SPI. There are several examples (like on page 8) of using these blocks in the following document I linked. I could definitely be missing something, like for example, this document is intended for the ADAU1701, however the blocks are available to me in SigmaStudio for the ADAU1452.

http://www.analog.com/media/en/technical-documentation/application-notes/AN-951.pdf

op-electronics Reply
Mar 28, 2017 00:00

Master Control Port is only available for ADAU145x as i'm aware, sure not for ADAU1701 which has no hardware implemention for it.

There are several blocks which perform different Master Control Port tasks. They can be found under Master Control Port folder or in IO>Master Control Port.

The one i asked for are those related to MCP Interface W/R (under io>mcp). The purpose of MCP Interface W block is to store a value in the external eeprom (triggered by a GPIO, when value changes or periodically) . The purpose of MCP Interface R block is to recall the stored value at boot time.

In the meantime Venkatesan replied that MCP Interface Read block will be fixed for next release (mid May) and support for SPI will be included!