Post Go back to editing

AD9102 Trigger and UPDATE bit (0x1D)

Hello everybody,

tried to send the registers which are in the example6.regval to FPGA, after that, I sent 0x01 to register 0x1D and then set Trigger high and low. But I have no Sine wave from DAC.

1- Should I repeat UPDATE bit (0x1D) for the trigger as well?

2- Is any specific time for trigger needed?

3- Is any specific time for UPDATE bit (0x1D) needed?

4- For Sine wave from DDS, should I write some data into the RAM? 

5- How can I read the sent data (from FPGA) through AD9102 software?

Regards,

Akbar



DDS
[edited by: akbar at 2:54 PM (GMT 0) on 30 Apr 2019]
  • Dear Will,

    to WRITE,

    I do the following:

    1. send WRITE command and address  "0b1000 0000 0000 0000through SDIO. I would like to start from address '0' to 007fh. (sending same values from example6.regval)

    2. send data (to address '0') (0b0000 0000 0000 0000) through SDIO.

    So I do like that only for the first address (which is '0') and for the next address, address 1, I do not send again the WRITE command and the corresponding address, but only I do send the next data, data 1, through SDIO, referring to the data sheet:

    " The SPI port automatically increments the register address if CS stays low beyond the first data-word allowing writes to a set of contiguous addresses. "

    I guess I did it not correct ?

    3. Finally, I do writes a '1' to the UPDATE bit in the RAMUPDATE register (RAMUPDATE, Address 0x1D). Again,  send WRITE command and address through SDIO, then send data (to address '0x1D') through SDIO,

    Regards,

    Akbar

  • And you apply it through XP3? How do you apply trigger and reset?

  • Hello Will,

    Yes. 

    Regarding reset, I do nothing and trigger, as I mentioned previously, through TP30, I do it manually. Set to high (+) and low (-).  

  • I suggest disconnect RESET_B from micro-controller by removing R2. That way you also have the option of applying hardware reset without fight again uC.

    • Dear Will,

    so what about trigger ?

    and the method which I write data from 0x00 to 0x007F, was it correct?

    Regards,

    Akbar

  • Dear Akbar,

    For the trigger you want to make sure that jumper jp1 is open.

    The way you write the SPI, you want to bring CS_B high after writing reg0x0, and low again before writing reg0x1, and leave it low for the remainder of the SPI writes.

    If the SPI writes were not successful, you may also want to try writing each register separately (CS_B low, command, data, CS_B high).

    Regards,

    Will

  • Dear Will,

    surprised hearing that!

    You suggest "bring CS_B high after writing reg0x0, and low again before writing reg0x1, and leave it low for the remainder of the SPI writes."

    So why it has not been mentioned in the datasheet? Or is it a suggestion in this case?

    Regards,

    Akbar

  • Dear Akbar,

    The datasheet did mention that but not in great detail. According to page 18 of the datasheet, "The SPI port automatically increments the register address if CS_B stays low beyond the first data-word allowing writes to or reads from a set of contiguous addresses." If you don't bring CS-B high after writing reg0x0, it may interpret the next write command as data for reg0x1.

    Since reg0x0 is the configuration register, it is a good idea to finish the write by bring CS_B high, before proceeding to other registers.

    Regards,

    Will

  • Dear Will,

    Thank you for your reply.

    According to page 18 of the datasheet and as I understood, I brought CS_B low and kept it low, sent '0' [15] through SDIO as write command and '0' [14:0] as the address of Reg0x00. Then I sent the second byte '0' as data [15:0].

    After that, for the second register and second data (Reg 0x01 to 0x7F), I did not send the next address, because SPI port automatically increments the register address if CS_B stays low.

    Finally, for RAMUPDATE, Address 0x1D, I brought CS_B low, sent write command, address of Reg0x1D [14:0], then 0x01 as data for Reg0x1D.

    Regards,

    Akbar

  • Dear Akbar,

    I think what you are doing is fine. Just make sure that you can read back the correct values. Except the RAMUPDATE bit of course, since it is self clearing.

    Regards,

    Will