krishan prajapat / Mbed 2 deprecated sd_card_making_header_sss2

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers adf.h Source File

adf.h

00001 #define START_ADDRESS 0x020;
00002 
00003 
00004 SPI adf(PTA16, PTA17, PTA15); //MOSI, MISO, CLOCK
00005 DigitalOut cs_adf(D10);
00006 DigitalOut led2(LED_RED);
00007 InterruptIn IRQ(D8);
00008 Ticker ticker;
00009 int t1,t2; // remove
00010 unsigned char d = 0,c=1; 
00011 int x = IRQ;
00012 unsigned char k = 0;
00013 bool transmission_done = false;
00014 
00015 void bbram_write()
00016 {   
00017     cs_adf=0;
00018     adf.write(0xB0);//PHY_OFF
00019     wait_us(300);
00020     cs_adf=1;
00021     
00022     // Write bbram
00023     cs_adf=0;
00024     adf.write(0x19);
00025     adf.write(0x00);
00026     adf.write(0x60);
00027     adf.write(0x00);
00028     
00029     adf.write(0x00);    
00030     adf.write(0x00);
00031     adf.write(0x00);
00032     adf.write(0x00);
00033     
00034     adf.write(0x00);
00035     adf.write(0x33);
00036     adf.write(0x00);
00037     adf.write(0xF4);//Frequency Register F9 = 435.802 MHz F4 = 435.800 MHz
00038     
00039     adf.write(0xC2);
00040     adf.write(0x10);
00041     adf.write(0xC0);    
00042     adf.write(0x00);
00043     
00044     adf.write(0x30);
00045     adf.write(0x31);
00046     adf.write(0x07);    
00047     adf.write(0x00);
00048         
00049     adf.write(0x01);
00050     adf.write(0x00);
00051     adf.write(0x7F);
00052     adf.write(0x00);
00053     
00054     adf.write(0x0B);
00055     adf.write(0x37);
00056     adf.write(0x00);    
00057     adf.write(0x00);
00058     
00059     adf.write(0x40);
00060     adf.write(0x0C);
00061     adf.write(0x00);
00062     adf.write(0x05);
00063     
00064     adf.write(0x00);
00065     adf.write(0x00);
00066     adf.write(0x18);
00067     adf.write(0x12);
00068     
00069     adf.write(0x34);
00070     adf.write(0x56);
00071     adf.write(0x10);
00072     adf.write(0x10);
00073     
00074     adf.write(0xC4); // Different
00075     adf.write(0x14);
00076     adf.write(0x00);
00077     adf.write(0x00);
00078     
00079     adf.write(0x00);
00080     adf.write(0x00);
00081     adf.write(0x00);
00082     adf.write(0x00);
00083     
00084     adf.write(0x00);
00085     adf.write(0x00);
00086     adf.write(0x00);
00087     adf.write(0x00);
00088     
00089     adf.write(0x00);
00090     adf.write(0x00);
00091     adf.write(0x00);
00092     adf.write(0x00);
00093     
00094     adf.write(0x00);
00095     adf.write(0x00);
00096     adf.write(0x00);
00097     adf.write(0x00);
00098     
00099     adf.write(0x04);
00100     adf.write(0x00);
00101     adf.write(0x00);
00102     adf.write(0x00);
00103     
00104     adf.write(0x00);
00105     adf.write(0x00);
00106     cs_adf=1;
00107 //    wait(1);
00108     
00109 }
00110 
00111 
00112 /******************************************************************************************/
00113 
00114 void initiate(void){
00115 //    printf("initiate");    
00116     cs_adf=0;
00117     adf.write(0xFF);
00118     adf.write(0xFF);
00119     cs_adf=1;
00120 //    wait_ms(2);
00121 
00122     cs_adf=0;
00123     adf.write(0x08);    // TRANSMIT_DATA LENGTH
00124     adf.write(0x14);
00125     adf.write(0xFF);
00126     cs_adf=1;
00127 //    wait_ms(2);
00128     cs_adf=0;
00129     adf.write(0x08);        // TRANSMIT_DATA LENGTH
00130     adf.write(0x15);
00131     adf.write(0xFF);
00132     cs_adf=1;
00133 //    wait_ms(2);
00134     
00135     cs_adf=0;
00136     adf.write(0x09);
00137     adf.write(0x24);   // TX_BASE ADDRESS   0x20(starting Tx Byte)
00138     adf.write(0x20);
00139     cs_adf=1;
00140 //    wait_ms(2);
00141     
00142     cs_adf=0;
00143     adf.write(0x09);
00144     adf.write(0x37);// BUFFER SIZE 0xE0=224 Bytes 0x137 is adress of buffer size
00145     adf.write(0xE0);
00146     cs_adf=1;
00147 //    wait_ms(2);
00148     
00149     cs_adf=0;
00150     adf.write(0x09);
00151     adf.write(0x36);//BB_Tx_Buffer Signal when Buffer is half filled
00152     adf.write(0x70);//0x70 = 112 >> When Half buffer interrupt is given
00153     cs_adf=1;
00154 //    wait_ms(2);
00155     
00156     
00157     cs_adf=0;
00158     adf.write(0x09);
00159     adf.write(0x39);//BB_Tx_Buffer Signal when Buffer is half filled
00160     adf.write(0x10);//0x70 = 112 >> When Half buffer interrupt is given
00161     cs_adf=1;
00162 //    wait_ms(2);    
00163     }
00164 
00165  
00166 
00167 void write_data(void){
00168    
00169 //    wait_ms(0);
00170     cs_adf=0;
00171     adf.write(0x0B);//IRQ_SOURCE_Random write //To read CMD = 2B 36 FF FF
00172     adf.write(0x36);//Address : 0x336
00173     adf.write(0xFF);//Put Low
00174     cs_adf=1;
00175 //    wait_us(80);
00176     cs_adf=0;
00177     static bool first_2_time = true;
00178     k=0;
00179  
00180     if(!first_2_time){
00181         if(d==1 && last_buffer==false){
00182 //            cout<<"3"<<endl;
00183             adf.write(0x18);
00184             adf.write(0x20);
00185                 
00186             while(k<112){
00187                  adf.write(buffer_112[k]);  
00188                  k++;
00189             }
00190             d=2;
00191        }
00192                    
00193     
00194             else  if(d==2 && last_buffer==false){     
00195 //                    cout<<"4"<<endl;
00196                     adf.write(0x18);
00197                     adf.write(0x90);
00198                     while(k<112)
00199                     {
00200                         adf.write(buffer_112[k]);  
00201                         k++;
00202                     }
00203                     d=1;   
00204          
00205               }   
00206      
00207         
00208     }
00209  
00210     if(first_2_time){
00211         switch(c){
00212         case 1:  
00213 //           cout<<"1"<<endl;
00214                     adf.write(0x18);
00215                     adf.write(0x20);
00216                     while(k<112)
00217                     {
00218                     adf.write(buffer_112[k]);  
00219                     k++;
00220                     }
00221                     c++;
00222                     break;   
00223         
00224         case 2:    
00225 //         cout<<"2"<<endl;
00226                         adf.write(0x18);
00227                         adf.write(0x90);
00228                         while(k<112)
00229                         {
00230                             adf.write(buffer_112[k]);  
00231                             k++;
00232                         }
00233                         c++;
00234                         d=1;
00235                         first_2_time = false;
00236                      break;   
00237                      }   
00238             
00239      }
00240                  
00241      
00242             
00243       if(last_buffer){
00244                 cs_adf=0;
00245                 adf.write(0x18);
00246                 adf.write(0x20);
00247                
00248                 while(k<112){
00249                     adf.write(buffer_112[k]);  
00250                     k++;
00251                 }
00252                 cs_adf=1;
00253                     
00254                 ticker.detach();
00255                 cs_adf=0;
00256                  adf.write(0xB1);
00257                 cs_adf=1;
00258                 printf("stopped");
00259                 cout<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_"<<t1<<"_____________"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<"_"<<t2<<endl;
00260                 transmission_done=true;
00261         }
00262                           
00263      cs_adf=1;
00264 //     wait_us(1);
00265     }
00266     
00267 
00268 
00269 void check()
00270     {   
00271      x = IRQ;
00272 //     cout<<"t"<<endl;
00273      if(x){
00274 //         cout<<"if"<<endl;
00275          write_data();
00276          
00277          send_tm_from_SD_card();
00278          
00279          
00280          
00281          }
00282      }
00283 
00284 void send_data(void){
00285         
00286     cs_adf=0;
00287     adf.write(0xBB);
00288     cs_adf=1;
00289 //    wait_us(300); 
00290     
00291     cs_adf=0;
00292     adf.write(0xFF);
00293     adf.write(0xFF);
00294     cs_adf=1;
00295 //    wait_ms(2); 
00296     send_tm_from_SD_card();
00297 //    wait_ms(1);
00298    // for(int i=0; i<112;i++){
00299 //    printf("%02X ",buffer_112[i]);
00300 //    }
00301 //     printf("\n");
00302     write_data();
00303 //    wait_ms(1);
00304     send_tm_from_SD_card();
00305 //    wait_ms(1);
00306 //for(int i=0; i<112;i++){
00307 //    printf("%02X ",buffer_112[i]);
00308 //    }
00309 //    printf("\n");
00310     write_data();
00311     send_tm_from_SD_card();
00312    // for(int i=0; i<112;i++){
00313 //    printf("%02X ",buffer_112[i]);
00314 //    }
00315 //     printf("\n");
00316 //    snd_tm_from_SD_card();
00317 //    write_data();
00318 //  wait_ms(2);  
00319     cs_adf=0;
00320     adf.write(0xB1);
00321     cs_adf=1;
00322     wait_us(300); 
00323     
00324     cs_adf=0;
00325     adf.write(0xFF);
00326     adf.write(0xFF);
00327     cs_adf=1;
00328 //    wait_ms(2);  
00329     cs_adf=0;
00330     adf.write(0xB5);
00331     cs_adf=1;
00332     
00333 //    cout<<"B5 given"<<endl;
00334     wait_us(300);  
00335 //    int b5=t.read_us();
00336     cs_adf=0;
00337     adf.write(0xFF);
00338     adf.write(0xFF);
00339     cs_adf=1;
00340 //    wait_ms(2);
00341     
00342     ticker.attach_us(&check,32000);
00343     }
00344     
00345     void adf_SND_SDCard(uint64_t x,uint64_t y ){
00346         start_block_num = x;
00347         end_block_num = y;
00348         
00349         adf.format(8,0);
00350         adf.frequency(1000000);
00351        // printf("yoyoyoyoyoyoyoyoyo ");
00352 //       cout<<"ko"<<start_block_num<<"yo"<<endl;
00353 //        printf("yoyoyoyoyoyoyoyoyo ");
00354 //        printf("yoyoyoyoyoyoyoyoyo ");
00355 
00356         
00357         bbram_write();
00358         initiate();
00359         send_data();
00360     
00361         while(! transmission_done)
00362         {       
00363 //                printf("what the hell ");
00364                 led2=!led2;
00365                 wait(.1);
00366         }
00367     }