CDMS code for testing sbc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Committer:
ee12b079
Date:
Thu Jul 21 13:18:02 2016 +0000
Revision:
269:72529b247333
Parent:
268:ded5306a1fd1
Testing OBSRS TM and adf and srp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 1:a0055b3280c8 1 //without reset feature , with state checks.
ee12b079 172:c508bbf7e89a 2 InterruptIn IRQ(ADF_IRQ);
aniruddhv 52:0bd68655c651 3 //Ticker ticker;
ee12b079 176:a5bfe3ca60b1 4
shreeshas95 1:a0055b3280c8 5 bool loop_on;
shreeshas95 1:a0055b3280c8 6 bool ADF_off;
shreeshas95 1:a0055b3280c8 7 bool buffer_state;
ee12b079 9:e9eaada136c6 8 bool finish_write_data;
shreeshas95 1:a0055b3280c8 9 uint8_t signal = 0x00;
ee12b079 268:ded5306a1fd1 10 unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00};
ee12b079 268:ded5306a1fd1 11 bool data_irq_err=0;
ee12b079 268:ded5306a1fd1 12 bool data_err= false;
ee12b079 268:ded5306a1fd1 13 unsigned char temp_byte=0x00;
ee12b079 268:ded5306a1fd1 14 unsigned char data_err1[112];
ee12b079 268:ded5306a1fd1 15 unsigned char data_err_cnt=0;
ee12b079 268:ded5306a1fd1 16 unsigned int byte_count =0;
ee12b079 268:ded5306a1fd1 17 #define DATA_ERR_THRS 20
ee12b079 268:ded5306a1fd1 18 bool rolling_buffer_settings_error=true;
ee12b079 268:ded5306a1fd1 19 bool bbram_write_success=true;
ee12b079 268:ded5306a1fd1 20 int bbram_err_cnt=0;
ee12b079 268:ded5306a1fd1 21 int rbp_err_cnt=0;
ee12b079 268:ded5306a1fd1 22 bool reset_flag=false;
ee12b079 268:ded5306a1fd1 23 #define RBP_THRS 4
ee12b079 268:ded5306a1fd1 24 bool quit_configuration=false;
ee12b079 268:ded5306a1fd1 25 bool power_reset_flag=false;
ee12b079 268:ded5306a1fd1 26 unsigned int power_reset_count=0;
ee12b079 268:ded5306a1fd1 27 bool Configuration_done=false;
ee12b079 268:ded5306a1fd1 28 #define HW_THRS 2
ee12b079 9:e9eaada136c6 29
shreeshas95 2:2caf2a9a13aa 30 //int initialise_card();
shreeshas95 2:2caf2a9a13aa 31 //int disk_initialize();
shreeshas95 1:a0055b3280c8 32 //------------------------------------------------------------------------
shreeshas95 1:a0055b3280c8 33 // state checking functions
shreeshas95 1:a0055b3280c8 34 //bool assrt_phy_off( int, int, int);
shreeshas95 1:a0055b3280c8 35 //bool assrt_phy_on( int,int,int);
shreeshas95 1:a0055b3280c8 36 //bool assrt_phy_tx(int,int,int);
ee12b079 268:ded5306a1fd1 37
ee12b079 268:ded5306a1fd1 38 #define TRANSMIT_LEN_1 0xFF
ee12b079 268:ded5306a1fd1 39 #define TRANSMIT_LEN_2 0xFF
ee12b079 268:ded5306a1fd1 40 /***/
ee12b079 268:ded5306a1fd1 41 Timer T;
ee12b079 9:e9eaada136c6 42
shreeshas95 1:a0055b3280c8 43 #define START_ADDRESS 0x020;
shreeshas95 1:a0055b3280c8 44 #define MISO_PIN PTE3
shreeshas95 1:a0055b3280c8 45 /**************Defining Counter Limits**************/
shreeshas95 1:a0055b3280c8 46 #define THRS 20
shreeshas95 1:a0055b3280c8 47 #define STATE_ERR_THRS 20
shreeshas95 1:a0055b3280c8 48 #define PHY_OFF_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 49 #define PHY_ON_EXEC_TIME 300
shreeshas95 1:a0055b3280c8 50 #define PHY_TX_EXEC_TIME 600
shreeshas95 1:a0055b3280c8 51 /******DEFINING COMMANDS*********/
shreeshas95 1:a0055b3280c8 52 #define CMD_HW_RESET 0xC8
shreeshas95 1:a0055b3280c8 53 #define CMD_PHY_ON 0xB1
shreeshas95 1:a0055b3280c8 54 #define CMD_PHY_OFF 0xB0
shreeshas95 1:a0055b3280c8 55 #define CMD_PHY_TX 0xB5
shreeshas95 1:a0055b3280c8 56 #define CMD_CONFIG_DEV 0xBB
ee12b079 268:ded5306a1fd1 57 /**STATES**/
ee12b079 268:ded5306a1fd1 58 //=======================
ee12b079 268:ded5306a1fd1 59 #define PHY_OFF 0xB1
ee12b079 268:ded5306a1fd1 60 #define PHY_ON 0xB2
ee12b079 268:ded5306a1fd1 61 #define PHY_TX 0xB4
ee12b079 268:ded5306a1fd1 62 #define BUSY 0x00
ee12b079 268:ded5306a1fd1 63 //===================================================
ee12b079 268:ded5306a1fd1 64
ee12b079 268:ded5306a1fd1 65 unsigned int Adf_data_counter=0;
ee12b079 268:ded5306a1fd1 66 unsigned char status =0;
ee12b079 268:ded5306a1fd1 67 unsigned int cmd_err_cnt=0;
ee12b079 268:ded5306a1fd1 68 unsigned int data_length;
ee12b079 268:ded5306a1fd1 69 unsigned int state_err_cnt=0;
ee12b079 268:ded5306a1fd1 70 unsigned int miso_err_cnt=0;
ee12b079 268:ded5306a1fd1 71 unsigned int hw_reset_err_cnt=0;
ee12b079 268:ded5306a1fd1 72 unsigned int counter =0;
ee12b079 268:ded5306a1fd1 73 bool temp_return = 0;
ee12b079 268:ded5306a1fd1 74 bool bcn_flag=0;
ee12b079 268:ded5306a1fd1 75 bool bbram_flag=0;
ee12b079 268:ded5306a1fd1 76
ee12b079 268:ded5306a1fd1 77 bool stop_transmission=false;
ee12b079 268:ded5306a1fd1 78
ee12b079 268:ded5306a1fd1 79 #define reset_flags {\
ee12b079 268:ded5306a1fd1 80 finish_write_data = false;\
ee12b079 268:ded5306a1fd1 81 buffer_state = true;\
ee12b079 268:ded5306a1fd1 82 last_buffer = false;\
ee12b079 268:ded5306a1fd1 83 loop_on = true;\
ee12b079 268:ded5306a1fd1 84 ADF_off = false;\
ee12b079 268:ded5306a1fd1 85 buffer_state = true;\
ee12b079 268:ded5306a1fd1 86 loop_on = true;\
ee12b079 268:ded5306a1fd1 87 ADF_off = false;\
ee12b079 269:72529b247333 88 /*sent_tmfrom_SDcard = false;*/\
ee12b079 268:ded5306a1fd1 89 Adf_data_counter=0;\
ee12b079 268:ded5306a1fd1 90 status =0;\
ee12b079 268:ded5306a1fd1 91 cmd_err_cnt=0;\
ee12b079 268:ded5306a1fd1 92 data_length;\
ee12b079 268:ded5306a1fd1 93 state_err_cnt=0;\
ee12b079 268:ded5306a1fd1 94 miso_err_cnt=0;\
ee12b079 268:ded5306a1fd1 95 hw_reset_err_cnt=0;\
ee12b079 268:ded5306a1fd1 96 counter =0;\
ee12b079 268:ded5306a1fd1 97 bcn_flag=0;\
ee12b079 268:ded5306a1fd1 98 bbram_flag=0;\
ee12b079 268:ded5306a1fd1 99 stop_transmission=false;\
ee12b079 268:ded5306a1fd1 100 }
ee12b079 268:ded5306a1fd1 101
ee12b079 268:ded5306a1fd1 102
ee12b079 268:ded5306a1fd1 103 int err_arr[64];
ee12b079 268:ded5306a1fd1 104 bool bbram_err=false;
ee12b079 268:ded5306a1fd1 105 int err_idx=-1;
ee12b079 268:ded5306a1fd1 106 int err[64];
ee12b079 268:ded5306a1fd1 107 #define bbram_check gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 108 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 109 err_arr[i]=0;\
ee12b079 268:ded5306a1fd1 110 }\
ee12b079 268:ded5306a1fd1 111 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 112 err[i]=0;\
ee12b079 268:ded5306a1fd1 113 }\
ee12b079 268:ded5306a1fd1 114 bbram_err=false;\
ee12b079 268:ded5306a1fd1 115 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 116 spi.write(0x39);\
ee12b079 268:ded5306a1fd1 117 spi.write(0x00);\
ee12b079 268:ded5306a1fd1 118 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 119 for(int i=0;i<64;i++){\
ee12b079 268:ded5306a1fd1 120 err_arr[i]=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 121 if(err_arr[i]!=bbram_buffer[i+2]){\
ee12b079 268:ded5306a1fd1 122 err[i]=1;\
ee12b079 268:ded5306a1fd1 123 bbram_err=true;\
ee12b079 268:ded5306a1fd1 124 }\
ee12b079 268:ded5306a1fd1 125 }\
ee12b079 268:ded5306a1fd1 126 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 127 if(!bbram_err)\
ee12b079 268:ded5306a1fd1 128 gPC.printf("BBRAM verified \r\n");\
ee12b079 268:ded5306a1fd1 129 else\
ee12b079 268:ded5306a1fd1 130 gPC.printf("BBRAM error \r\n");\
ee12b079 176:a5bfe3ca60b1 131
ee12b079 268:ded5306a1fd1 132
ee12b079 268:ded5306a1fd1 133 bool tx_loop=1;
ee12b079 268:ded5306a1fd1 134
ee12b079 268:ded5306a1fd1 135 #define PRNT_ONCE {\
ee12b079 268:ded5306a1fd1 136 gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
ee12b079 268:ded5306a1fd1 137 }
ee12b079 268:ded5306a1fd1 138
ee12b079 268:ded5306a1fd1 139 #define bbram_write {\
ee12b079 268:ded5306a1fd1 140 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 141 spi.write(0xB0);\
ee12b079 268:ded5306a1fd1 142 wait_us(300);\
ee12b079 268:ded5306a1fd1 143 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 144 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 145 for(int i=0;i<66;i++){\
ee12b079 268:ded5306a1fd1 146 spi.write(bbram_buffer[i]);\
ee12b079 268:ded5306a1fd1 147 }\
ee12b079 268:ded5306a1fd1 148 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 149 }
ee12b079 268:ded5306a1fd1 150 //------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 151 // state checking functions
ee12b079 268:ded5306a1fd1 152 //bool assrt_phy_off( int, int, int);
ee12b079 268:ded5306a1fd1 153 //bool assrt_phy_on( int,int,int);
ee12b079 268:ded5306a1fd1 154 //bool assrt_phy_tx(int,int,int);
ee12b079 268:ded5306a1fd1 155
shreeshas95 1:a0055b3280c8 156 #define check_status {\
shreeshas95 1:a0055b3280c8 157 unsigned char stat=0;\
shreeshas95 1:a0055b3280c8 158 gCS_ADF=0;\
ee12b079 176:a5bfe3ca60b1 159 spi.write(0xFF);\
ee12b079 176:a5bfe3ca60b1 160 stat = spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 161 gCS_ADF=1;\
ee12b079 176:a5bfe3ca60b1 162 status = stat;\
shreeshas95 1:a0055b3280c8 163 }
ee12b079 269:72529b247333 164 /***********************/
ee12b079 269:72529b247333 165 /**********Restart ADF**************/
ee12b079 269:72529b247333 166
ee12b079 269:72529b247333 167 /**************************/
ee12b079 268:ded5306a1fd1 168
ee12b079 268:ded5306a1fd1 169 /*CMD_VAR*/
ee12b079 268:ded5306a1fd1 170 bool cmd_bit=true;
ee12b079 268:ded5306a1fd1 171 bool cmd_err_flag=false;
ee12b079 268:ded5306a1fd1 172 unsigned char command = 0x00;
ee12b079 269:72529b247333 173 void CMD(uint8_t command) {
ee12b079 269:72529b247333 174 cmd_err_cnt=0;
ee12b079 269:72529b247333 175 cmd_err_flag=false;
ee12b079 269:72529b247333 176 while(cmd_err_cnt<3) {
ee12b079 269:72529b247333 177 check_status;
ee12b079 269:72529b247333 178 cmd_bit=status&0x20;
ee12b079 269:72529b247333 179 if(cmd_bit) {
ee12b079 269:72529b247333 180 gCS_ADF=0;
ee12b079 269:72529b247333 181 spi.write(command);
ee12b079 269:72529b247333 182 gCS_ADF=1;
ee12b079 269:72529b247333 183 break;
ee12b079 269:72529b247333 184 } else {
ee12b079 269:72529b247333 185 wait_us(5);
ee12b079 269:72529b247333 186 cmd_err_cnt++;
ee12b079 269:72529b247333 187 }
ee12b079 269:72529b247333 188 }
ee12b079 269:72529b247333 189 if(cmd_err_cnt==3) {
ee12b079 269:72529b247333 190 cmd_err_flag=true;
ee12b079 269:72529b247333 191 }
ee12b079 268:ded5306a1fd1 192 }
ee12b079 269:72529b247333 193
ee12b079 269:72529b247333 194 // all three arguments are int
ee12b079 268:ded5306a1fd1 195 #define assrt_phy_off {\
ee12b079 268:ded5306a1fd1 196 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 197 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 198 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 199 temp_return=1;\
chaithanyarss 261:1e54415b34d3 200 }\
ee12b079 268:ded5306a1fd1 201 else{\
ee12b079 268:ded5306a1fd1 202 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 203 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 204 check_status;\
ee12b079 268:ded5306a1fd1 205 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 206 temp_return = 0;\
ee12b079 268:ded5306a1fd1 207 break;\
ee12b079 268:ded5306a1fd1 208 }\
ee12b079 268:ded5306a1fd1 209 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 210 temp_return = 1;\
ee12b079 268:ded5306a1fd1 211 break;\
ee12b079 268:ded5306a1fd1 212 }\
ee12b079 268:ded5306a1fd1 213 else {\
ee12b079 268:ded5306a1fd1 214 wait_ms(1);\
ee12b079 268:ded5306a1fd1 215 }\
shreeshas95 1:a0055b3280c8 216 }\
ee12b079 245:da9d1bd999da 217 }\
ee12b079 245:da9d1bd999da 218 }
ee12b079 268:ded5306a1fd1 219
ee12b079 268:ded5306a1fd1 220
ee12b079 268:ded5306a1fd1 221 bool hardware_reset(int bcn_call)
ee12b079 268:ded5306a1fd1 222 {
ee12b079 268:ded5306a1fd1 223 for(int i= 0; i < 2 ; i++) {
shreeshas95 1:a0055b3280c8 224 gCS_ADF=0;
shreeshas95 1:a0055b3280c8 225 spi.write(CMD_HW_RESET);
shreeshas95 1:a0055b3280c8 226 gCS_ADF=1;
shreeshas95 1:a0055b3280c8 227 wait_ms(2);// Typically 1 ms
shreeshas95 1:a0055b3280c8 228 int count=0;
ee12b079 268:ded5306a1fd1 229 temp_return = 0;
ee12b079 268:ded5306a1fd1 230 while(count<10 && miso_err_cnt<10) {
ee12b079 268:ded5306a1fd1 231 if(MISO_PIN) {
ee12b079 268:ded5306a1fd1 232 // assrt_phy_off;
ee12b079 268:ded5306a1fd1 233 /*asseert_phyoff Starts**/
ee12b079 268:ded5306a1fd1 234 {\
ee12b079 268:ded5306a1fd1 235 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 236 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 237 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 238 temp_return=1;\
ee12b079 268:ded5306a1fd1 239 }\
ee12b079 268:ded5306a1fd1 240 else{\
ee12b079 268:ded5306a1fd1 241 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 242 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 243 check_status;\
ee12b079 268:ded5306a1fd1 244 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 245 temp_return = 0;\
ee12b079 268:ded5306a1fd1 246 break;\
ee12b079 268:ded5306a1fd1 247 }\
ee12b079 268:ded5306a1fd1 248 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 249 temp_return = 1;\
ee12b079 268:ded5306a1fd1 250 break;\
ee12b079 268:ded5306a1fd1 251 }\
ee12b079 268:ded5306a1fd1 252 else {\
ee12b079 268:ded5306a1fd1 253 wait_ms(1);\
ee12b079 268:ded5306a1fd1 254 }\
ee12b079 268:ded5306a1fd1 255 }\
ee12b079 268:ded5306a1fd1 256 }\
ee12b079 268:ded5306a1fd1 257 }\
ee12b079 268:ded5306a1fd1 258 /*Assert_phy_off_ends*/
ee12b079 268:ded5306a1fd1 259
ee12b079 268:ded5306a1fd1 260
ee12b079 268:ded5306a1fd1 261
ee12b079 268:ded5306a1fd1 262
ee12b079 268:ded5306a1fd1 263
shreeshas95 1:a0055b3280c8 264 if(!temp_return){
shreeshas95 1:a0055b3280c8 265 return 0;
shreeshas95 1:a0055b3280c8 266 }
shreeshas95 1:a0055b3280c8 267 count++;
ee12b079 268:ded5306a1fd1 268 } else {
shreeshas95 1:a0055b3280c8 269 wait_us(50);
shreeshas95 1:a0055b3280c8 270 miso_err_cnt++;
shreeshas95 1:a0055b3280c8 271 }
shreeshas95 1:a0055b3280c8 272 }
shreeshas95 1:a0055b3280c8 273 }
shreeshas95 1:a0055b3280c8 274 return 1;
shreeshas95 1:a0055b3280c8 275 }
ee12b079 268:ded5306a1fd1 276 //for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
shreeshas95 1:a0055b3280c8 277 //----------------------------------------------------------------------------
ee12b079 268:ded5306a1fd1 278 unsigned char temp;
ee12b079 268:ded5306a1fd1 279 bool reg_err;
ee12b079 268:ded5306a1fd1 280 int reg_err_cnt;
ee12b079 268:ded5306a1fd1 281 #define REG_ERR_THRS 5
ee12b079 268:ded5306a1fd1 282 #define reg_check(addr1,addr2,reg_val){\
ee12b079 268:ded5306a1fd1 283 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 284 reg_err=false;\
ee12b079 268:ded5306a1fd1 285 spi.write(addr1);\
ee12b079 268:ded5306a1fd1 286 spi.write(addr2);\
ee12b079 268:ded5306a1fd1 287 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 288 temp = spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 289 if(temp==reg_val)\
ee12b079 268:ded5306a1fd1 290 reg_err = false;\
ee12b079 268:ded5306a1fd1 291 else\
ee12b079 268:ded5306a1fd1 292 reg_err=true;\
ee12b079 268:ded5306a1fd1 293 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 294 }
ee12b079 268:ded5306a1fd1 295
ee12b079 268:ded5306a1fd1 296 #define initiate {\
shreeshas95 1:a0055b3280c8 297 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 298 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 299 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 300 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 301 reg_err=true;\
ee12b079 268:ded5306a1fd1 302 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 303 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 304 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 305 spi.write(0x14);\
ee12b079 268:ded5306a1fd1 306 spi.write(TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 307 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 308 reg_check(0x28,0x14,TRANSMIT_LEN_1);\
ee12b079 268:ded5306a1fd1 309 }\
ee12b079 268:ded5306a1fd1 310 if(reg_err)\
ee12b079 268:ded5306a1fd1 311 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 312 else\
ee12b079 268:ded5306a1fd1 313 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 314 reg_err=true;\
ee12b079 268:ded5306a1fd1 315 for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
ee12b079 268:ded5306a1fd1 316 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 317 spi.write(0x08);\
ee12b079 268:ded5306a1fd1 318 spi.write(0x15);\
ee12b079 268:ded5306a1fd1 319 spi.write(TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 320 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 321 reg_check(0x28,0x15,TRANSMIT_LEN_2);\
ee12b079 268:ded5306a1fd1 322 }\
ee12b079 268:ded5306a1fd1 323 if(reg_err)\
ee12b079 268:ded5306a1fd1 324 gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 325 else\
ee12b079 268:ded5306a1fd1 326 gPC.printf("reg written successful %x \r\n",(int)temp);\
ee12b079 268:ded5306a1fd1 327 }
ee12b079 268:ded5306a1fd1 328
ee12b079 268:ded5306a1fd1 329 #define write_data {\
ee12b079 268:ded5306a1fd1 330 counter++;\
ee12b079 269:72529b247333 331 if(counter==584){\
ee12b079 269:72529b247333 332 finish_write_data=true;\
ee12b079 269:72529b247333 333 restart_adf_flag=true;\
ee12b079 269:72529b247333 334 counter=0;\
ee12b079 269:72529b247333 335 }\
shreeshas95 1:a0055b3280c8 336 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 337 spi.write(0x0B);\
ee12b079 268:ded5306a1fd1 338 spi.write(0x36);\
ee12b079 268:ded5306a1fd1 339 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 340 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 341 data_err_cnt=0;\
ee12b079 268:ded5306a1fd1 342 data_err=true;\
ee12b079 268:ded5306a1fd1 343 while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
ee12b079 268:ded5306a1fd1 344 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 345 if(buffer_state){\
ee12b079 268:ded5306a1fd1 346 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 347 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 348 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 349 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 350 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 351 }\
ee12b079 268:ded5306a1fd1 352 }\
ee12b079 268:ded5306a1fd1 353 else{\
ee12b079 268:ded5306a1fd1 354 spi.write(0x18);\
ee12b079 268:ded5306a1fd1 355 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 356 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 357 spi.write(buffer_112[i]);\
ee12b079 268:ded5306a1fd1 358 /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
ee12b079 268:ded5306a1fd1 359 }\
ee12b079 268:ded5306a1fd1 360 }\
ee12b079 268:ded5306a1fd1 361 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 362 wait_us(5);\
ee12b079 268:ded5306a1fd1 363 data_err=false;\
ee12b079 268:ded5306a1fd1 364 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 365 spi.write(0x38);\
ee12b079 268:ded5306a1fd1 366 if(buffer_state){\
ee12b079 268:ded5306a1fd1 367 spi.write(0x20);\
ee12b079 268:ded5306a1fd1 368 }\
ee12b079 268:ded5306a1fd1 369 else{\
ee12b079 268:ded5306a1fd1 370 spi.write(0x90);\
ee12b079 268:ded5306a1fd1 371 }\
ee12b079 268:ded5306a1fd1 372 spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 373 for(unsigned char i=0; i<112;i++){\
ee12b079 268:ded5306a1fd1 374 temp_byte=spi.write(0xFF);\
ee12b079 268:ded5306a1fd1 375 if(buffer_112[i]!=temp_byte){\
ee12b079 268:ded5306a1fd1 376 data_err1[i]=1;\
ee12b079 268:ded5306a1fd1 377 data_err=true;\
ee12b079 268:ded5306a1fd1 378 }\
ee12b079 268:ded5306a1fd1 379 }\
shreeshas95 1:a0055b3280c8 380 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 381 /*SPI_mutex.unlock();*/\
ee12b079 268:ded5306a1fd1 382 if(data_err==false){\
ee12b079 268:ded5306a1fd1 383 buffer_state = !buffer_state;\
ee12b079 268:ded5306a1fd1 384 }\
ee12b079 268:ded5306a1fd1 385 data_err_cnt++;\
ee12b079 268:ded5306a1fd1 386 if(last_buffer){\
ee12b079 268:ded5306a1fd1 387 finish_write_data = true;\
ee12b079 268:ded5306a1fd1 388 /*gPC.puts("adf_off\r\n");*/\
ee12b079 268:ded5306a1fd1 389 }\
ee12b079 268:ded5306a1fd1 390 }\
ee12b079 268:ded5306a1fd1 391 }
ee12b079 268:ded5306a1fd1 392
ee12b079 268:ded5306a1fd1 393 #define check {\
ee12b079 268:ded5306a1fd1 394 check_status;\
ee12b079 268:ded5306a1fd1 395 /*gPC.printf("I 0x%X\r\n",(int)status);*/\
ee12b079 269:72529b247333 396 if(IRQ){\
ee12b079 268:ded5306a1fd1 397 /*gPC.printf("det\r\n");*/\
ee12b079 268:ded5306a1fd1 398 if(!ADF_off) {\
ee12b079 269:72529b247333 399 if(finish_write_data || restart_adf_flag) {\
ee12b079 268:ded5306a1fd1 400 write_data;\
ee12b079 268:ded5306a1fd1 401 ADF_off=true;\
ee12b079 268:ded5306a1fd1 402 } else {\
ee12b079 268:ded5306a1fd1 403 write_data;\
ee12b079 268:ded5306a1fd1 404 if(sent_tmfrom_SDcard)\
ee12b079 268:ded5306a1fd1 405 send_tm_from_SD_card_fun();\
ee12b079 268:ded5306a1fd1 406 else snd_tm.transmit_data(buffer_112,&last_buffer);\
ee12b079 268:ded5306a1fd1 407 }\
ee12b079 268:ded5306a1fd1 408 } else {\
ee12b079 268:ded5306a1fd1 409 wait_ms(20);\
ee12b079 268:ded5306a1fd1 410 gCS_ADF=0;\
ee12b079 268:ded5306a1fd1 411 spi.write(0xB1);\
ee12b079 268:ded5306a1fd1 412 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 413 gPC.puts("transmission done\r\n");\
ee12b079 268:ded5306a1fd1 414 loop_on=false;\
ee12b079 269:72529b247333 415 if(restart_adf_flag)\
ee12b079 269:72529b247333 416 {\
ee12b079 269:72529b247333 417 restart_adf_flag=false;\
ee12b079 269:72529b247333 418 ADF_off=false;\
ee12b079 269:72529b247333 419 send_data;\
ee12b079 269:72529b247333 420 loop_on=true;\
ee12b079 269:72529b247333 421 CMD(CMD_PHY_TX);\
ee12b079 269:72529b247333 422 wait_us(2000);\
ee12b079 269:72529b247333 423 }\
ee12b079 269:72529b247333 424 /*Stop_the_Timer*/\
ee12b079 268:ded5306a1fd1 425 }\
ee12b079 268:ded5306a1fd1 426 }\
ee12b079 269:72529b247333 427 /*else{*/\
ee12b079 269:72529b247333 428 /*if(T.read_us()>98000){*/\
ee12b079 269:72529b247333 429 /*data_irq_err=true;*/\
ee12b079 269:72529b247333 430 /*CMD(CMD_PHY_ON);*/\
ee12b079 269:72529b247333 431 /*gPC.printf("Data_error_detected");*/\
ee12b079 269:72529b247333 432 /*}*/\
ee12b079 269:72529b247333 433 /*}*/\
ee12b079 268:ded5306a1fd1 434 }
ee12b079 268:ded5306a1fd1 435
ee12b079 268:ded5306a1fd1 436 #define send_data {\
ee12b079 9:e9eaada136c6 437 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 438 spi.write(0xBB);\
ee12b079 9:e9eaada136c6 439 gCS_ADF=1;\
ee12b079 9:e9eaada136c6 440 gCS_ADF=0;\
ee12b079 9:e9eaada136c6 441 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 442 spi.write(0xFF);\
ee12b079 9:e9eaada136c6 443 gCS_ADF=1;\
ee12b079 268:ded5306a1fd1 444 if(sent_tmfrom_SDcard){\
ee12b079 95:42d6747900cb 445 send_tm_from_SD_card_fun();\
shreeshas95 1:a0055b3280c8 446 }else{\
shreeshas95 1:a0055b3280c8 447 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 448 }\
shreeshas95 1:a0055b3280c8 449 write_data;\
shreeshas95 1:a0055b3280c8 450 if(sent_tmfrom_SDcard){\
krishanprajapat 148:46763854fa83 451 send_tm_from_SD_card_fun();\
krishanprajapat 148:46763854fa83 452 }else{\
krishanprajapat 148:46763854fa83 453 snd_tm.transmit_data(buffer_112,&last_buffer);\
krishanprajapat 148:46763854fa83 454 }\
krishanprajapat 148:46763854fa83 455 write_data;\
krishanprajapat 148:46763854fa83 456 if(sent_tmfrom_SDcard){\
ee12b079 95:42d6747900cb 457 send_tm_from_SD_card_fun();\
shreeshas95 1:a0055b3280c8 458 }else{\
shreeshas95 1:a0055b3280c8 459 snd_tm.transmit_data(buffer_112,&last_buffer);\
shreeshas95 1:a0055b3280c8 460 }\
shreeshas95 1:a0055b3280c8 461 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 462 spi.write(0xB1);\
shreeshas95 1:a0055b3280c8 463 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 464 wait_us(300);\
shreeshas95 1:a0055b3280c8 465 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 466 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 467 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 468 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 469 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 470 spi.write(0xB5);\
shreeshas95 1:a0055b3280c8 471 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 472 wait_us(300);\
shreeshas95 1:a0055b3280c8 473 gCS_ADF=0;\
shreeshas95 1:a0055b3280c8 474 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 475 spi.write(0xFF);\
shreeshas95 1:a0055b3280c8 476 gCS_ADF=1;\
shreeshas95 1:a0055b3280c8 477 }
ee12b079 268:ded5306a1fd1 478
ee12b079 268:ded5306a1fd1 479 #define initial_adf_check {\
ee12b079 268:ded5306a1fd1 480 bool Configuration_Done=false;\
ee12b079 268:ded5306a1fd1 481 quit_configuration=false;\
ee12b079 268:ded5306a1fd1 482 bool reset_flag1 = 0;\
ee12b079 268:ded5306a1fd1 483 bool flag = false;\
ee12b079 268:ded5306a1fd1 484 while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 485 while((bbram_err_cnt<2)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 486 /*assrt_phy_off;*/\
ee12b079 268:ded5306a1fd1 487 /*Assrt_phy_off Begin*/\
ee12b079 268:ded5306a1fd1 488 {\
ee12b079 268:ded5306a1fd1 489 int state_err_cnt = 0;\
ee12b079 268:ded5306a1fd1 490 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 491 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 492 temp_return=1;\
ee12b079 268:ded5306a1fd1 493 }\
ee12b079 268:ded5306a1fd1 494 else{\
ee12b079 268:ded5306a1fd1 495 for(int i = 0 ; i < 40 ;i++){\
ee12b079 268:ded5306a1fd1 496 CMD(CMD_PHY_OFF);\
ee12b079 268:ded5306a1fd1 497 check_status;\
ee12b079 268:ded5306a1fd1 498 if(status == PHY_OFF){\
ee12b079 268:ded5306a1fd1 499 temp_return = 0;\
ee12b079 268:ded5306a1fd1 500 break;\
ee12b079 268:ded5306a1fd1 501 }\
ee12b079 268:ded5306a1fd1 502 else if(state_err_cnt>THRS){\
ee12b079 268:ded5306a1fd1 503 temp_return = 1;\
ee12b079 268:ded5306a1fd1 504 break;\
ee12b079 268:ded5306a1fd1 505 }\
ee12b079 268:ded5306a1fd1 506 else {\
ee12b079 268:ded5306a1fd1 507 wait_ms(1);\
ee12b079 268:ded5306a1fd1 508 }\
ee12b079 268:ded5306a1fd1 509 }\
ee12b079 268:ded5306a1fd1 510 }\
ee12b079 268:ded5306a1fd1 511 }\
ee12b079 268:ded5306a1fd1 512 /*Assrt_phy_off end*/\
ee12b079 268:ded5306a1fd1 513 reset_flag1=temp_return;\
ee12b079 268:ded5306a1fd1 514 if(!reset_flag1){\
ee12b079 268:ded5306a1fd1 515 bbram_write;\
ee12b079 268:ded5306a1fd1 516 while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
ee12b079 268:ded5306a1fd1 517 bbram_check;\
ee12b079 268:ded5306a1fd1 518 if(bbram_err==0){\
ee12b079 268:ded5306a1fd1 519 bbram_write_success=true;\
ee12b079 268:ded5306a1fd1 520 bbram_err_cnt=0;\
ee12b079 268:ded5306a1fd1 521 initiate;\
ee12b079 268:ded5306a1fd1 522 if(reg_err){\
ee12b079 268:ded5306a1fd1 523 rbp_err_cnt++;\
ee12b079 268:ded5306a1fd1 524 }\
ee12b079 268:ded5306a1fd1 525 else{\
ee12b079 268:ded5306a1fd1 526 rbp_err_cnt=0;\
ee12b079 268:ded5306a1fd1 527 gPC.printf("NO Reg err\r\n");\
ee12b079 268:ded5306a1fd1 528 CMD(CMD_CONFIG_DEV);\
ee12b079 268:ded5306a1fd1 529 if(cmd_err_flag){\
ee12b079 268:ded5306a1fd1 530 reset_flag=1;\
ee12b079 268:ded5306a1fd1 531 gPC.printf("CMD ERR\r\n");\
ee12b079 268:ded5306a1fd1 532 }\
ee12b079 268:ded5306a1fd1 533 else{\
ee12b079 268:ded5306a1fd1 534 reset_flag=0;\
ee12b079 268:ded5306a1fd1 535 gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
ee12b079 268:ded5306a1fd1 536 quit_configuration=true;\
ee12b079 268:ded5306a1fd1 537 }\
ee12b079 268:ded5306a1fd1 538 }\
ee12b079 268:ded5306a1fd1 539 }\
ee12b079 268:ded5306a1fd1 540 else{\
ee12b079 268:ded5306a1fd1 541 bbram_write_success=false;\
ee12b079 268:ded5306a1fd1 542 bbram_err_cnt++;\
ee12b079 268:ded5306a1fd1 543 break;\
ee12b079 268:ded5306a1fd1 544 }\
ee12b079 268:ded5306a1fd1 545 }\
ee12b079 268:ded5306a1fd1 546 }\
ee12b079 268:ded5306a1fd1 547 else{\
ee12b079 268:ded5306a1fd1 548 break;\
ee12b079 268:ded5306a1fd1 549 }\
ee12b079 268:ded5306a1fd1 550 }\
ee12b079 268:ded5306a1fd1 551 if(reset_flag1){\
ee12b079 268:ded5306a1fd1 552 hardware_reset(0);\
ee12b079 268:ded5306a1fd1 553 hw_reset_err_cnt++;\
ee12b079 268:ded5306a1fd1 554 gPC.puts("Resetting hardware\r\n");\
ee12b079 268:ded5306a1fd1 555 }\
ee12b079 268:ded5306a1fd1 556 }\
ee12b079 268:ded5306a1fd1 557 if(hw_reset_err_cnt==HW_THRS){\
ee12b079 268:ded5306a1fd1 558 power_reset_flag=1;\
ee12b079 268:ded5306a1fd1 559 power_reset_count++;\
ee12b079 268:ded5306a1fd1 560 }\
ee12b079 268:ded5306a1fd1 561 else{\
ee12b079 268:ded5306a1fd1 562 Configuration_Done=true;\
ee12b079 268:ded5306a1fd1 563 gPC.printf("Configuration_Done\n");\
ee12b079 268:ded5306a1fd1 564 }\
ee12b079 268:ded5306a1fd1 565 }
ee12b079 268:ded5306a1fd1 566
aniruddhv 52:0bd68655c651 567 #define configure_adf {\
ee12b079 268:ded5306a1fd1 568 reset_flags;\
aniruddhv 52:0bd68655c651 569 initial_adf_check;\
ee12b079 268:ded5306a1fd1 570 gPC.puts("Config_part done\r\n");\
ee12b079 9:e9eaada136c6 571 }
ee12b079 9:e9eaada136c6 572
ee12b079 95:42d6747900cb 573 #define transmit_adf {\
ee12b079 269:72529b247333 574 restart_adf_flag=false;\
ee12b079 269:72529b247333 575 bool tx_err=false;\
aniruddhv 52:0bd68655c651 576 configure_adf;\
aniruddhv 52:0bd68655c651 577 send_data;\
ee12b079 268:ded5306a1fd1 578 CMD(CMD_PHY_TX);\
ee12b079 268:ded5306a1fd1 579 wait_us(2000);\
aniruddhv 52:0bd68655c651 580 while(loop_on){\
ee12b079 268:ded5306a1fd1 581 wait_us(20);\
ee12b079 268:ded5306a1fd1 582 check;\
ee12b079 269:72529b247333 583 if(data_irq_err||tx_err){\
ee12b079 268:ded5306a1fd1 584 break;\
aniruddhv 52:0bd68655c651 585 }\
aniruddhv 52:0bd68655c651 586 }\
aniruddhv 69:20f09a0c3fd2 587 /*gPC.puts("after while loop\r\n");*/\
ee12b079 268:ded5306a1fd1 588 }