ADF7023

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Thu Jul 09 06:55:39 2015 +0000
Revision:
0:85936a084007
ADF7023

Who changed what in which revision?

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