v2.0 working

Dependencies:   mbed

adf.h

Committer:
krishanprajapat
Date:
2015-07-30
Revision:
2:2b08032d9678
Parent:
1:436d836f2b8e

File content as of revision 2:2b08032d9678:

#define START_ADDRESS 0x020;


SPI adf(PTA16, PTA17, PTA15); //MOSI, MISO, CLOCK
DigitalOut cs_adf(D10);
DigitalOut led2(LED_RED);
InterruptIn IRQ(D8);
Ticker ticker;
int t1,t2; // remove
unsigned char d = 0,c=1; 
int x = IRQ;
unsigned char k = 0;
bool transmission_done = false;

void bbram_write()
{   
    cs_adf=0;
    adf.write(0xB0);//PHY_OFF
    wait_us(300);
    cs_adf=1;
    
    // Write bbram
    cs_adf=0;
    adf.write(0x19);
    adf.write(0x00);
    adf.write(0x60);
    adf.write(0x00);
    
    adf.write(0x00);    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x33);
    adf.write(0x00);
    adf.write(0xF4);//Frequency Register F9 = 435.802 MHz F4 = 435.800 MHz
    
    adf.write(0xC2);
    adf.write(0x10);
    adf.write(0xC0);    
    adf.write(0x00);
    
    adf.write(0x30);
    adf.write(0x31);
    adf.write(0x07);    
    adf.write(0x00);
        
    adf.write(0x01);
    adf.write(0x00);
    adf.write(0x7F);
    adf.write(0x00);
    
    adf.write(0x0B);
    adf.write(0x37);
    adf.write(0x00);    
    adf.write(0x00);
    
    adf.write(0x40);
    adf.write(0x0C);
    adf.write(0x00);
    adf.write(0x05);
    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x18);
    adf.write(0x12);
    
    adf.write(0x34);
    adf.write(0x56);
    adf.write(0x10);
    adf.write(0x10);
    
    adf.write(0xC4); // Different
    adf.write(0x14);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x04);
    adf.write(0x00);
    adf.write(0x00);
    adf.write(0x00);
    
    adf.write(0x00);
    adf.write(0x00);
    cs_adf=1;
//    wait(1);
    
}


/******************************************************************************************/

void initiate(void){
//    printf("initiate");    
    cs_adf=0;
    adf.write(0xFF);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2);

    cs_adf=0;
    adf.write(0x08);    // TRANSMIT_DATA LENGTH
    adf.write(0x14);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
    cs_adf=0;
    adf.write(0x08);        // TRANSMIT_DATA LENGTH
    adf.write(0x15);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    adf.write(0x09);
    adf.write(0x24);   // TX_BASE ADDRESS   0x20(starting Tx Byte)
    adf.write(0x20);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    adf.write(0x09);
    adf.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size
    adf.write(0xE0);
    cs_adf=1;
//    wait_ms(2);
    
    cs_adf=0;
    adf.write(0x09);
    adf.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled
    adf.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given
    cs_adf=1;
//    wait_ms(2);
    
    
    cs_adf=0;
    adf.write(0x09);
    adf.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled
    adf.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given
    cs_adf=1;
//    wait_ms(2);    
    }

 

void write_data(void){
   
//    wait_ms(0);
    cs_adf=0;
    adf.write(0x0B);//IRQ_SOURCE_Random write //To read CMD = 2B 36 FF FF
    adf.write(0x36);//Address : 0x336
    adf.write(0xFF);//Put Low
    cs_adf=1;
//    wait_us(80);
    cs_adf=0;
    static bool first_2_time = true;
    k=0;
 
    if(!first_2_time){
        if(d==1 && last_buffer==false){
//            cout<<"3"<<endl;
            adf.write(0x18);
            adf.write(0x20);
                
            while(k<112){
                 adf.write(buffer_112[k]);  
                 k++;
            }
            d=2;
       }
                   
    
            else  if(d==2 && last_buffer==false){     
//                    cout<<"4"<<endl;
                    adf.write(0x18);
                    adf.write(0x90);
                    while(k<112)
                    {
                        adf.write(buffer_112[k]);  
                        k++;
                    }
                    d=1;   
         
              }   
     
        
    }
 
    if(first_2_time){
        switch(c){
        case 1:  
//           cout<<"1"<<endl;
                    adf.write(0x18);
                    adf.write(0x20);
                    while(k<112)
                    {
                    adf.write(buffer_112[k]);  
                    k++;
                    }
                    c++;
                    break;   
        
        case 2:    
//         cout<<"2"<<endl;
                        adf.write(0x18);
                        adf.write(0x90);
                        while(k<112)
                        {
                            adf.write(buffer_112[k]);  
                            k++;
                        }
                        c++;
                        d=1;
                        first_2_time = false;
                     break;   
                     }   
            
     }
                 
     
            
      if(last_buffer){
                cs_adf=0;
                adf.write(0x18);
                adf.write(0x20);
               
                while(k<112){
                    adf.write(buffer_112[k]);  
                    k++;
                }
                cs_adf=1;
                    
                ticker.detach();
                cs_adf=0;
                 adf.write(0xB1);
                cs_adf=1;
                printf("stopped");
                cout<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_____________"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<endl;
                transmission_done=true;
        }
                          
     cs_adf=1;
//     wait_us(1);
    }
    


void check()
    {   
     x = IRQ;
//     cout<<"t"<<endl;
     if(x){
//         cout<<"if"<<endl;
         write_data();
         
         send_tm_from_SD_card();
         
         
         
         }
     }

void send_data(void){
        
    cs_adf=0;
    adf.write(0xBB);
    cs_adf=1;
//    wait_us(300); 
    
    cs_adf=0;
    adf.write(0xFF);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2); 
    send_tm_from_SD_card();
//    wait_ms(1);
   // for(int i=0; i<112;i++){
//    printf("%02X ",buffer_112[i]);
//    }
//     printf("\n");
    write_data();
//    wait_ms(1);
    send_tm_from_SD_card();
//    wait_ms(1);
//for(int i=0; i<112;i++){
//    printf("%02X ",buffer_112[i]);
//    }
//    printf("\n");
    write_data();
    send_tm_from_SD_card();
   // for(int i=0; i<112;i++){
//    printf("%02X ",buffer_112[i]);
//    }
//     printf("\n");
//    snd_tm_from_SD_card();
//    write_data();
//  wait_ms(2);  
    cs_adf=0;
    adf.write(0xB1);
    cs_adf=1;
    wait_us(300); 
    
    cs_adf=0;
    adf.write(0xFF);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2);  
    cs_adf=0;
    adf.write(0xB5);
    cs_adf=1;
    
//    cout<<"B5 given"<<endl;
    wait_us(300);  
//    int b5=t.read_us();
    cs_adf=0;
    adf.write(0xFF);
    adf.write(0xFF);
    cs_adf=1;
//    wait_ms(2);
    
    ticker.attach_us(&check,32000);
    }
    
    void adf_SND_SDCard(uint64_t x,uint64_t y ){
        start_block_num = x;
        end_block_num = y;
        
        adf.format(8,0);
        adf.frequency(1000000);
       // printf("yoyoyoyoyoyoyoyoyo ");
//       cout<<"ko"<<start_block_num<<"yo"<<endl;
//        printf("yoyoyoyoyoyoyoyoyo ");
//        printf("yoyoyoyoyoyoyoyoyo ");

        
        bbram_write();
        initiate();
        send_data();
    
        while(! transmission_done)
        {       
//                printf("what the hell ");
                led2=!led2;
                wait(.1);
        }
    }