![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ADF SPORTMODE DSP
main.cpp@0:06c67e13716b, 2015-07-09 (annotated)
- Committer:
- dheerajmpai23
- Date:
- Thu Jul 09 06:49:09 2015 +0000
- Revision:
- 0:06c67e13716b
for publishing
Who changed what in which revision?
User | Revision | Line number | New 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 | } |