Post Go back to editing

ADAU1761 safeload

Hello,

in the datasheet of adau1761 in the "SOFTWARE SAFELOAD"

there is a table with the address of safeload ram.

I have some trouble to understand the behavior of address 0x0000 " Modulo RAM size"

in the datasheet "Address 0x0000, wich controls the module RAM size is set by SigmaStudio and

is based on the dinamic address generator mode of the project".

in a FW implementation what is the value that I have to write in this register?

What is the procedure to write a safeload parameter in the ram?

Have I to WRITE PARAM and WRITE ADDRESS and WRITE NUMBER OF WORDS ?

  • a little piece of sigmastudio output

    /* Module FREQCH1 - DC Input Entry*/
    #define MOD_FREQCH1_COUNT                              1
    #define MOD_FREQCH1_DEVICE                             "CODEC"
    #define MOD_FREQCH1_DCIALG2_ADDR                       12
    #define MOD_FREQCH1_DCIALG2_FIXPT                      0x00053F7C
    #define MOD_FREQCH1_DCIALG2_VALUE                      SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.041)
    #define MOD_FREQCH1_DCIALG2_TYPE                       SIGMASTUDIOTYPE_FIXPOINT

    if I understand

    address 0x0000     "Modulo RAM Size"   --->   1

    address 0x0001      address where to write 0x00053F7C

    address 0x0006     Target address           ---->   (12 - 1)

    address 0x0007    Trigger (the last write)  ---->  1

    Is it correct ?

  • Last question

    in the System implementation section of sigmadsp help file

    the packet size is 5 bytes for safeload area.

    Have I to send 4 or 5 bytes with adau1761 ?

  • SigmaStudio's compiler outputs the value that you should be writing to set the modulo RAM size. This will just be the first address in the program RAM data; you do not need to write a special register for this setting.

    The safeload procedure for the ADAU1761 is described in the second column on page 48 of the datasheet.

  • This is correct except for the modulo RAM size. This value does not come from this output block, but rather is just set in the program RAM data. The first word in the program RAM table is written to address 0, which sets the modulo size. Typically, this value will be 0x00, 0x00, 0x00, 0x00, 0x00.

  • The parameter RAM word length on the ADAU1761 is 4 bytes, so you just need to fill these 4 bytes for safeload. On previous SigmaDSP parts, such as the AD1940, safeload was handled through dedicated registers, which could be 5 bytes wide. This is why the SigmaStudio help file mentions 5 bytes for safeload.

  • The last doubt:

    what is the format I have to use to

    write into address 0x0007 TRIGGER register?

    if I have 3 data to write I have to write 0x0003 or the number in format 5.3 ?

  • You should write an integer value to parameter RAM address 0x0007 to trigger the safeload. This means that to safeload one word, you should write 0x00 0x00 0x00 0x01 to address 0x0007, or in your example you would write 0x00 0x00 0x00 0x03 to safeload three words into the parameter RAM.

  • 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