ADF7023

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Fri Jun 26 14:03:17 2015 +0000
Revision:
0:314c556411b3
Child:
1:700c4c6067ab
Original Initiation---Date:23 June 2015

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 0:314c556411b3 183 adf.write(0x1B);
dheerajmpai23 0:314c556411b3 184 adf.write(0xFA);
dheerajmpai23 0:314c556411b3 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 0:314c556411b3 190 adf.write(0x18);
dheerajmpai23 0:314c556411b3 191 adf.write(0x0D);
dheerajmpai23 0:314c556411b3 192 adf.write(0x00);
dheerajmpai23 0:314c556411b3 193 CS=1;
dheerajmpai23 0:314c556411b3 194 wait_ms(2);
dheerajmpai23 0:314c556411b3 195
dheerajmpai23 0:314c556411b3 196 CS=0;
dheerajmpai23 0:314c556411b3 197 write_bbram_sequence();
dheerajmpai23 0:314c556411b3 198 CS=1;
dheerajmpai23 0:314c556411b3 199 wait_ms(2);
dheerajmpai23 0:314c556411b3 200
dheerajmpai23 0:314c556411b3 201 cout<<"BBRAM_SEQUENCE WRITTEN"<<ENDL;
dheerajmpai23 0:314c556411b3 202
dheerajmpai23 0:314c556411b3 203 CS=0;
dheerajmpai23 0:314c556411b3 204 adf.write(0xBB);//CONFIGURE_DEV
dheerajmpai23 0:314c556411b3 205 CS=1;
dheerajmpai23 0:314c556411b3 206 wait_ms(2);
dheerajmpai23 0:314c556411b3 207
dheerajmpai23 0:314c556411b3 208 cout<<"CONFIG_DEV"<<ENDL;
dheerajmpai23 0:314c556411b3 209
dheerajmpai23 0:314c556411b3 210 CS=0;
dheerajmpai23 0:314c556411b3 211 adf.write(0xB1);//PHY_ON
dheerajmpai23 0:314c556411b3 212 CS=1;
dheerajmpai23 0:314c556411b3 213 wait_ms(2);
dheerajmpai23 0:314c556411b3 214
dheerajmpai23 0:314c556411b3 215 CS=0;
dheerajmpai23 0:314c556411b3 216 adf.write(0xB5);//PHY_TX
dheerajmpai23 0:314c556411b3 217 CS=1;
dheerajmpai23 0:314c556411b3 218 wait_ms(2);
dheerajmpai23 0:314c556411b3 219
dheerajmpai23 0:314c556411b3 220 cout<<"PHY_TX"<<ENDL;
dheerajmpai23 0:314c556411b3 221 }
dheerajmpai23 0:314c556411b3 222
dheerajmpai23 0:314c556411b3 223
dheerajmpai23 0:314c556411b3 224
dheerajmpai23 0:314c556411b3 225
dheerajmpai23 0:314c556411b3 226 int main(){
dheerajmpai23 0:314c556411b3 227
dheerajmpai23 0:314c556411b3 228
dheerajmpai23 0:314c556411b3 229 CS = 1;
dheerajmpai23 0:314c556411b3 230 adf.format(8,0);
dheerajmpai23 0:314c556411b3 231 adf.frequency( 1000000 );
dheerajmpai23 0:314c556411b3 232
dheerajmpai23 0:314c556411b3 233 cout << "Press s" << ENDL;
dheerajmpai23 0:314c556411b3 234 ledr = 1;
dheerajmpai23 0:314c556411b3 235 char c = 'a';
dheerajmpai23 0:314c556411b3 236 while( c != 's'){
dheerajmpai23 0:314c556411b3 237 c = PC.getc();
dheerajmpai23 0:314c556411b3 238 PC.putc(c);
dheerajmpai23 0:314c556411b3 239 }
dheerajmpai23 0:314c556411b3 240 ledr = 0;
dheerajmpai23 0:314c556411b3 241
dheerajmpai23 0:314c556411b3 242 initiate();
dheerajmpai23 0:314c556411b3 243
dheerajmpai23 0:314c556411b3 244 }
dheerajmpai23 0:314c556411b3 245
dheerajmpai23 0:314c556411b3 246
dheerajmpai23 0:314c556411b3 247