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