ADF7023

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Thu Jul 09 06:56:19 2015 +0000
Revision:
1:700c4c6067ab
Parent:
0:314c556411b3
ADF7023

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dheerajmpai23 0:314c556411b3 1 #include "mbed.h"
dheerajmpai23 0:314c556411b3 2 #include <iostream>
dheerajmpai23 0:314c556411b3 3 using namespace std;
dheerajmpai23 0:314c556411b3 4 #include <bitset>
dheerajmpai23 0:314c556411b3 5
dheerajmpai23 0:314c556411b3 6 #define ENDL "\r" << endl;
dheerajmpai23 0:314c556411b3 7 #define START_ADDRESS 0x020;
dheerajmpai23 0:314c556411b3 8
dheerajmpai23 0:314c556411b3 9
dheerajmpai23 0:314c556411b3 10
dheerajmpai23 0:314c556411b3 11 //SPI
dheerajmpai23 0:314c556411b3 12
dheerajmpai23 0:314c556411b3 13 SPI adf(PTD6, PTD7, PTD5);
dheerajmpai23 0:314c556411b3 14 //MOSI, MISO, CLOCK
dheerajmpai23 0:314c556411b3 15
dheerajmpai23 0:314c556411b3 16 DigitalOut CS(D10);
dheerajmpai23 0:314c556411b3 17 Serial PC(USBTX, USBRX);
dheerajmpai23 0:314c556411b3 18 DigitalOut ledr(LED_RED);
dheerajmpai23 0:314c556411b3 19
dheerajmpai23 0:314c556411b3 20 #define SPI_NOP 0xFF
dheerajmpai23 0:314c556411b3 21
dheerajmpai23 0:314c556411b3 22 enum con_type{ packet=0x18, bbram=0x19, mcr=0x1B, program=0x1E };
dheerajmpai23 0:314c556411b3 23 enum discon_type{ packet2=0x08, bbram2=0x09, mcr2=0x0B };
dheerajmpai23 0:314c556411b3 24
dheerajmpai23 0:314c556411b3 25 enum discon_type_RD{ packet3=0x28, bbram3=0x29, mcr3=0x2B };
dheerajmpai23 0:314c556411b3 26
dheerajmpai23 0:314c556411b3 27 void write_con(con_type ram, uint8_t address, uint8_t *data, int length){
dheerajmpai23 0:314c556411b3 28
dheerajmpai23 0:314c556411b3 29 int *response = new int[length];
dheerajmpai23 0:314c556411b3 30
dheerajmpai23 0:314c556411b3 31 CS = 0;
dheerajmpai23 0:314c556411b3 32
dheerajmpai23 0:314c556411b3 33 // ignore recevived data
dheerajmpai23 0:314c556411b3 34 adf.write( ram );
dheerajmpai23 0:314c556411b3 35
dheerajmpai23 0:314c556411b3 36 // write start address
dheerajmpai23 0:314c556411b3 37 int r = adf.write( address );
dheerajmpai23 0:314c556411b3 38
dheerajmpai23 0:314c556411b3 39 // write data
dheerajmpai23 0:314c556411b3 40 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:314c556411b3 41 response[i] = adf.write( data[i] );
dheerajmpai23 0:314c556411b3 42 }
dheerajmpai23 0:314c556411b3 43
dheerajmpai23 0:314c556411b3 44 CS = 1;
dheerajmpai23 0:314c556411b3 45
dheerajmpai23 0:314c556411b3 46 cout << r << ENDL;
dheerajmpai23 0:314c556411b3 47 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:314c556411b3 48 cout << response[i] << " ";
dheerajmpai23 0:314c556411b3 49 }
dheerajmpai23 0:314c556411b3 50 cout << ENDL;
dheerajmpai23 0:314c556411b3 51
dheerajmpai23 0:314c556411b3 52 }
dheerajmpai23 0:314c556411b3 53
dheerajmpai23 0:314c556411b3 54 void write_discon(discon_type ram, uint8_t *address, uint8_t *data, int length){
dheerajmpai23 0:314c556411b3 55
dheerajmpai23 0:314c556411b3 56 int *response1 = new int[length];
dheerajmpai23 0:314c556411b3 57 int *response2 = new int[length];
dheerajmpai23 0:314c556411b3 58
dheerajmpai23 0:314c556411b3 59 CS = 0;
dheerajmpai23 0:314c556411b3 60
dheerajmpai23 0:314c556411b3 61 // ignore recevived data
dheerajmpai23 0:314c556411b3 62 adf.write( ram );
dheerajmpai23 0:314c556411b3 63
dheerajmpai23 0:314c556411b3 64 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:314c556411b3 65
dheerajmpai23 0:314c556411b3 66 // address[7:0] next 8 bits
dheerajmpai23 0:314c556411b3 67 response1[i] = adf.write( address[i] );
dheerajmpai23 0:314c556411b3 68
dheerajmpai23 0:314c556411b3 69 // data next 8 bits
dheerajmpai23 0:314c556411b3 70 response2[i] = adf.write( data[i] );
dheerajmpai23 0:314c556411b3 71
dheerajmpai23 0:314c556411b3 72 }
dheerajmpai23 0:314c556411b3 73
dheerajmpai23 0:314c556411b3 74 CS = 1;
dheerajmpai23 0:314c556411b3 75
dheerajmpai23 0:314c556411b3 76 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:314c556411b3 77 cout << response1[i] << "\t" << response2[i] << ENDL;
dheerajmpai23 0:314c556411b3 78 }
dheerajmpai23 0:314c556411b3 79
dheerajmpai23 0:314c556411b3 80 }
dheerajmpai23 0:314c556411b3 81
dheerajmpai23 0:314c556411b3 82 int read_discon(discon_type_RD ram, uint8_t address){
dheerajmpai23 0:314c556411b3 83
dheerajmpai23 0:314c556411b3 84 CS = 0;
dheerajmpai23 0:314c556411b3 85
dheerajmpai23 0:314c556411b3 86 // ignore the reply
dheerajmpai23 0:314c556411b3 87 adf.write( ram );
dheerajmpai23 0:314c556411b3 88
dheerajmpai23 0:314c556411b3 89 int stat1 = adf.write( address );
dheerajmpai23 0:314c556411b3 90 int stat2 = adf.write( SPI_NOP );
dheerajmpai23 0:314c556411b3 91 int reply = adf.write( SPI_NOP );
dheerajmpai23 0:314c556411b3 92
dheerajmpai23 0:314c556411b3 93 CS = 1;
dheerajmpai23 0:314c556411b3 94
dheerajmpai23 0:314c556411b3 95 return reply;
dheerajmpai23 0:314c556411b3 96 }
dheerajmpai23 0:314c556411b3 97
dheerajmpai23 0:314c556411b3 98 void write_bbram_sequence(void){
dheerajmpai23 0:314c556411b3 99
dheerajmpai23 0:314c556411b3 100 adf.write(0x19);
dheerajmpai23 0:314c556411b3 101 adf.write(0x00);
dheerajmpai23 0:314c556411b3 102 adf.write(0x00);
dheerajmpai23 0:314c556411b3 103 adf.write(0x00);
dheerajmpai23 0:314c556411b3 104
dheerajmpai23 0:314c556411b3 105 adf.write(0x00);
dheerajmpai23 0:314c556411b3 106 adf.write(0x00);
dheerajmpai23 0:314c556411b3 107 adf.write(0x00);
dheerajmpai23 0:314c556411b3 108 adf.write(0x00);
dheerajmpai23 0:314c556411b3 109
dheerajmpai23 0:314c556411b3 110 adf.write(0x00);
dheerajmpai23 0:314c556411b3 111 adf.write(0x33);
dheerajmpai23 0:314c556411b3 112 adf.write(0x00);
dheerajmpai23 0:314c556411b3 113 adf.write(0xF4);
dheerajmpai23 0:314c556411b3 114
dheerajmpai23 0:314c556411b3 115 adf.write(0xC2);
dheerajmpai23 0:314c556411b3 116 adf.write(0x10);
dheerajmpai23 0:314c556411b3 117 adf.write(0xC0);
dheerajmpai23 0:314c556411b3 118 adf.write(0x00);
dheerajmpai23 0:314c556411b3 119
dheerajmpai23 0:314c556411b3 120 adf.write(0x30);
dheerajmpai23 0:314c556411b3 121 adf.write(0x31);
dheerajmpai23 0:314c556411b3 122 adf.write(0x07);
dheerajmpai23 0:314c556411b3 123 adf.write(0x00);
dheerajmpai23 0:314c556411b3 124
dheerajmpai23 0:314c556411b3 125 adf.write(0x01);
dheerajmpai23 0:314c556411b3 126 adf.write(0x00);
dheerajmpai23 0:314c556411b3 127 adf.write(0x7F);
dheerajmpai23 0:314c556411b3 128 adf.write(0x00);
dheerajmpai23 0:314c556411b3 129
dheerajmpai23 0:314c556411b3 130 adf.write(0x0B);
dheerajmpai23 0:314c556411b3 131 adf.write(0x37);
dheerajmpai23 0:314c556411b3 132 adf.write(0x00);
dheerajmpai23 0:314c556411b3 133 adf.write(0x00);
dheerajmpai23 0:314c556411b3 134 adf.write(0x40);
dheerajmpai23 0:314c556411b3 135 adf.write(0x0C);
dheerajmpai23 0:314c556411b3 136 adf.write(0x00);
dheerajmpai23 0:314c556411b3 137 adf.write(0x05);
dheerajmpai23 0:314c556411b3 138 adf.write(0x00);
dheerajmpai23 0:314c556411b3 139 adf.write(0x00);
dheerajmpai23 0:314c556411b3 140 adf.write(0x18);
dheerajmpai23 0:314c556411b3 141 adf.write(0x12);
dheerajmpai23 0:314c556411b3 142 adf.write(0x34);
dheerajmpai23 0:314c556411b3 143 adf.write(0x56);
dheerajmpai23 0:314c556411b3 144 adf.write(0x10);
dheerajmpai23 0:314c556411b3 145 adf.write(0x10);
dheerajmpai23 0:314c556411b3 146 adf.write(0x08);
dheerajmpai23 0:314c556411b3 147 adf.write(0x14);
dheerajmpai23 0:314c556411b3 148 adf.write(0x00);
dheerajmpai23 0:314c556411b3 149 adf.write(0x00);
dheerajmpai23 0:314c556411b3 150 adf.write(0x00);
dheerajmpai23 0:314c556411b3 151 adf.write(0x00);
dheerajmpai23 0:314c556411b3 152 adf.write(0x00);
dheerajmpai23 0:314c556411b3 153 adf.write(0x00);
dheerajmpai23 0:314c556411b3 154 adf.write(0x00);
dheerajmpai23 0:314c556411b3 155 adf.write(0x00);
dheerajmpai23 0:314c556411b3 156 adf.write(0x00);
dheerajmpai23 0:314c556411b3 157 adf.write(0x00);
dheerajmpai23 0:314c556411b3 158 adf.write(0x00);
dheerajmpai23 0:314c556411b3 159 adf.write(0x00);
dheerajmpai23 0:314c556411b3 160 adf.write(0x00);
dheerajmpai23 0:314c556411b3 161 adf.write(0x00);
dheerajmpai23 0:314c556411b3 162 adf.write(0x00);
dheerajmpai23 0:314c556411b3 163 adf.write(0x00);
dheerajmpai23 0:314c556411b3 164 adf.write(0x00);
dheerajmpai23 0:314c556411b3 165 adf.write(0x00);
dheerajmpai23 0:314c556411b3 166 adf.write(0x04);
dheerajmpai23 0:314c556411b3 167 adf.write(0x00);
dheerajmpai23 0:314c556411b3 168 adf.write(0x00);
dheerajmpai23 0:314c556411b3 169 adf.write(0x00);
dheerajmpai23 0:314c556411b3 170 adf.write(0x00);
dheerajmpai23 0:314c556411b3 171 adf.write(0x00);
dheerajmpai23 0:314c556411b3 172
dheerajmpai23 0:314c556411b3 173 }
dheerajmpai23 0:314c556411b3 174
dheerajmpai23 0:314c556411b3 175 void initiate(void){
dheerajmpai23 0:314c556411b3 176
dheerajmpai23 0:314c556411b3 177 CS=0;
dheerajmpai23 0:314c556411b3 178 adf.write(0xB0);
dheerajmpai23 0:314c556411b3 179 CS=1;
dheerajmpai23 0:314c556411b3 180 wait_ms(2);
dheerajmpai23 0:314c556411b3 181
dheerajmpai23 0:314c556411b3 182 CS=0;
dheerajmpai23 1:700c4c6067ab 183 adf.write(0x1BFAA1);
dheerajmpai23 1:700c4c6067ab 184 // adf.write(0xFA);
dheerajmpai23 1:700c4c6067ab 185 // adf.write(0xA1);
dheerajmpai23 0:314c556411b3 186 CS=1;
dheerajmpai23 0:314c556411b3 187 wait_ms(2);
dheerajmpai23 0:314c556411b3 188
dheerajmpai23 0:314c556411b3 189 CS=0;
dheerajmpai23 1:700c4c6067ab 190 adf.write(0x180D00);
dheerajmpai23 1:700c4c6067ab 191 // adf.write(0x0D);
dheerajmpai23 1:700c4c6067ab 192 // adf.write(0x00);
dheerajmpai23 0:314c556411b3 193 CS=1;
dheerajmpai23 0:314c556411b3 194 wait_ms(2);
dheerajmpai23 1:700c4c6067ab 195 //
dheerajmpai23 0:314c556411b3 196 CS=0;
dheerajmpai23 0:314c556411b3 197 write_bbram_sequence();
dheerajmpai23 0:314c556411b3 198 CS=1;
dheerajmpai23 1:700c4c6067ab 199 wait_ms(500);
dheerajmpai23 1:700c4c6067ab 200 // cout<<"Please write BBRAM SEquence Fast"<<ENDL;
dheerajmpai23 1:700c4c6067ab 201 // wait(45);
dheerajmpai23 1:700c4c6067ab 202 cout<<"i HOPE BBRAM_SEQUENCE WRITTEN"<<ENDL;
dheerajmpai23 1:700c4c6067ab 203 wait(5);
dheerajmpai23 0:314c556411b3 204 CS=0;
dheerajmpai23 0:314c556411b3 205 adf.write(0xBB);//CONFIGURE_DEV
dheerajmpai23 0:314c556411b3 206 CS=1;
dheerajmpai23 0:314c556411b3 207 wait_ms(2);
dheerajmpai23 0:314c556411b3 208
dheerajmpai23 0:314c556411b3 209 cout<<"CONFIG_DEV"<<ENDL;
dheerajmpai23 0:314c556411b3 210
dheerajmpai23 0:314c556411b3 211 CS=0;
dheerajmpai23 0:314c556411b3 212 adf.write(0xB1);//PHY_ON
dheerajmpai23 0:314c556411b3 213 CS=1;
dheerajmpai23 0:314c556411b3 214 wait_ms(2);
dheerajmpai23 0:314c556411b3 215
dheerajmpai23 0:314c556411b3 216 CS=0;
dheerajmpai23 0:314c556411b3 217 adf.write(0xB5);//PHY_TX
dheerajmpai23 0:314c556411b3 218 CS=1;
dheerajmpai23 0:314c556411b3 219 wait_ms(2);
dheerajmpai23 0:314c556411b3 220
dheerajmpai23 0:314c556411b3 221 cout<<"PHY_TX"<<ENDL;
dheerajmpai23 0:314c556411b3 222 }
dheerajmpai23 0:314c556411b3 223
dheerajmpai23 0:314c556411b3 224
dheerajmpai23 0:314c556411b3 225
dheerajmpai23 0:314c556411b3 226
dheerajmpai23 0:314c556411b3 227 int main(){
dheerajmpai23 0:314c556411b3 228
dheerajmpai23 0:314c556411b3 229
dheerajmpai23 0:314c556411b3 230 CS = 1;
dheerajmpai23 0:314c556411b3 231 adf.format(8,0);
dheerajmpai23 0:314c556411b3 232 adf.frequency( 1000000 );
dheerajmpai23 0:314c556411b3 233
dheerajmpai23 0:314c556411b3 234 cout << "Press s" << ENDL;
dheerajmpai23 0:314c556411b3 235 ledr = 1;
dheerajmpai23 0:314c556411b3 236 char c = 'a';
dheerajmpai23 0:314c556411b3 237 while( c != 's'){
dheerajmpai23 0:314c556411b3 238 c = PC.getc();
dheerajmpai23 0:314c556411b3 239 PC.putc(c);
dheerajmpai23 0:314c556411b3 240 }
dheerajmpai23 0:314c556411b3 241 ledr = 0;
dheerajmpai23 0:314c556411b3 242
dheerajmpai23 0:314c556411b3 243 initiate();
dheerajmpai23 0:314c556411b3 244
dheerajmpai23 0:314c556411b3 245 }
dheerajmpai23 0:314c556411b3 246
dheerajmpai23 0:314c556411b3 247
dheerajmpai23 0:314c556411b3 248