ADF7023

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
dheerajmpai23
Date:
Thu Jul 09 06:55:39 2015 +0000
Commit message:
ADF7023

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jul 09 06:55:39 2015 +0000
@@ -0,0 +1,283 @@
+#include "mbed.h"
+#include <iostream>
+using namespace std;
+#include <bitset>
+
+#define ENDL "\r" << endl;
+#define START_ADDRESS 0x020;
+// from ss codes
+//Output
+DigitalOut gpo(D9);
+
+//clock
+InterruptIn clk(D8);
+int state=0;
+int j=0;
+int bit=7;
+unsigned char data [] = {0x00,0x00,0x00};
+// fssca
+
+
+//SPI
+
+SPI adf(PTD6, PTD7, PTD5);
+//MOSI, MISO, CLOCK
+
+DigitalOut CS(D10);
+Serial PC(USBTX, USBRX);
+DigitalOut ledr(LED_RED);
+
+#define SPI_NOP 0xFF
+
+enum con_type{ packet=0x18, bbram=0x19, mcr=0x1B, program=0x1E };
+enum discon_type{ packet2=0x08, bbram2=0x09, mcr2=0x0B };
+
+enum discon_type_RD{ packet3=0x28, bbram3=0x29, mcr3=0x2B };
+
+void write_con(con_type ram, uint8_t address, uint8_t *data, int length){
+   
+    int *response = new int[length];
+
+    CS = 0;
+   
+//    ignore recevived data
+    adf.write( ram );
+   
+//    write start address
+    int r = adf.write( address );
+   
+//    write data
+    for(int i = 0 ; i < length ; ++i){
+        response[i] = adf.write( data[i] );
+    }
+   
+    CS = 1;
+   
+    cout << r << ENDL;
+    for(int i = 0 ; i < length ; ++i){
+        cout << response[i] << " ";
+    }
+    cout << ENDL;
+   
+}
+
+void write_discon(discon_type ram, uint8_t *address, uint8_t *data, int length){
+   
+    int *response1 = new int[length];
+    int *response2 = new int[length];
+   
+    CS = 0;
+   
+//    ignore recevived data
+    adf.write( ram );
+       
+    for(int i = 0 ; i < length ; ++i){
+
+//    address[7:0] next 8 bits
+        response1[i] = adf.write( address[i] );
+       
+//        data next 8 bits
+        response2[i] = adf.write( data[i] );
+       
+    }
+
+    CS = 1;
+   
+    for(int i = 0 ; i < length ; ++i){
+        cout << response1[i] << "\t" << response2[i] << ENDL;
+    }
+   
+}
+
+int read_discon(discon_type_RD ram, uint8_t address){
+   
+    CS = 0;
+   
+//    ignore the reply
+    adf.write( ram );
+   
+    int stat1 = adf.write( address );
+    int stat2 = adf.write( SPI_NOP );
+    int reply = adf.write( SPI_NOP );
+   
+    CS = 1;
+   
+    return reply;
+}
+
+void write_bbram_sequence(void){
+   
+    adf.write(0x19);
+    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(0x33);
+    adf.write(0x00);
+    adf.write(0xF4);
+   
+    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(0x08);
+    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);
+    
+    }
+   
+    void initiate(void){
+       
+        CS=0;
+        adf.write(0xB0);
+        CS=1;
+        wait_ms(2);
+       
+        CS=0;
+        adf.write(0x18);
+        adf.write(0xFA);
+        adf.write(0xA1);
+        CS=1;
+        wait_ms(2);
+       
+        CS=0;
+        adf.write(0x18);
+        adf.write(0x0D);
+        adf.write(0x00);
+        CS=1;
+        wait_ms(2);
+       
+        CS=0;
+        write_bbram_sequence();
+        CS=1;
+        wait_ms(2);
+       
+        cout<<"BBRAM_SEQUENCE WRITTEN"<<ENDL;
+       
+        CS=0;
+        adf.write(0xBB);//CONFIGURE_DEV
+        CS=1;
+        wait_ms(2);
+       
+        cout<<"CONFIG_DEV"<<ENDL;
+       
+        CS=0;
+        adf.write(0xB1);//PHY_ON
+        CS=1;
+        wait_ms(2);
+       
+        CS=0;
+        adf.write(0xB5);//PHY_TX
+        CS=1;
+        wait_ms(2);
+        
+        cout<<"PHY_TX"<<ENDL;
+     }
+//fssca
+void change()
+{
+        if(bit<0)
+        {
+            j++;
+            bit=7;
+           
+            if(j == 3){
+                j = 0;
+            }
+        }
+        if(state==0)
+        {
+            gpo = (data[j] >> bit--) & 0x01 ;
+            state++;
+        }
+        else if (state==1)
+        {
+            state=0;
+        }
+}     
+     //fssce    
+
+int main(){
+   
+    
+    CS = 1;
+    adf.format(8,0);
+    adf.frequency( 1000000 );
+   
+    cout << "Press s" << ENDL;
+    ledr = 1;
+    char c = 'a';
+    while( c != 's'){
+        c = PC.getc();
+        PC.putc(c);
+    }
+    ledr = 0;
+       
+    initiate();
+    
+    while(true)
+    {
+        cout << "hoo" << "\r" << endl;
+        clk.fall(&change);
+    }
+   
+}
+   
+   
+   
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Jul 09 06:55:39 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/7cff1c4259d7
\ No newline at end of file