ADF7023

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Thu Jul 09 06:50:11 2015 +0000
Revision:
0:0337d14f3581
Publishing purpose

Who changed what in which revision?

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