I am writing to the RAM of the AD9957 for direct data playback to the baseband data path and I am experiencing some strange behaviour.
I write to the RAM using the following method:
1. 1. Take AD9957 out of master reset
2. 2. Configure Control Function Register 1 (for single tone mode)
3. 3. Configure Control Function Register 2 (default settings)
4. 4. Configure Control Function Register 3 (default settings)
5. 5. Configure RAM segment Register 0
6. 6. Select RAM segment 0 by appropriately toggling the RAM Trigger pin
7. 7. Write to RAM segment 0 (with IO updates in between word writes)
8. 8. Repeat steps, 5, 6, 7 for RAM segment 1.
9. 9. Select QDUC mode and enable RAM playback by writing to CFR1.
Firstly, is this the recommended method? (The datasheet does not stipulate IO updates during writes to the RAM but I found them to be necessary).
My primary problem is this: I find that the above method works, but not directly after powering up the AD9957. If I run the above method twice at startup, I get success. After some experimentation, I found that if after step 1 above, I programmed the RAM segment registers as per steps (5, 6, 7, 8) above then reset the AD9957, and then continue as before from step 2, I would always get success. It seems I need to configure the RAM segment registers and then reset the device? (Also, all other modes work directly after power up.) This requirement to reset the device can’t be correct. Do you have any advice you can offer in this matter?