![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ADF7023
main.cpp@1:700c4c6067ab, 2015-07-09 (annotated)
- Committer:
- dheerajmpai23
- Date:
- Thu Jul 09 06:56:19 2015 +0000
- Revision:
- 1:700c4c6067ab
- Parent:
- 0:314c556411b3
ADF7023
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dheerajmpai23 | 0:314c556411b3 | 1 | #include "mbed.h" |
dheerajmpai23 | 0:314c556411b3 | 2 | #include <iostream> |
dheerajmpai23 | 0:314c556411b3 | 3 | using namespace std; |
dheerajmpai23 | 0:314c556411b3 | 4 | #include <bitset> |
dheerajmpai23 | 0:314c556411b3 | 5 | |
dheerajmpai23 | 0:314c556411b3 | 6 | #define ENDL "\r" << endl; |
dheerajmpai23 | 0:314c556411b3 | 7 | #define START_ADDRESS 0x020; |
dheerajmpai23 | 0:314c556411b3 | 8 | |
dheerajmpai23 | 0:314c556411b3 | 9 | |
dheerajmpai23 | 0:314c556411b3 | 10 | |
dheerajmpai23 | 0:314c556411b3 | 11 | //SPI |
dheerajmpai23 | 0:314c556411b3 | 12 | |
dheerajmpai23 | 0:314c556411b3 | 13 | SPI adf(PTD6, PTD7, PTD5); |
dheerajmpai23 | 0:314c556411b3 | 14 | //MOSI, MISO, CLOCK |
dheerajmpai23 | 0:314c556411b3 | 15 | |
dheerajmpai23 | 0:314c556411b3 | 16 | DigitalOut CS(D10); |
dheerajmpai23 | 0:314c556411b3 | 17 | Serial PC(USBTX, USBRX); |
dheerajmpai23 | 0:314c556411b3 | 18 | DigitalOut ledr(LED_RED); |
dheerajmpai23 | 0:314c556411b3 | 19 | |
dheerajmpai23 | 0:314c556411b3 | 20 | #define SPI_NOP 0xFF |
dheerajmpai23 | 0:314c556411b3 | 21 | |
dheerajmpai23 | 0:314c556411b3 | 22 | enum con_type{ packet=0x18, bbram=0x19, mcr=0x1B, program=0x1E }; |
dheerajmpai23 | 0:314c556411b3 | 23 | enum discon_type{ packet2=0x08, bbram2=0x09, mcr2=0x0B }; |
dheerajmpai23 | 0:314c556411b3 | 24 | |
dheerajmpai23 | 0:314c556411b3 | 25 | enum discon_type_RD{ packet3=0x28, bbram3=0x29, mcr3=0x2B }; |
dheerajmpai23 | 0:314c556411b3 | 26 | |
dheerajmpai23 | 0:314c556411b3 | 27 | void write_con(con_type ram, uint8_t address, uint8_t *data, int length){ |
dheerajmpai23 | 0:314c556411b3 | 28 | |
dheerajmpai23 | 0:314c556411b3 | 29 | int *response = new int[length]; |
dheerajmpai23 | 0:314c556411b3 | 30 | |
dheerajmpai23 | 0:314c556411b3 | 31 | CS = 0; |
dheerajmpai23 | 0:314c556411b3 | 32 | |
dheerajmpai23 | 0:314c556411b3 | 33 | // ignore recevived data |
dheerajmpai23 | 0:314c556411b3 | 34 | adf.write( ram ); |
dheerajmpai23 | 0:314c556411b3 | 35 | |
dheerajmpai23 | 0:314c556411b3 | 36 | // write start address |
dheerajmpai23 | 0:314c556411b3 | 37 | int r = adf.write( address ); |
dheerajmpai23 | 0:314c556411b3 | 38 | |
dheerajmpai23 | 0:314c556411b3 | 39 | // write data |
dheerajmpai23 | 0:314c556411b3 | 40 | for(int i = 0 ; i < length ; ++i){ |
dheerajmpai23 | 0:314c556411b3 | 41 | response[i] = adf.write( data[i] ); |
dheerajmpai23 | 0:314c556411b3 | 42 | } |
dheerajmpai23 | 0:314c556411b3 | 43 | |
dheerajmpai23 | 0:314c556411b3 | 44 | CS = 1; |
dheerajmpai23 | 0:314c556411b3 | 45 | |
dheerajmpai23 | 0:314c556411b3 | 46 | cout << r << ENDL; |
dheerajmpai23 | 0:314c556411b3 | 47 | for(int i = 0 ; i < length ; ++i){ |
dheerajmpai23 | 0:314c556411b3 | 48 | cout << response[i] << " "; |
dheerajmpai23 | 0:314c556411b3 | 49 | } |
dheerajmpai23 | 0:314c556411b3 | 50 | cout << ENDL; |
dheerajmpai23 | 0:314c556411b3 | 51 | |
dheerajmpai23 | 0:314c556411b3 | 52 | } |
dheerajmpai23 | 0:314c556411b3 | 53 | |
dheerajmpai23 | 0:314c556411b3 | 54 | void write_discon(discon_type ram, uint8_t *address, uint8_t *data, int length){ |
dheerajmpai23 | 0:314c556411b3 | 55 | |
dheerajmpai23 | 0:314c556411b3 | 56 | int *response1 = new int[length]; |
dheerajmpai23 | 0:314c556411b3 | 57 | int *response2 = new int[length]; |
dheerajmpai23 | 0:314c556411b3 | 58 | |
dheerajmpai23 | 0:314c556411b3 | 59 | CS = 0; |
dheerajmpai23 | 0:314c556411b3 | 60 | |
dheerajmpai23 | 0:314c556411b3 | 61 | // ignore recevived data |
dheerajmpai23 | 0:314c556411b3 | 62 | adf.write( ram ); |
dheerajmpai23 | 0:314c556411b3 | 63 | |
dheerajmpai23 | 0:314c556411b3 | 64 | for(int i = 0 ; i < length ; ++i){ |
dheerajmpai23 | 0:314c556411b3 | 65 | |
dheerajmpai23 | 0:314c556411b3 | 66 | // address[7:0] next 8 bits |
dheerajmpai23 | 0:314c556411b3 | 67 | response1[i] = adf.write( address[i] ); |
dheerajmpai23 | 0:314c556411b3 | 68 | |
dheerajmpai23 | 0:314c556411b3 | 69 | // data next 8 bits |
dheerajmpai23 | 0:314c556411b3 | 70 | response2[i] = adf.write( data[i] ); |
dheerajmpai23 | 0:314c556411b3 | 71 | |
dheerajmpai23 | 0:314c556411b3 | 72 | } |
dheerajmpai23 | 0:314c556411b3 | 73 | |
dheerajmpai23 | 0:314c556411b3 | 74 | CS = 1; |
dheerajmpai23 | 0:314c556411b3 | 75 | |
dheerajmpai23 | 0:314c556411b3 | 76 | for(int i = 0 ; i < length ; ++i){ |
dheerajmpai23 | 0:314c556411b3 | 77 | cout << response1[i] << "\t" << response2[i] << ENDL; |
dheerajmpai23 | 0:314c556411b3 | 78 | } |
dheerajmpai23 | 0:314c556411b3 | 79 | |
dheerajmpai23 | 0:314c556411b3 | 80 | } |
dheerajmpai23 | 0:314c556411b3 | 81 | |
dheerajmpai23 | 0:314c556411b3 | 82 | int read_discon(discon_type_RD ram, uint8_t address){ |
dheerajmpai23 | 0:314c556411b3 | 83 | |
dheerajmpai23 | 0:314c556411b3 | 84 | CS = 0; |
dheerajmpai23 | 0:314c556411b3 | 85 | |
dheerajmpai23 | 0:314c556411b3 | 86 | // ignore the reply |
dheerajmpai23 | 0:314c556411b3 | 87 | adf.write( ram ); |
dheerajmpai23 | 0:314c556411b3 | 88 | |
dheerajmpai23 | 0:314c556411b3 | 89 | int stat1 = adf.write( address ); |
dheerajmpai23 | 0:314c556411b3 | 90 | int stat2 = adf.write( SPI_NOP ); |
dheerajmpai23 | 0:314c556411b3 | 91 | int reply = adf.write( SPI_NOP ); |
dheerajmpai23 | 0:314c556411b3 | 92 | |
dheerajmpai23 | 0:314c556411b3 | 93 | CS = 1; |
dheerajmpai23 | 0:314c556411b3 | 94 | |
dheerajmpai23 | 0:314c556411b3 | 95 | return reply; |
dheerajmpai23 | 0:314c556411b3 | 96 | } |
dheerajmpai23 | 0:314c556411b3 | 97 | |
dheerajmpai23 | 0:314c556411b3 | 98 | void write_bbram_sequence(void){ |
dheerajmpai23 | 0:314c556411b3 | 99 | |
dheerajmpai23 | 0:314c556411b3 | 100 | adf.write(0x19); |
dheerajmpai23 | 0:314c556411b3 | 101 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 102 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 103 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 104 | |
dheerajmpai23 | 0:314c556411b3 | 105 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 106 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 107 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 108 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 109 | |
dheerajmpai23 | 0:314c556411b3 | 110 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 111 | adf.write(0x33); |
dheerajmpai23 | 0:314c556411b3 | 112 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 113 | adf.write(0xF4); |
dheerajmpai23 | 0:314c556411b3 | 114 | |
dheerajmpai23 | 0:314c556411b3 | 115 | adf.write(0xC2); |
dheerajmpai23 | 0:314c556411b3 | 116 | adf.write(0x10); |
dheerajmpai23 | 0:314c556411b3 | 117 | adf.write(0xC0); |
dheerajmpai23 | 0:314c556411b3 | 118 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 119 | |
dheerajmpai23 | 0:314c556411b3 | 120 | adf.write(0x30); |
dheerajmpai23 | 0:314c556411b3 | 121 | adf.write(0x31); |
dheerajmpai23 | 0:314c556411b3 | 122 | adf.write(0x07); |
dheerajmpai23 | 0:314c556411b3 | 123 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 124 | |
dheerajmpai23 | 0:314c556411b3 | 125 | adf.write(0x01); |
dheerajmpai23 | 0:314c556411b3 | 126 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 127 | adf.write(0x7F); |
dheerajmpai23 | 0:314c556411b3 | 128 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 129 | |
dheerajmpai23 | 0:314c556411b3 | 130 | adf.write(0x0B); |
dheerajmpai23 | 0:314c556411b3 | 131 | adf.write(0x37); |
dheerajmpai23 | 0:314c556411b3 | 132 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 133 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 134 | adf.write(0x40); |
dheerajmpai23 | 0:314c556411b3 | 135 | adf.write(0x0C); |
dheerajmpai23 | 0:314c556411b3 | 136 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 137 | adf.write(0x05); |
dheerajmpai23 | 0:314c556411b3 | 138 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 139 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 140 | adf.write(0x18); |
dheerajmpai23 | 0:314c556411b3 | 141 | adf.write(0x12); |
dheerajmpai23 | 0:314c556411b3 | 142 | adf.write(0x34); |
dheerajmpai23 | 0:314c556411b3 | 143 | adf.write(0x56); |
dheerajmpai23 | 0:314c556411b3 | 144 | adf.write(0x10); |
dheerajmpai23 | 0:314c556411b3 | 145 | adf.write(0x10); |
dheerajmpai23 | 0:314c556411b3 | 146 | adf.write(0x08); |
dheerajmpai23 | 0:314c556411b3 | 147 | adf.write(0x14); |
dheerajmpai23 | 0:314c556411b3 | 148 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 149 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 150 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 151 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 152 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 153 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 154 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 155 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 156 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 157 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 158 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 159 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 160 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 161 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 162 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 163 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 164 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 165 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 166 | adf.write(0x04); |
dheerajmpai23 | 0:314c556411b3 | 167 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 168 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 169 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 170 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 171 | adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 172 | |
dheerajmpai23 | 0:314c556411b3 | 173 | } |
dheerajmpai23 | 0:314c556411b3 | 174 | |
dheerajmpai23 | 0:314c556411b3 | 175 | void initiate(void){ |
dheerajmpai23 | 0:314c556411b3 | 176 | |
dheerajmpai23 | 0:314c556411b3 | 177 | CS=0; |
dheerajmpai23 | 0:314c556411b3 | 178 | adf.write(0xB0); |
dheerajmpai23 | 0:314c556411b3 | 179 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 180 | wait_ms(2); |
dheerajmpai23 | 0:314c556411b3 | 181 | |
dheerajmpai23 | 0:314c556411b3 | 182 | CS=0; |
dheerajmpai23 | 1:700c4c6067ab | 183 | adf.write(0x1BFAA1); |
dheerajmpai23 | 1:700c4c6067ab | 184 | // adf.write(0xFA); |
dheerajmpai23 | 1:700c4c6067ab | 185 | // adf.write(0xA1); |
dheerajmpai23 | 0:314c556411b3 | 186 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 187 | wait_ms(2); |
dheerajmpai23 | 0:314c556411b3 | 188 | |
dheerajmpai23 | 0:314c556411b3 | 189 | CS=0; |
dheerajmpai23 | 1:700c4c6067ab | 190 | adf.write(0x180D00); |
dheerajmpai23 | 1:700c4c6067ab | 191 | // adf.write(0x0D); |
dheerajmpai23 | 1:700c4c6067ab | 192 | // adf.write(0x00); |
dheerajmpai23 | 0:314c556411b3 | 193 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 194 | wait_ms(2); |
dheerajmpai23 | 1:700c4c6067ab | 195 | // |
dheerajmpai23 | 0:314c556411b3 | 196 | CS=0; |
dheerajmpai23 | 0:314c556411b3 | 197 | write_bbram_sequence(); |
dheerajmpai23 | 0:314c556411b3 | 198 | CS=1; |
dheerajmpai23 | 1:700c4c6067ab | 199 | wait_ms(500); |
dheerajmpai23 | 1:700c4c6067ab | 200 | // cout<<"Please write BBRAM SEquence Fast"<<ENDL; |
dheerajmpai23 | 1:700c4c6067ab | 201 | // wait(45); |
dheerajmpai23 | 1:700c4c6067ab | 202 | cout<<"i HOPE BBRAM_SEQUENCE WRITTEN"<<ENDL; |
dheerajmpai23 | 1:700c4c6067ab | 203 | wait(5); |
dheerajmpai23 | 0:314c556411b3 | 204 | CS=0; |
dheerajmpai23 | 0:314c556411b3 | 205 | adf.write(0xBB);//CONFIGURE_DEV |
dheerajmpai23 | 0:314c556411b3 | 206 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 207 | wait_ms(2); |
dheerajmpai23 | 0:314c556411b3 | 208 | |
dheerajmpai23 | 0:314c556411b3 | 209 | cout<<"CONFIG_DEV"<<ENDL; |
dheerajmpai23 | 0:314c556411b3 | 210 | |
dheerajmpai23 | 0:314c556411b3 | 211 | CS=0; |
dheerajmpai23 | 0:314c556411b3 | 212 | adf.write(0xB1);//PHY_ON |
dheerajmpai23 | 0:314c556411b3 | 213 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 214 | wait_ms(2); |
dheerajmpai23 | 0:314c556411b3 | 215 | |
dheerajmpai23 | 0:314c556411b3 | 216 | CS=0; |
dheerajmpai23 | 0:314c556411b3 | 217 | adf.write(0xB5);//PHY_TX |
dheerajmpai23 | 0:314c556411b3 | 218 | CS=1; |
dheerajmpai23 | 0:314c556411b3 | 219 | wait_ms(2); |
dheerajmpai23 | 0:314c556411b3 | 220 | |
dheerajmpai23 | 0:314c556411b3 | 221 | cout<<"PHY_TX"<<ENDL; |
dheerajmpai23 | 0:314c556411b3 | 222 | } |
dheerajmpai23 | 0:314c556411b3 | 223 | |
dheerajmpai23 | 0:314c556411b3 | 224 | |
dheerajmpai23 | 0:314c556411b3 | 225 | |
dheerajmpai23 | 0:314c556411b3 | 226 | |
dheerajmpai23 | 0:314c556411b3 | 227 | int main(){ |
dheerajmpai23 | 0:314c556411b3 | 228 | |
dheerajmpai23 | 0:314c556411b3 | 229 | |
dheerajmpai23 | 0:314c556411b3 | 230 | CS = 1; |
dheerajmpai23 | 0:314c556411b3 | 231 | adf.format(8,0); |
dheerajmpai23 | 0:314c556411b3 | 232 | adf.frequency( 1000000 ); |
dheerajmpai23 | 0:314c556411b3 | 233 | |
dheerajmpai23 | 0:314c556411b3 | 234 | cout << "Press s" << ENDL; |
dheerajmpai23 | 0:314c556411b3 | 235 | ledr = 1; |
dheerajmpai23 | 0:314c556411b3 | 236 | char c = 'a'; |
dheerajmpai23 | 0:314c556411b3 | 237 | while( c != 's'){ |
dheerajmpai23 | 0:314c556411b3 | 238 | c = PC.getc(); |
dheerajmpai23 | 0:314c556411b3 | 239 | PC.putc(c); |
dheerajmpai23 | 0:314c556411b3 | 240 | } |
dheerajmpai23 | 0:314c556411b3 | 241 | ledr = 0; |
dheerajmpai23 | 0:314c556411b3 | 242 | |
dheerajmpai23 | 0:314c556411b3 | 243 | initiate(); |
dheerajmpai23 | 0:314c556411b3 | 244 | |
dheerajmpai23 | 0:314c556411b3 | 245 | } |
dheerajmpai23 | 0:314c556411b3 | 246 | |
dheerajmpai23 | 0:314c556411b3 | 247 | |
dheerajmpai23 | 0:314c556411b3 | 248 |