Post Go back to editing

ADAU1467 Dual Master Control Port

I'm starting a new thread based on this post by DaveThib:

"If you absolutely MUST use a SPI EEPROM for fast booting and be able to control some I2C parts then you will have to move over to the Sigma350 parts and it will have to be the 88 pin versions. So the ADAU1463 and ADAU1467 are the parts that you would need. They are capable of splitting off the I2C master port over to two MP pins so both can be used."

My design uses an 88-pin ADAU1467 which selfboots from an SPI EEPROM (this is working), but needs to then configure some I2C-controlled ADC's. ADAU1979s specifically.

I've written my xml sequence file and tried using both boot and runtime master control port I2C write blocks in my schematic, but nothing is happening on I2C bus when the script executes.

I have also set the "Secondary I2C Master Enable" register to use pins MP24/MP25 for the I2C master port.

Pins MP24 and MP25 are set to "Primary Function of the pin" in the ADAU1467 MPx_MODE register settings.

In the ADAU1467 datasheet there is a Secondary I2C Master Register section which states:

"This register allows the master control port to be split such that the I2C signals appear on different pins than the SPI signals. This allows an application to use both master port protocols without external switches. Note that only one of the two protocols can be used at a time. The master port must be reconfigured in software before using a protocol other than the one configured at boot time."

This seems to be my problem, but I can't find any description of how to reconfigure the master port.



Formatting
[edited by: trjeppsdl at 9:45 PM (GMT -4) on 18 Sep 2018]
Parents
  • Hello trjeppsdl,

    Sorry for the delay.

    There is one thing that is confusing in the GUI and that is that you cannot read the entire text of the setting for the "Secondary I2C Master Enable" button. So it is difficult to know what each setting is for. So to split off the I2C onto MP24 and MP25 the button must be RED. So that is one quick thing to check.

    Then as you saw the MP24 and MP25 pins have to be set to the primary function and it seems that you have it set properly.

    The configuration happens in SigmaStudio. It writes the code to do that so it is not something you need to do.

    Now there are some issues we found with this new part that are related to the selfboot feature. We are in the process of preparing a document to outline some of this but it is not complete at this time.

    First is that you should disable the I2C split when writing the selfboot EEPROM through the DSP.

    Then the next issue is that the selfboot program seems to change the setting. So you need to place a bit of code in your program to turn on the I2C split. You will see this in the example project where we are writing a "1" to address 0xF5F0.

    The example project also boots up a codec using the I2C so you can see this example. However, it is an AD1937 not the 1977 but it may help.

    Here is the file:

    Program All Analog IO to 192 kHz.zip

    Thanks,

    Dave T

Reply
  • Hello trjeppsdl,

    Sorry for the delay.

    There is one thing that is confusing in the GUI and that is that you cannot read the entire text of the setting for the "Secondary I2C Master Enable" button. So it is difficult to know what each setting is for. So to split off the I2C onto MP24 and MP25 the button must be RED. So that is one quick thing to check.

    Then as you saw the MP24 and MP25 pins have to be set to the primary function and it seems that you have it set properly.

    The configuration happens in SigmaStudio. It writes the code to do that so it is not something you need to do.

    Now there are some issues we found with this new part that are related to the selfboot feature. We are in the process of preparing a document to outline some of this but it is not complete at this time.

    First is that you should disable the I2C split when writing the selfboot EEPROM through the DSP.

    Then the next issue is that the selfboot program seems to change the setting. So you need to place a bit of code in your program to turn on the I2C split. You will see this in the example project where we are writing a "1" to address 0xF5F0.

    The example project also boots up a codec using the I2C so you can see this example. However, it is an AD1937 not the 1977 but it may help.

    Here is the file:

    Program All Analog IO to 192 kHz.zip

    Thanks,

    Dave T

Children
No Data