Master Control Port Interface read/write i2c
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
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
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:
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!
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
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?
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.
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
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!
Please log in to reply.







