ADF7023

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Fri Jun 26 12:42:36 2015 +0000
Revision:
0:40f50724ae89
Child:
1:5a395f2fcdc8
ORIGINAL CODE GIVEN BY SHREESHA.; Please initiate the adf using the eval board and then run the code using mbed.; ; Thanks for Shreesha for the stud level code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dheerajmpai23 0:40f50724ae89 1 #include "mbed.h"
dheerajmpai23 0:40f50724ae89 2 #include <iostream>
dheerajmpai23 0:40f50724ae89 3 using namespace std;
dheerajmpai23 0:40f50724ae89 4 #include <bitset>
dheerajmpai23 0:40f50724ae89 5
dheerajmpai23 0:40f50724ae89 6 #define ENDL "\r" << endl;
dheerajmpai23 0:40f50724ae89 7 #define START_ADDRESS 0x020;
dheerajmpai23 0:40f50724ae89 8
dheerajmpai23 0:40f50724ae89 9 SPI adf(PTD6, PTD7, PTD5);
dheerajmpai23 0:40f50724ae89 10 //MOSI, MISO, CLOCK
dheerajmpai23 0:40f50724ae89 11
dheerajmpai23 0:40f50724ae89 12 DigitalOut CS(D10);
dheerajmpai23 0:40f50724ae89 13 Serial PC(USBTX, USBRX);
dheerajmpai23 0:40f50724ae89 14 DigitalOut ledr(LED_RED);
dheerajmpai23 0:40f50724ae89 15
dheerajmpai23 0:40f50724ae89 16 #define SPI_NOP 0xFF
dheerajmpai23 0:40f50724ae89 17
dheerajmpai23 0:40f50724ae89 18 enum con_type{ packet=0x18, bbram=0x19, mcr=0x1B, program=0x1E };
dheerajmpai23 0:40f50724ae89 19 enum discon_type{ packet2=0x08, bbram2=0x09, mcr2=0x0B };
dheerajmpai23 0:40f50724ae89 20
dheerajmpai23 0:40f50724ae89 21 enum discon_type_RD{ packet3=0x28, bbram3=0x29, mcr3=0x2B };
dheerajmpai23 0:40f50724ae89 22
dheerajmpai23 0:40f50724ae89 23 void write_con(con_type ram, uint8_t address, uint8_t *data, int length){
dheerajmpai23 0:40f50724ae89 24
dheerajmpai23 0:40f50724ae89 25 int *response = new int[length];
dheerajmpai23 0:40f50724ae89 26
dheerajmpai23 0:40f50724ae89 27 CS = 0;
dheerajmpai23 0:40f50724ae89 28
dheerajmpai23 0:40f50724ae89 29 // ignore recevived data
dheerajmpai23 0:40f50724ae89 30 adf.write( ram );
dheerajmpai23 0:40f50724ae89 31
dheerajmpai23 0:40f50724ae89 32 // write start address
dheerajmpai23 0:40f50724ae89 33 int r = adf.write( address );
dheerajmpai23 0:40f50724ae89 34
dheerajmpai23 0:40f50724ae89 35 // write data
dheerajmpai23 0:40f50724ae89 36 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:40f50724ae89 37 response[i] = adf.write( data[i] );
dheerajmpai23 0:40f50724ae89 38 }
dheerajmpai23 0:40f50724ae89 39
dheerajmpai23 0:40f50724ae89 40 CS = 1;
dheerajmpai23 0:40f50724ae89 41
dheerajmpai23 0:40f50724ae89 42 cout << r << ENDL;
dheerajmpai23 0:40f50724ae89 43 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:40f50724ae89 44 cout << response[i] << " ";
dheerajmpai23 0:40f50724ae89 45 }
dheerajmpai23 0:40f50724ae89 46 cout << ENDL;
dheerajmpai23 0:40f50724ae89 47
dheerajmpai23 0:40f50724ae89 48 }
dheerajmpai23 0:40f50724ae89 49
dheerajmpai23 0:40f50724ae89 50 void write_discon(discon_type ram, uint8_t *address, uint8_t *data, int length){
dheerajmpai23 0:40f50724ae89 51
dheerajmpai23 0:40f50724ae89 52 int *response1 = new int[length];
dheerajmpai23 0:40f50724ae89 53 int *response2 = new int[length];
dheerajmpai23 0:40f50724ae89 54
dheerajmpai23 0:40f50724ae89 55 CS = 0;
dheerajmpai23 0:40f50724ae89 56
dheerajmpai23 0:40f50724ae89 57 // ignore recevived data
dheerajmpai23 0:40f50724ae89 58 adf.write( ram );
dheerajmpai23 0:40f50724ae89 59
dheerajmpai23 0:40f50724ae89 60 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:40f50724ae89 61
dheerajmpai23 0:40f50724ae89 62 // address[7:0] next 8 bits
dheerajmpai23 0:40f50724ae89 63 response1[i] = adf.write( address[i] );
dheerajmpai23 0:40f50724ae89 64
dheerajmpai23 0:40f50724ae89 65 // data next 8 bits
dheerajmpai23 0:40f50724ae89 66 response2[i] = adf.write( data[i] );
dheerajmpai23 0:40f50724ae89 67
dheerajmpai23 0:40f50724ae89 68 }
dheerajmpai23 0:40f50724ae89 69
dheerajmpai23 0:40f50724ae89 70 CS = 1;
dheerajmpai23 0:40f50724ae89 71
dheerajmpai23 0:40f50724ae89 72 for(int i = 0 ; i < length ; ++i){
dheerajmpai23 0:40f50724ae89 73 cout << response1[i] << "\t" << response2[i] << ENDL;
dheerajmpai23 0:40f50724ae89 74 }
dheerajmpai23 0:40f50724ae89 75
dheerajmpai23 0:40f50724ae89 76 }
dheerajmpai23 0:40f50724ae89 77
dheerajmpai23 0:40f50724ae89 78 int read_discon(discon_type_RD ram, uint8_t address){
dheerajmpai23 0:40f50724ae89 79
dheerajmpai23 0:40f50724ae89 80 CS = 0;
dheerajmpai23 0:40f50724ae89 81
dheerajmpai23 0:40f50724ae89 82 // ignore the reply
dheerajmpai23 0:40f50724ae89 83 adf.write( ram );
dheerajmpai23 0:40f50724ae89 84
dheerajmpai23 0:40f50724ae89 85 int stat1 = adf.write( address );
dheerajmpai23 0:40f50724ae89 86 int stat2 = adf.write( SPI_NOP );
dheerajmpai23 0:40f50724ae89 87 int reply = adf.write( SPI_NOP );
dheerajmpai23 0:40f50724ae89 88
dheerajmpai23 0:40f50724ae89 89 CS = 1;
dheerajmpai23 0:40f50724ae89 90
dheerajmpai23 0:40f50724ae89 91 return reply;
dheerajmpai23 0:40f50724ae89 92 }
dheerajmpai23 0:40f50724ae89 93
dheerajmpai23 0:40f50724ae89 94 int main(){
dheerajmpai23 0:40f50724ae89 95
dheerajmpai23 0:40f50724ae89 96 CS = 1;
dheerajmpai23 0:40f50724ae89 97 adf.format(8,0);
dheerajmpai23 0:40f50724ae89 98 adf.frequency( 1000000 );
dheerajmpai23 0:40f50724ae89 99
dheerajmpai23 0:40f50724ae89 100 cout << "Press s" << ENDL;
dheerajmpai23 0:40f50724ae89 101 ledr = 1;
dheerajmpai23 0:40f50724ae89 102 char c = 'a';
dheerajmpai23 0:40f50724ae89 103 while( c != 's'){
dheerajmpai23 0:40f50724ae89 104 c = PC.getc();
dheerajmpai23 0:40f50724ae89 105 PC.putc(c);
dheerajmpai23 0:40f50724ae89 106 }
dheerajmpai23 0:40f50724ae89 107 ledr = 0;
dheerajmpai23 0:40f50724ae89 108 int d=0;
dheerajmpai23 0:40f50724ae89 109
dheerajmpai23 0:40f50724ae89 110
dheerajmpai23 0:40f50724ae89 111 // while(true){
dheerajmpai23 0:40f50724ae89 112 // ledr = !ledr;
dheerajmpai23 0:40f50724ae89 113 // wait(0.2f);
dheerajmpai23 0:40f50724ae89 114 // }
dheerajmpai23 0:40f50724ae89 115
dheerajmpai23 0:40f50724ae89 116
dheerajmpai23 0:40f50724ae89 117 while(true){
dheerajmpai23 0:40f50724ae89 118 CS = 0;
dheerajmpai23 0:40f50724ae89 119 d++;
dheerajmpai23 0:40f50724ae89 120 cout<<d<<ENDL;
dheerajmpai23 0:40f50724ae89 121 // wait_us(1);
dheerajmpai23 0:40f50724ae89 122
dheerajmpai23 0:40f50724ae89 123 // wait_us(1);
dheerajmpai23 0:40f50724ae89 124 adf.write(0xB5);
dheerajmpai23 0:40f50724ae89 125 // adf.write(0xB5);
dheerajmpai23 0:40f50724ae89 126 // d=0;
dheerajmpai23 0:40f50724ae89 127 // wait_us(1);
dheerajmpai23 0:40f50724ae89 128 // CS = 1;
dheerajmpai23 0:40f50724ae89 129 // wait_ms(2);
dheerajmpai23 0:40f50724ae89 130 // CS=0;
dheerajmpai23 0:40f50724ae89 131 unsigned char reply1 = adf.write(0xFF);
dheerajmpai23 0:40f50724ae89 132 // d=0;
dheerajmpai23 0:40f50724ae89 133 unsigned char reply2 = adf.write(0xFF);
dheerajmpai23 0:40f50724ae89 134 // d=0;
dheerajmpai23 0:40f50724ae89 135 //wait_us(1);
dheerajmpai23 0:40f50724ae89 136 // unsigned char reply3 = adf.write(0xFF);
dheerajmpai23 0:40f50724ae89 137 // unsigned char reply4 = adf.write(0xFF);
dheerajmpai23 0:40f50724ae89 138 // CS = 1;
dheerajmpai23 0:40f50724ae89 139
dheerajmpai23 0:40f50724ae89 140 std::bitset<8> b = reply1;
dheerajmpai23 0:40f50724ae89 141 cout << b << " \t ";
dheerajmpai23 0:40f50724ae89 142 b = reply2;
dheerajmpai23 0:40f50724ae89 143 cout << b << " \t " << ENDL;
dheerajmpai23 0:40f50724ae89 144
dheerajmpai23 0:40f50724ae89 145 // wait_ms(10);
dheerajmpai23 0:40f50724ae89 146 }
dheerajmpai23 0:40f50724ae89 147 // b = reply3;
dheerajmpai23 0:40f50724ae89 148 // cout << b << "\t";
dheerajmpai23 0:40f50724ae89 149 // b = reply4;
dheerajmpai23 0:40f50724ae89 150 // cout << b << ENDL;
dheerajmpai23 0:40f50724ae89 151
dheerajmpai23 0:40f50724ae89 152 // wait_ms(330);
dheerajmpai23 0:40f50724ae89 153 //
dheerajmpai23 0:40f50724ae89 154 // CS = 0;
dheerajmpai23 0:40f50724ae89 155 // wait_us(10);
dheerajmpai23 0:40f50724ae89 156 // adf.write(0xff);
dheerajmpai23 0:40f50724ae89 157 // adf.write(0xff);
dheerajmpai23 0:40f50724ae89 158 // wait_us(10);
dheerajmpai23 0:40f50724ae89 159 // CS = 1;
dheerajmpai23 0:40f50724ae89 160
dheerajmpai23 0:40f50724ae89 161 // cout << "SENT" << ENDL;
dheerajmpai23 0:40f50724ae89 162 // wait(1);
dheerajmpai23 0:40f50724ae89 163 // ledr = !ledr;
dheerajmpai23 0:40f50724ae89 164 // }
dheerajmpai23 0:40f50724ae89 165
dheerajmpai23 0:40f50724ae89 166 //
dheerajmpai23 0:40f50724ae89 167 //// BUFFER SIGNAL AND SIZE AND BASE ADDRESS
dheerajmpai23 0:40f50724ae89 168 // discon_type ram_type = bbram2;
dheerajmpai23 0:40f50724ae89 169 // uint8_t *add = new uint8_t[3];
dheerajmpai23 0:40f50724ae89 170 // add[0] = 0x36;
dheerajmpai23 0:40f50724ae89 171 // add[1] = 0x37;
dheerajmpai23 0:40f50724ae89 172 // add[2] = 0x24;
dheerajmpai23 0:40f50724ae89 173 // uint8_t *data = new uint8_t[3];
dheerajmpai23 0:40f50724ae89 174 //// 110
dheerajmpai23 0:40f50724ae89 175 // data[0] = 0x6E;
dheerajmpai23 0:40f50724ae89 176 //// 220
dheerajmpai23 0:40f50724ae89 177 // data[1] = 0xDC;
dheerajmpai23 0:40f50724ae89 178 // data[2] = START_ADDRESS;
dheerajmpai23 0:40f50724ae89 179 //
dheerajmpai23 0:40f50724ae89 180 // cout << "BUFFER SIGNAL AND SIZE AND BASE ADDRESS" << ENDL;
dheerajmpai23 0:40f50724ae89 181 // write_discon( ram_type, add, data, 3 );
dheerajmpai23 0:40f50724ae89 182 // wait(1);
dheerajmpai23 0:40f50724ae89 183 //
dheerajmpai23 0:40f50724ae89 184 //
dheerajmpai23 0:40f50724ae89 185 //// TESTMODES
dheerajmpai23 0:40f50724ae89 186 // discon_type_RD ram_rd = bbram3;
dheerajmpai23 0:40f50724ae89 187 // cout << "READ 139" << ENDL;
dheerajmpai23 0:40f50724ae89 188 // int dat139 = read_discon( ram_rd, 0x39 );
dheerajmpai23 0:40f50724ae89 189 // wait(1);
dheerajmpai23 0:40f50724ae89 190 // cout << "dat139 = " << dat139 << ENDL;
dheerajmpai23 0:40f50724ae89 191 // dat139 |= (1 << 4);
dheerajmpai23 0:40f50724ae89 192 // dat139 &= ~(1 << 5);
dheerajmpai23 0:40f50724ae89 193 //
dheerajmpai23 0:40f50724ae89 194 // delete[] add;
dheerajmpai23 0:40f50724ae89 195 // delete[] data;
dheerajmpai23 0:40f50724ae89 196 //
dheerajmpai23 0:40f50724ae89 197 // add = new uint8_t[1];
dheerajmpai23 0:40f50724ae89 198 // data = new uint8_t[1];
dheerajmpai23 0:40f50724ae89 199 // add[0] = 0x39;
dheerajmpai23 0:40f50724ae89 200 // data[0] = dat139;
dheerajmpai23 0:40f50724ae89 201 // cout << "write testmode " << ENDL;
dheerajmpai23 0:40f50724ae89 202 // write_discon( ram_type, add, data, 1 );
dheerajmpai23 0:40f50724ae89 203 // wait(1);
dheerajmpai23 0:40f50724ae89 204 //
dheerajmpai23 0:40f50724ae89 205 //// transmit size in bytes [268 = 0x010C] [220 = 0xDC]
dheerajmpai23 0:40f50724ae89 206 // ram_type = packet2;
dheerajmpai23 0:40f50724ae89 207 // delete[] add;
dheerajmpai23 0:40f50724ae89 208 // delete[] data;
dheerajmpai23 0:40f50724ae89 209 // add = new uint8_t[2];
dheerajmpai23 0:40f50724ae89 210 // data = new uint8_t[2];
dheerajmpai23 0:40f50724ae89 211 // add[0] = 0x14;
dheerajmpai23 0:40f50724ae89 212 // add[1] = 0x15;
dheerajmpai23 0:40f50724ae89 213 // data[0] = 0xDC;
dheerajmpai23 0:40f50724ae89 214 // data[1] = 0x00;
dheerajmpai23 0:40f50724ae89 215 // cout << "transmit size in packet ram" << ENDL;
dheerajmpai23 0:40f50724ae89 216 // write_discon( ram_type, add, data, 2 );
dheerajmpai23 0:40f50724ae89 217 //
dheerajmpai23 0:40f50724ae89 218 //// START WRITING TO RAM HERE
dheerajmpai23 0:40f50724ae89 219 // con_type rt = packet;
dheerajmpai23 0:40f50724ae89 220 // delete[] data;
dheerajmpai23 0:40f50724ae89 221 // data = new uint8_t[220];
dheerajmpai23 0:40f50724ae89 222 //
dheerajmpai23 0:40f50724ae89 223 // for(int i = 0 ; i < 220 ; ++i){
dheerajmpai23 0:40f50724ae89 224 // data[i] = 0xff;
dheerajmpai23 0:40f50724ae89 225 // }
dheerajmpai23 0:40f50724ae89 226 // uint8_t haha = START_ADDRESS;
dheerajmpai23 0:40f50724ae89 227 // cout << "WRITE PAYLOAD " << ENDL;
dheerajmpai23 0:40f50724ae89 228 // write_con( rt, haha, data, 220 );
dheerajmpai23 0:40f50724ae89 229 // cout << "FINISHED" << ENDL;
dheerajmpai23 0:40f50724ae89 230 // wait(1);
dheerajmpai23 0:40f50724ae89 231 //
dheerajmpai23 0:40f50724ae89 232 //// AND PUT INTO PHY_TX MODE
dheerajmpai23 0:40f50724ae89 233 // int reply = adf.write( 0xB5 );
dheerajmpai23 0:40f50724ae89 234 // cout << reply << ENDL;
dheerajmpai23 0:40f50724ae89 235 //
dheerajmpai23 0:40f50724ae89 236 // wait(5);
dheerajmpai23 0:40f50724ae89 237 //
dheerajmpai23 0:40f50724ae89 238 // reply = adf.write( 0xB1 );
dheerajmpai23 0:40f50724ae89 239 // cout << reply << ENDL;
dheerajmpai23 0:40f50724ae89 240 //
dheerajmpai23 0:40f50724ae89 241 // cout << "FINISHED !!" << ENDL;
dheerajmpai23 0:40f50724ae89 242
dheerajmpai23 0:40f50724ae89 243 }