Post Go back to editing

Parameter updates with Microcontroller

Please excuse me if this post sounds a little silly, I am a real newbie and following the procedure to boot up with a microcontroller seems like a daunting task to me. Is a there a way to boot up with EEPROM with sigma studio and then use microcontroller only to update or change parameters? Lets say I want to turn/off  a simple sine wave output to DAC0: in the capture window (output) I see 12 bytes of data is sent (see attachment). When I probe SCL and SDA lines to watch what happens on an oscilloscope I see lot more information is being sent than what is shown in the capture window. Can you please provide a simple explanation on what I need to do simply make small parameter changes to an already loaded program. 

I was hoping to load the program on  EEPROM of my 1701 minizeval board (and my own custom 1701 board) with SigmaStudio and then use Arduino to send commands to make simple parameter changes by emulating what is shown in the capture window (preferably over SPI).

 

Thanks.

  •      Hello,

         Working with SigmaStudio is like a walk in a beautiful park -- until you say the word microcontroller, then the ground opens up and you fall into the "digital snake pit" underneath.  Once you find your way down there, you'll master booting and controlling your DSP as have many before you.  I'm still not very comfortable down there either.  In spite of this (or perhaps because of it!) here's a bit of help:

        Size of write sequences:  As you found out, there's more activity on the scope than the raw data suggests.  Notice in the capture window that these are safeload writes.  Writing parameters directly to a running DSP's memory causes awful noises, the safeload method avoids that.  It does, however, involve more overhead, reflected in your scope trace.  Safeload is described on pages 30 & 37 of the ADAU1701 data sheet; you can also search for its many references in this forum.  Also, although the DSP takes 28-bit parameters padded to four bytes, actually each of them are five bytes long.  There needs to be a dummy byte in the middle, for reasons described at https://ez.analog.com/thread/6429

        Booting the -1701:  In theory it's possible to self-boot and change to uC control afterward, yet this approach appears roundly discouraged in the forum -- see for example, https://ez.analog.com/message/14318#1431
    Thus, I also suggest that you boot the -1701 from your micro.  It may not be as difficult as it first appears.  ADI's orthodox boot method involving C header files and such is designed to boot any SigmaDSP -- fortunately this is a bit more than what some older models need.  At the risk of espousing heresy,  here's a primitive boot procedure:

    • Link-compile-download your design, ignore the error box if no hardware is presently connected.  The Capture Window shows only a few block writes, unlike the dozens that more powerful SigmaDSPs need -- this makes the primitive boot method possible.

    • Select Export System Files from the Actions menu, save them in your project's folder.
    • Open the resulting TxBuffer_IC1 file with Notepad.  Copy to clipboard all the lines between commented lines as shown below -- these are your DSP program instructions.

    • Paste these lines into a byte constant (or equivalent) in your uC source code.
    • Do the same with the  Param  and  IC 1.HWConfiguration blocks.  You now have  byte constants for program, parameters, and HW config in your uC code.

    If anyone who has hooked up an Arduino to a SigmaDSP is willing to jump in here, that would be appreciated (I've only used PICs).  Basically you have your Arduino get the DSP's attention over the SPI bus and set up its program memory's base address (0x0000).  Write a loop that block-writes all 5120 bytes to the DSP.  Do the same for the parameters (4096 bytes) and HW controls (24 bytes).  Finally, write 0x00, 0x1C to your 1701's core control register at address 0x081C to enable the DSP core (must maintain core!).

         Best regards,

         Bob

  • Once again, thanks for the very thorough and helpful guide, and thanks especially for linking to the other source content. I will turn this post into an FAQ (tomorrow when I go to the office)!

  • This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

    Thank you,
    EZ Admin