ADF7023-mbed

Dependencies:   mbed

main.cpp

Committer:
dheerajmpai23
Date:
2015-07-09
Revision:
0:7270d2dd2213

File content as of revision 0:7270d2dd2213:

#include "mbed.h"
#define ENDL "\r" << endl
#include<iostream>

using namespace std;
DigitalOut led(LED_RED);
DigitalOut CS(D10);
InterruptIn IRQ();

SPI adf(PTD6, PTD7, PTD5); // mosi, miso, sclk


void bbram_write()
{   
    CS=0;
    // To bring in off state
    adf.write(0xB0);
    wait_ms(2);
    CS=1;
    
    // Write bbram
    CS=0;
    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(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=1;
    wait(1);
    
  //CMD_CONFIG_DEV  
    CS=0;
    adf.write(0xBB);
    CS=1;
    wait_ms(2);
    
    
}


void initiate_rolling_buffer(void){
    // Testmode register
    CS=0;
    adf.write(0x09);
    adf.write(0x39);
    adf.write(0x10);
    CS=1;
    wait_ms(2);
    
    //CMD_CONFIG_DEV
    CS=0;
    adf.write(0xBB);
    CS=1;
    wait_ms(2);
    
    //Status ReadBack
    CS=0;
    adf.write(0xFF);
    adf.write(0xFF);
    CS=1;
    wait_ms(2);    
    
     // PHY_Off
    CS=0;
    adf.write(0xB0);
    CS=1;
    wait(0.1);
    CS=0;
    adf.write(0xFF);
    adf.write(0xFF);
    CS=1;
    wait(0.1);
    
    // TRANSMIT_DATA LENGTH
    CS=0;
    adf.write(0x08);
    adf.write(0x14);
    adf.write(0x05);//<--------Changed fromm FF to 05
    CS=1;
    wait_ms(2);
    CS=0;
    adf.write(0x08);
    adf.write(0x15);
    adf.write(0x40);//<------------Changed frok FF to 40
    CS=1;
    wait_ms(2);
    // TX_BASE ADDRESS
    CS=0;
    adf.write(0x09);
    adf.write(0x24);
    adf.write(0x20);
    CS=1;
    wait_ms(2);
    // BUFFER SIZE
    CS=0;
    adf.write(0x09);
    adf.write(0x37);
    adf.write(0xE0);
    CS=1;
    wait_ms(2);
    CS=0;
    adf.write(0x09);
    adf.write(0x36);
    adf.write(0x70);
    CS=1;
    wait_ms(2);
    }

void data_write()
{
    CS=0;
    adf.write(0xB1);
    CS=1;
    wait_ms(2);
    
    CS=0;
    adf.write(0xB5);
    CS=1;
    wait_ms(20);    
    
}    
//    while(1)
//    {
//        pool_irq();
//        CS=0;
//         adf.write(0x2B);
//         adf.write(0x36);
//    int irq1 = adf.write(0xFF);
//    int irq2 = adf.write(0xFF);
//         CS=1;    
//         wait_us(500);
//         cout<<irq1<<"/t"<<irq2<<ENDL; 
//    }
    
}




int reply1 =0;//Temp
int reply2 =0;//TEMP
void temp_read_all(void){
    
    adf.write(0x29);
    adf.write(0x00);
    adf.write(0x00);
    reply1adf.write(0x00);
    adf.write(0xFF);
    adf.write(0xFF);
    
    cout<<""<<reply1<<""<<reply2<<ENDL;
 
 
    adf.write();
    adf.write();
    adf.write();
    adf.write();
    adf.write();
    adf.write();
    
    cout<<""<<reply1<<""<<reply2<<ENDL;   
    }
void temp_read_irqsrc(void){
    
    adf.write();//Read 0x336
    status read1 = adf.write();
    status read2 = adf.write();
    irq336 = adf.write();
    adf.write();

    irq336 &=  0x60;
    
    if (irq336 == 0x40){
        
        tx_half();
        put_irq_zero();
        
        }
    else if (irq336 == 0x20){
        
        tx_full();
        put_irq_zero();
        
        }    
    else if (irq336 == 0x00){
        cout<<"error due to other interrupts"<<ENDL;
        put_irq_zero();
        }
    else
    cout<<"Bitwise and not working check your code"<<ENDL;
    }

void put_irq_zero(void){
    
    
    adf.write(0x0B);
    adf.write(0x36);
    adf.write(0x00);
    adf.write(0x37);
    adf.write(0x00);//incase not written write multiple times
//    temp_read_all();
    }

    


int main()
{
    adf.format(8,0);
    adf.frequency(1000000);
    bbram_write();
    data_write();
    while(true){
    temp_read_all();
}