ADF SPORTMODE DSP

Dependencies:   mbed

Committer:
dheerajmpai23
Date:
Thu Jul 09 06:49:09 2015 +0000
Revision:
0:06c67e13716b
for publishing

Who changed what in which revision?

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