Post Go back to editing

AD9910 - Loading the RAM data files without Eval-board

Thread Summary

The user seeks to load RAM data files for a frequency sweep from 250 MHz to 350 MHz on an AD9910 device without an evaluation board. The solution involves using SPI to write start and end addresses to RAM Profile registers, selecting the profile via profile pins, and writing 32-bit frequency words to SPI address 0x16. Key clarifications include setting CFR3[15]=1 to bypass the REFCLK divide-by-2 block and verifying RAM data with RAM Enable set to 0 or 1.
AI Generated Content

 Although it would be a fundamental question, let me ask one question. I want to know how to load the RAM data files without evaluation board.

 Above all, I want to introduce my procedures for loading the RAM data files with the evaluation board and software which were provided by Analog Device. Using evauation board and software, I successfully loaded the RAM data files and I could easily generate some ramp signals which I wanted. To be specific, several detailed conditions are mentioned below.

 - Fsystemclk = 1GHz

 - Start frequency = 250 MHz

 - End frequency = 350 MHz

 - frequency step = 0.1 MHz

 => RAM data files : 250MHz, 250.1MHz, 250.2MHz ~ 352 MHz, 352.1 MHz, 352.2 MHz

                                (# of data = 1024, I attached RAM data files which consists of Hex)

 I loaded these RAM data files using RAM I/O Window in the evaluation software. And then, Using Profiles Window, I designated each RA segment by setting Beginning and Final Address, step rate, and mode control.

 

 What I really want to know about is how I can load the RAM data files without Evaluation software and board. I want to know the similar procedure as I loaded attched text files in the RAM I/O Window when I used Eval-software. I think I might have to use SPI control pin such as SDIO, SCLK, I/O_RESET pins. Could you please let me know the detailed process for loading RAM data files?

250_350MHz.txt.zip
Parents
  • hi 

    i try to operate ram mode or DRG mode without evaluation board but i failed.i tried your way above by SPI protocol using Arduino uno "micro-controller" to Operate RAM mode. my program in steps :

    1- CFR1......... {0x80,0x00,0x00,0x00} ram enable=1   to make the profile0 to be Ram-profile not single tone-profile         

    2-CFR2.........default {0x00,0x40,0x08,0x20}

    3-CFR3........ {0x1D,0x3f,0x41,0x32}......1GSbps

    4-RAM Profile registers.........{0x00,0x00,0x0a,0xfa,0x00,0x00,0x00,0x21} Write the desired start ,end and rate                                                               addresses like above adresses from 250MHz to 350MHz (0000000000 to 11 1110                                                              1000) and the rate (0000 0000 0000 1010).

    5-MASTREST

    6-CS.....LOW

    7- write the CFR1 data from the arduino to the ad9910

    8-Apply the profile pins to select the Ram-profile0........digitalWrite(prof0,LOW);
                                                                                           digitalWrite(prof1,LOW);
                                                                                           digitalWrite(prof2,LOW);

    9-write the Ram-profile0 data from the arduino to the ad9910

    10-update 

    11- write the CFR2 data from the arduino to the ad9910

    12-update 

    13-write the CFR3 data from the arduino to the ad9910

    14-update 

    15-CFR1......ram enable=0 to Write the data to the 0x16 RAM

    16-update

    17- Write the data to the 0x16 Ram like this.............tx_byte(0x16);
                                                                                      for(f=0;f<1000;f++)
                                                                                       {
                                                                                        value = (unsigned long)(round((x*pow(2,32))/1000));....FTW eq.
                                                                                        x=x+0.1;........x=250MHz +0.1 Step
                                                                                        tx_byte(value);......take first byte & transfer it
                                                                                        tx_byte(value>>8);......take second byte & transfer it
                                                                                        tx_byte(value>>16);......take third  byte & transfer it
                                                                                        tx_byte(value>>24);......take the fourth  byte & transfer it

                                                                                        }

    18-update

    19- CFR1......ram enable=1 to Operate the play-back mode

    20-update

    21-CS.....HIGH

    ////////////////////////////////////////////////////////////////////////////CODE/////////////////////////////////////////////////////////////////////////////////////////

    #define prof0 0
    #define prof1 1
    #define prof2 2
    #define MASTREST 5
    #define upd 6
    #define CS 10

    #include <SPI.h>

    unsigned char cfr1[]={0x80,0x00,0x00,0x00};                       //Step_1
    unsigned char cfr2[]={0x00,0x40,0x08,0x20};                       //Step_2
    unsigned char cfr3[]={0x1D,0x3f,0x41,0x32};                        //Step_3
    unsigned char profile0ram[]={0x00,0x00,0x0a,0xfa,0x00,0x00,0x00,0x21};                     //Step_4


    void setup()
    {
    unsigned int k,m,f;
    unsigned long value;
    float x=250;
    SPI.begin();
    pinMode(MASTREST,OUTPUT);
    pinMode(upd,OUTPUT);
    pinMode(CS,OUTPUT);
    pinMode(prof0,OUTPUT);
    pinMode(prof1,OUTPUT);
    pinMode(prof2,OUTPUT);


    digitalWrite(MASTREST,HIGH);                                                             //Step_5
    digitalWrite(MASTREST,LOW);                                                              

    digitalWrite(CS,LOW);                                                                             //Step_6


    tx_byte(0x00);                                                                                       //Step_7
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);



    digitalWrite(prof0,LOW);                                                                       //Step_8
    digitalWrite(prof1,LOW);
    digitalWrite(prof2,LOW);

    tx_byte(0x0e);                                                                                      //Step_9
    for(m=0;m<8;m++)
    tx_byte(profile0ram[m]);


    digitalWrite(upd,HIGH);                                                                       //Step_10
    digitalWrite(upd,LOW);


    tx_byte(0x01);                                                                                     //Step_11
    for(m=0;m<4;m++)
    tx_byte(cfr2[m]);

    digitalWrite(upd,HIGH);                                                                      //Step_12
    digitalWrite(upd,LOW);

    tx_byte(0x02);                                                                                    //Step_13
    for(m=0;m<4;m++)
    tx_byte(cfr3[m]);

    digitalWrite(upd,HIGH);                                                                    //Step_14
    digitalWrite(upd,LOW);

    cfr1[m]=0x00;                                                                                    //Step_15
    tx_byte(0x00);
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);

    digitalWrite(upd,HIGH);                                                                      //Step_16
    digitalWrite(upd,LOW);

    tx_byte(0x16);                                                                                     //Step_17
    for(f=0;f<1000;f++)
    {
    value = (unsigned long)(round((x*pow(2,32))/1000));
    x=x+0.1;
    tx_byte(value);
    tx_byte(value>>8);
    tx_byte(value>>16);
    tx_byte(value>>24);

    }
    digitalWrite(upd,HIGH);                                                                              //Step_18
    digitalWrite(upd,LOW);

    cfr1[m]=0x80;                                                                                              //Step_19
    tx_byte(0x00);
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);

    digitalWrite(upd,HIGH);                                                                               //Step_20
    digitalWrite(upd,LOW);



    digitalWrite(CS,HIGH);                                                                               //Step_21
    }

    void tx_byte(unsigned char tx_dat)                                      // Function for transfer data from Arduino to AD9910
    {
    SPI.transfer(tx_dat);
    }

    void loop()
    {

    }

                                                                                            

    Please help me in my project.....thank you ^_^

Reply
  • hi 

    i try to operate ram mode or DRG mode without evaluation board but i failed.i tried your way above by SPI protocol using Arduino uno "micro-controller" to Operate RAM mode. my program in steps :

    1- CFR1......... {0x80,0x00,0x00,0x00} ram enable=1   to make the profile0 to be Ram-profile not single tone-profile         

    2-CFR2.........default {0x00,0x40,0x08,0x20}

    3-CFR3........ {0x1D,0x3f,0x41,0x32}......1GSbps

    4-RAM Profile registers.........{0x00,0x00,0x0a,0xfa,0x00,0x00,0x00,0x21} Write the desired start ,end and rate                                                               addresses like above adresses from 250MHz to 350MHz (0000000000 to 11 1110                                                              1000) and the rate (0000 0000 0000 1010).

    5-MASTREST

    6-CS.....LOW

    7- write the CFR1 data from the arduino to the ad9910

    8-Apply the profile pins to select the Ram-profile0........digitalWrite(prof0,LOW);
                                                                                           digitalWrite(prof1,LOW);
                                                                                           digitalWrite(prof2,LOW);

    9-write the Ram-profile0 data from the arduino to the ad9910

    10-update 

    11- write the CFR2 data from the arduino to the ad9910

    12-update 

    13-write the CFR3 data from the arduino to the ad9910

    14-update 

    15-CFR1......ram enable=0 to Write the data to the 0x16 RAM

    16-update

    17- Write the data to the 0x16 Ram like this.............tx_byte(0x16);
                                                                                      for(f=0;f<1000;f++)
                                                                                       {
                                                                                        value = (unsigned long)(round((x*pow(2,32))/1000));....FTW eq.
                                                                                        x=x+0.1;........x=250MHz +0.1 Step
                                                                                        tx_byte(value);......take first byte & transfer it
                                                                                        tx_byte(value>>8);......take second byte & transfer it
                                                                                        tx_byte(value>>16);......take third  byte & transfer it
                                                                                        tx_byte(value>>24);......take the fourth  byte & transfer it

                                                                                        }

    18-update

    19- CFR1......ram enable=1 to Operate the play-back mode

    20-update

    21-CS.....HIGH

    ////////////////////////////////////////////////////////////////////////////CODE/////////////////////////////////////////////////////////////////////////////////////////

    #define prof0 0
    #define prof1 1
    #define prof2 2
    #define MASTREST 5
    #define upd 6
    #define CS 10

    #include <SPI.h>

    unsigned char cfr1[]={0x80,0x00,0x00,0x00};                       //Step_1
    unsigned char cfr2[]={0x00,0x40,0x08,0x20};                       //Step_2
    unsigned char cfr3[]={0x1D,0x3f,0x41,0x32};                        //Step_3
    unsigned char profile0ram[]={0x00,0x00,0x0a,0xfa,0x00,0x00,0x00,0x21};                     //Step_4


    void setup()
    {
    unsigned int k,m,f;
    unsigned long value;
    float x=250;
    SPI.begin();
    pinMode(MASTREST,OUTPUT);
    pinMode(upd,OUTPUT);
    pinMode(CS,OUTPUT);
    pinMode(prof0,OUTPUT);
    pinMode(prof1,OUTPUT);
    pinMode(prof2,OUTPUT);


    digitalWrite(MASTREST,HIGH);                                                             //Step_5
    digitalWrite(MASTREST,LOW);                                                              

    digitalWrite(CS,LOW);                                                                             //Step_6


    tx_byte(0x00);                                                                                       //Step_7
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);



    digitalWrite(prof0,LOW);                                                                       //Step_8
    digitalWrite(prof1,LOW);
    digitalWrite(prof2,LOW);

    tx_byte(0x0e);                                                                                      //Step_9
    for(m=0;m<8;m++)
    tx_byte(profile0ram[m]);


    digitalWrite(upd,HIGH);                                                                       //Step_10
    digitalWrite(upd,LOW);


    tx_byte(0x01);                                                                                     //Step_11
    for(m=0;m<4;m++)
    tx_byte(cfr2[m]);

    digitalWrite(upd,HIGH);                                                                      //Step_12
    digitalWrite(upd,LOW);

    tx_byte(0x02);                                                                                    //Step_13
    for(m=0;m<4;m++)
    tx_byte(cfr3[m]);

    digitalWrite(upd,HIGH);                                                                    //Step_14
    digitalWrite(upd,LOW);

    cfr1[m]=0x00;                                                                                    //Step_15
    tx_byte(0x00);
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);

    digitalWrite(upd,HIGH);                                                                      //Step_16
    digitalWrite(upd,LOW);

    tx_byte(0x16);                                                                                     //Step_17
    for(f=0;f<1000;f++)
    {
    value = (unsigned long)(round((x*pow(2,32))/1000));
    x=x+0.1;
    tx_byte(value);
    tx_byte(value>>8);
    tx_byte(value>>16);
    tx_byte(value>>24);

    }
    digitalWrite(upd,HIGH);                                                                              //Step_18
    digitalWrite(upd,LOW);

    cfr1[m]=0x80;                                                                                              //Step_19
    tx_byte(0x00);
    for(m=0;m<4;m++)
    tx_byte(cfr1[m]);

    digitalWrite(upd,HIGH);                                                                               //Step_20
    digitalWrite(upd,LOW);



    digitalWrite(CS,HIGH);                                                                               //Step_21
    }

    void tx_byte(unsigned char tx_dat)                                      // Function for transfer data from Arduino to AD9910
    {
    SPI.transfer(tx_dat);
    }

    void loop()
    {

    }

                                                                                            

    Please help me in my project.....thank you ^_^

Children
No Data