AD9102
Production
The AD9102 TxDAC and waveform generator is a high performance digital-to-analog converter (DAC) integrating on-chip pattern memory for complex waveform...
Datasheet
AD9102 on Analog.com
Hello,
I am trying to access the SRAM on an AD9102 and I’m having some issues. All of my reads for the SRAM return 0x0000 and the other questions in this forum haven’t enabled me to successfully read/write.
When I configure the device, I set the following registers:
When I try to load 4 memory locations into the device, I’m use the following sequence:
This seems to be correct and I can clearly see this going into the device using a logic analyzer. However, when I try to read the memory, I only receive 0’s. I am using the following sequence to read:
My setup uses the AD9102-EBZ and I am driving the signals with an external microprocessor. ( The SPI signals have been disconnected from the microcontroller located on the dev board.) Since I am able to read/write the registers, I’m certain that the device is hooked up properly and the system is properly functioning, but I can’t seem to get the SRAM to respond. Any suggestions?
Hi,
Please see pseudocode below.
1. Set initial values of IOs.
○ RESET - logic high
○ TRIGGER - logic high
○ CS - logic high
2. Set SPI frequency and mode.
○ Clock is logic low when idle or leads with a rising edge and trails with a falling edge.
○ Data logic level should be valid during the clock rising edge and before the clock falling edge.
3. Pulse RESET to logic low then high to reset register values.
4. Proceed with register read or write. (AD9102: page 18, AD9106: pages 22-23 of datasheet)
a. If loading a pattern from SRAM, write data on SRAM registers first. (AD9102: page 23, AD9106: page 27 of datasheet)
i. To write data: Enable MEM_ACCESS bit in 0x1E register. Write left-justified data to SRAM registers, 0x6000 to 0x6FFF. Disable MEM_ACCESS bit.
ii. To read data: Enable BUF_READ and MEM_ACCESS bits in 0x1E register. After reading data from SRAM registers, disable BUF_READ and MEM_ACCESS bits.
b. Write on SPI registers. Update last bits of registers 0x1E (RUN bit) and 0x1D (RAMUPDATE bit) at the end of the write sequence.
Best regards,
Shine
Hello Shine, thank you for the assistance.
Following these steps, I am still unable to write and then read to the SRAM.
If it is helpful, I can provide CVS files that show the exact timing of the signals.
Hi Chad,
Were you able to successfully write data to and read from the SRAM?
Best regards,
Shine
Hello,
Yes, I was finally able to get get the read/write to the SRAM after a lot of experimentation. I ended up having to re-write my functions to Write the data in reverse (because the counter decrements) and to Read the SRAM data 16-bits at a time (because the counter does not change).
Do you know if they are planning to release an updated datasheet that fixes all of the typos and misinformation?
Hi Chad,
There is a plan, yes. But we'll be prioritizing creation of new eval board user guide with updated information on the SPI interface.
Thank you for the recommendation.
Best regards,
Shine
Hello CGraham,
i also facing same issue. i want to generate waveforms using sram... i post my issue here, Write, Read and generate waveform with SRAM od AD9106 - Q&A - High-Speed DACs - EngineerZone (analog.com).
could you please provide me with detailed step-by-step instructions, I understand that your has extensive expertise in working with these devices, and I am confident that your guidance will help me overcome the challenges I am currently facing.
If possible then can you share me c/cpp code for that or any register values for set sram.
Regards,
Dipak
hello shineC,
please can you tell me proper procedure for write and read sram data. and values for set sram mode in registers.... and what is reading address of sram.
Hello,
Please refer to this page https://wiki.analog.com/resources/eval/dpg/eval-ad9106
Regards,
Shine
Hello,
Please refer to this page https://wiki.analog.com/resources/eval/dpg/eval-ad9106
Regards,
Shine