Interface Read / Write ADAU1467
Hello together,
we have a question about the Master Control Port Interface Read and Write. Our requirement is that we need to store some values, which are set during runtime of the ADAU1467, persistent on an EEPROM during power off. Our ADAU1467 is running in selfboot mode.
Our hardware is like the following:
- The selfboot EEPROM is an 25AA1024 and connected to the Master Control Port with CS connected to SS_M. This works perfect and we can boot the program from the EEPROM.
- We spent another very small EEPROM 25AA080 and connected it the Master Control Port while CS is connected to MP25.
Our software is setup like below:
- MP25 is set as "slave select for the Master Control Port". We use the "Master Control Port Interface Write" (periodic) to store the values to the EEPROM. This seems to work correct. The only strange part is that the address the "Master Control Port Interface Write" is a bit random. Here comes our first question:
Q1: Is there a way to modify the address?
- To readback the values we use the "Master Control Port Interface Read". During runtime this seems to work but it seems to work not correct after a selfboot. When we check the Logic Trace from the EEPROM communication, we can see why. The READ command reads always at address 0x0000 and only a single byte, while the WRITE command writes 4 bytes to a specific address.
Q2: Is the "Master Control Port Interface Read" a dummy block, as the READ command is also triggered without this block. Is this right?
Q3: What are we doing wrong here, how we can setup the read properly?
Best regards,
Eric
Audio Signal Processors
software
interface write
eeprom
sigmaStudio 4.7
adau1467
interface read
SigmaDSP Audio Processors
selfboot
Show More
Hello Eric,
EricSa said:
Q1: Is there a way to modify the address?
You can find the write address in the params window and modify it in the run time.
Can you please try this below method and see if it works as expected for you?
Here I just used the parameter update block to update the write address and read address. For reading I used the SPI read and set the read address as same as the write address. In SPI read you can choose data length as 4 and read four bytes.
The write address parameter of the interface write module and read address parameter of the SPI read module are overwritten by the parameter update module. where both value (address) are same.
Please find the attached project and screenshot for your reference.
Read_write.dspproj
Please try this project and get back with your results.
Regards,
Harish
Hey Harish,
thanks for your fast answer. We will try this and let you know the result :). But so far this sound perfectly logic to me.
Best regards,
Eric
Hey Harish,
finally we made it to work properly but there where still some modifications necessary. Fort the "SPI Read" we used the "Periodic Read" with external trigger. The normal "Periodic Read" seems not to work correctly as it appends the 0x03 READ CMD with a 0x00. So it writes 0x00 0x03. The "Periodic Read" with external triggers works correct.
But we had to modify the value written to the "READ ADDRESS". Our plan is to write to the address 0xAA. For the "WRITE ADDRESS" in the "Interface Write" this works with the "Parameter Update" block set to 0xAA. But to update the "READ ADDRESS" in the "Periodic Read" we had to set the value to 0xAAAA. It seems that this parameter ignores the the first byte. Is this a known issue?
Anyway, we have it running so I guess we can close the issue.
Thanks a lot for your help.
Hello Eric,
EricSa said:
But to update the "READ ADDRESS" in the "Periodic Read" we had to set the value to 0xAAAA. It seems that this parameter ignores the the first byte. Is this a known issue?
I can't seem to have this issue. Both SPI read trigger version as well as periodic read version seem to work correctly for me, please look at the screenshots below.
SPI Read Ext trigger:
You can see when I try to read 0xAAAA, I'm getting 0xFFFFFFFF as expected.
when I read 0xAA, I'm getting the correct value.
SPI Periodic Read:
It's also getting the correct value from the correct address just like the trigger version.
Note that I haven't probed the SPI lines, I just quickly tested this with the Eval board.
If you still seem to have this issue, could you please attach the project? I can quickly test this here.
Regards,
Harish
Hello Eric
EricSa said:
But to update the "READ ADDRESS" in the "Periodic Read" we had to set the value to 0xAAAA. It seems that this parameter ignores the the first byte. Is this a known issue?
The EEPROM/Flash will only have a 24 bit address and we only support a 16 or 24 bit address. So the upper byte is ignored since it is not needed and cannot be used.
Dave T
Please log in to reply.








