How do I use the Interface Read / Interface Write and Write-Back Trigger?

This guide is for the ADAU1401A, ADAU1401, ADAU1701, and ADAU1702. The hardware references are specifically for the EVAL-ADAU1401EBZ or EVAL-ADAU170XEBZ.

The interface read / interface write for an external EEPROM requires a very specific data file to be downloaded to the EEPROM, and the write-back trigger requires a specific set of steps. The current version of SigmaStudio (3.7.x, April 2012) cannot generate the proper EEPROM data file automatically, so the user must manually edit the file. The steps to do so are listed in this post.

  • In the hardware configuration tab, add an E2Prom IC to the USBi Interface.

  • Create a project that includes some kind of GPIO interface cell with Interface Read and Interface Write cells.

  • Link-Compile-Download the project to the evaluation board.
  • After link-compile-downloading, click the top line of the capture window and then shift-click the bottom line to select all lines.

  • Click the << symbol in the upper-right corner of the Capture window to show the Sequencer window.

  • Click-drag the highlighted rows from the Capture window over to the sequencer window.

  • Click the "Export Sequence Data..." button.

  • Under "Save as type," select the new EEPROM(ascii) (*.hex) format to generate a .hex image file. This lets you save many different image files for different projects.

The problem now is that the generated EEPROM hex file does not contain the header as specified in the ADAU1401/ADAU1701 datasheet. Here it is, for reference. The header consists of the first 64 bytes (8 lines of 8 bytes):

For our purposes, this would be the proper set of data:

0x01 , 0x00 , 0x05 , 0x00 , 0x08 , 0x1C , 0x00 , 0x58 ,

0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 ,

0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 , 0x03 ,

0x03 , 0x03 , 0x01 , 0x00 , 0x23 , 0x00 , 0x08 , 0x00 ,

0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,

0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,

0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,

0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,

(Note: the 0x58 value may change depending on your core register settings)

  • Open the generated EEPROM hex file in a text editor like UltraEdit.

  • The header is missing from this file, so paste it in prior to the first line of data. The result should have the header as the first 8 lines, with the remainder of the image following afterwards. Here is the result, with the inserted header data highlighted in blue:

Save this file. Now we are ready to download the image to the EEPROM.

  • Connect LK7 "WP" on the evaluation board to allow the EEPROM to be written via the USBi.
  • Click the IC 2 - WinE2PromLoader tab in SigmaStudio's hardware configuration view.

  • Click in the upper white rectangle and then locate the .hex file you just saved from the sequencer.

  • Click the download button to download this data to the EEPROM on your target board.

  • Wait until the download completes. There should be about 8000 addresses written.

  • Remove LK7 "WP". Then press the S1 "/RESET" button to reset the board. The chip will self-boot from the EEPROM.
  • Use your GPIOs to verify the functionality of the project. In my project, I used pushbuttons to control an Up/Down index cell.
  • When you want to save the settings using write-back, place a link on LK19 "WBTRIG" to trigger the write-back.
  • Wait a brief moment, then remove the link from LK19 "WBTRIG". By now, the write-back should be complete.
  • Press the S1 "/RESET" button again to initiate another self-boot. This time, the GPIO's index should have been saved and properly read-back from the interface data stored on the EEPROM.

A few notes:

  • We are planning on updating the EEPROM generation code to make this process automated.
  • Currently, the EVAL-ADAU1701MINIZ does not have the proper WBTRIG circuit to allow the write-back to take place.
  • The example project attached can be used as a guide for working with the interface registers and write-back function. In order to use it, you will need the engineering board (either EVAL-ADAU1401EBZ or EVAL-ADAU1701EBZ) and the included GPIO daughter board. The GPIO daughter board should be set up as follows:
    • MP0 set to LED (JP9)
    • MP1 set to LED (JP10)
    • MP4 set to PUSH (JP13)
    • MP5 set to PUSH (JP14)
  • Hi BrettG, thanks for your post.

    I am using the ADAU1401A and I'm not sure if the 0x00 and 0x58 values are the core control register data I should be using. In the datasheet it shows 0x00 and 0x40 so I guess these are the values I have to write in the .hex file and not 0x00 and 0x58 , right ?

    thanks in advance

  • PROBLEM SOLVED ! I've just downloaded SigmaStudio 3.11 and now it works.



  • Hi David,

    Glad that your problem is solved! Keeping up with the latest version is very important. Please let us know if you have any other questions

    Best regards,


  • I'm working with the 1452 eval board.  I have GPIO working to control volume.  What I want to do is have the last volume setting persistent after a power cycle.  It seems that the current beta version of SigmaStudio is still lacking the ability to create the correct eeprom code to facilitate this.  My two questions are:

    A)  Does this tutorial apply to the 1452 chip as well?

    B)  It seems that even with this customized hex file there is still some kind of manual switch that has to be engaged to execute the write of data to the eeprom.  Is there not a way to allow the new value to be written as soon as it is applied to the dsp? 

    B-2)  Is there at least a way to assign a specific index line as the boot up value in the pushbutton volume block?

  • HI Warren:

    This tutorial does not apply to the 145x family of ICs

    We are looking into porting the interface functionality into the 145x family of IC (and future derivatives) using the new Master Control Port built into these new family of parts.

    Please be patience as we introduce them over the next couple of months.