Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos SimpleDMA FreescaleIAP eeprom
Fork of CDMS_CODE_FM_28JAN2017 by
EEPROM.h
00001 #ifndef EEPROM_H 00002 #define EEPROM_H 00003 00004 //#include "pinconfig.h" 00005 //#include "eeprom.h" 00006 //#include "DefinitionsAndGlobals.h" 00007 #define ee_scl PIN86 00008 #define ee_sda PIN87 00009 #define check 10 00010 00011 //EEPROM e2prom(ee_sda, ee_scl, 0, EEPROM::T24C512); // T24C1024 for 1Mbit EEPROM 00012 EEPROM e2prom(ee_sda, ee_scl, 0x0, EEPROM::T24C512); 00013 00014 int32_t INITIAL_EEPROM[29] = {1,1,1,80000,1,0,0,0,0,1,1,20,85,20,30,3,24,1,0,0,0,0,0,0,0,0,0,0,0}; 00015 //int32_t INITIAL_EEPROM[32] = {1,0,1,0,1,0,1,0,1,35001,0xff,300,85,20,20,3,0x80000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 00016 00017 uint32_t flasharray_thres[32]; 00018 uint32_t flasharray_thres_1[32]; 00019 00020 void I2C_EEPROM_busreset() 00021 { 00022 gPC.printf("\n\rChecking"); 00023 PORTC->PCR[10] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines 00024 PORTC->PCR[11] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines 00025 I2C1->C1 &= 0x7f; //Disabling I2C module 00026 SIM->SCGC4 &= 0xffffff7f; //Disabling clock to I2C module 00027 SIM->SCGC4 |= 0x00000080; //Enabling clock to I2C module 00028 I2C1->C1 |= 0x80; //Enabling I2C module 00029 PORTC->PCR[10] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines 00030 PORTC->PCR[11] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines 00031 Thread::wait(1); //Wait for all I2C registers to be updates to their their values 00032 } 00033 00034 void mcpy(uint32_t *a2,int8_t *a1,int n){ 00035 00036 *a2=0; 00037 for (int i=0;i<n;i++){ 00038 *(a2) += *(a1+i); 00039 if(i<n-1){ 00040 *(a2)=(*(a2))<<8; 00041 //printf("%d\n",*(a2)); 00042 } 00043 } 00044 00045 } 00046 00047 void rmcpy(uint8_t *a1,uint32_t *a2,int n){ 00048 00049 for (int i=0;i<n;i++){ 00050 *(a1+i) = (*(a2))>>((n*8)-(8*(i+1))); 00051 } 00052 00053 } 00054 00055 void WRITE_TO_EEPROM(uint32_t address, int32_t data_block) 00056 { 00057 e2prom.write(address*4+10,data_block); 00058 wait_us(1); 00059 } 00060 00061 void THRES_WRITE_TO_EEPROM(uint16_t mid, uint32_t* thres_data,int val) 00062 { 00063 int8_t data[128] = {0}; 00064 //memcpy(data,thres_data,128); 00065 if(val == 1 ) 00066 memcpy(data,thres_data,128); 00067 if(val == 2) 00068 memcpy(data,thres_data,48); 00069 if(val == 3) 00070 memcpy(data,thres_data,80); 00071 if(mid <11 & mid >1) 00072 { 00073 e2prom.write((uint32_t)(mid-1)*128,data,128); 00074 } 00075 } 00076 00077 void WRITE_PMS_TO_EEPROM(uint16_t pmid, uint32_t* thres_data) 00078 { 00079 int8_t data[128]; 00080 memcpy(data,thres_data,128); 00081 00082 if(pmid <7 & pmid >0) 00083 { 00084 e2prom.write((uint32_t)(1280 + (pmid-1)*128),data,128); 00085 } 00086 } 00087 00088 void UPDATE_PMS_ENTRY(uint32_t address, uint32_t data_block) 00089 { 00090 e2prom.write((1280 + (address*4)),data_block); 00091 wait_us(1); 00092 } 00093 00094 uint32_t READ_FROM_EERPOM(uint32_t address) 00095 { 00096 int32_t data; 00097 e2prom.read(address*4+10, data); 00098 wait_ms(10); 00099 return (uint32_t)data; 00100 } 00101 00102 void THRES_READ_FROM_EEPROM(uint16_t mid, uint32_t* data32,int val) 00103 { 00104 int8_t data[128]; 00105 if(mid<11 & mid >1) 00106 { 00107 e2prom.read((uint32_t)(mid-1)*128,data,128); 00108 } 00109 if(val == 1 ) 00110 memcpy(data32,data,128); 00111 if(val == 2) 00112 memcpy(data32,data,48); 00113 if(val == 3) 00114 memcpy(data32,data,80); 00115 /*for(int i=0;i<32;i++){ 00116 mcpy(data32+i,data+4*i,4); 00117 }*/ 00118 wait_ms(10); 00119 } 00120 00121 void READ_PMS_FROM_EEPROM(uint16_t pmid, uint32_t* data32) 00122 { 00123 int8_t data[128]; 00124 if(pmid<7 & pmid > 0) 00125 { 00126 e2prom.read((uint32_t)(1280 + (pmid-1)*128),data,128); 00127 } 00128 memcpy(data32,data,128); 00129 /*for(int i=0;i<32;i++){ 00130 mcpy(data32+i,data+4*i,4); 00131 }*/ 00132 wait_ms(10); 00133 } 00134 00135 void INIT_EEPROM() 00136 { 00137 // To be commented starts 00138 int32_t test_buffer; 00139 test_buffer = READ_FROM_EERPOM(17); 00140 // test_buffer = 0; 00141 // e2prom.ready(); 00142 // e2prom.read(2,test_buffer); 00143 00144 if(test_buffer != 1) 00145 { 00146 if(test_buffer == 0) 00147 { 00148 for(int i=0;i<29;i++) 00149 WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]); 00150 WRITE_TO_EEPROM(17,0x01); 00151 gPC.printf("Initializing EEPROM - Day 0\n\r"); 00152 } 00153 if(test_buffer == 2) 00154 { 00155 for(int i=0;i<29;i++) 00156 WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]); 00157 WRITE_TO_EEPROM( 5, 1); 00158 WRITE_TO_EEPROM(17,0x01); 00159 gPC.printf("Initializing EEPROM - Reset EEPROM Paramters only\n\r"); 00160 } 00161 } 00162 00163 // To be commented ends*/ 00164 gPC.printf("Reading intial parametrs from EEPROM\n"); 00165 00166 EPS_V_A_EN_STATUS = READ_FROM_EERPOM(0); 00167 BAE_STATUS = READ_FROM_EERPOM(1); 00168 SD_STATUS = READ_FROM_EERPOM(2); 00169 //PL_STATUS = read[3]; 00170 SD_LIB_BLK_CURRENT = READ_FROM_EERPOM(3); 00171 PL_BEE_SW_STATUS = READ_FROM_EERPOM(4); 00172 //PL_EPS_LATCH_SW_EN = read[4]; 00173 RTC_INIT_STATUS = READ_FROM_EERPOM(5); 00174 CDMS_RTC_DISABLE = READ_FROM_EERPOM(6); 00175 CDMS_RESET_COUNTER = READ_FROM_EERPOM(7); 00176 TIME_LATEST_CDSMS_RESET = READ_FROM_EERPOM(8); 00177 COM_TC_BYTES_LIMIT = READ_FROM_EERPOM(9); 00178 COM_RX_CURRENT_MAX = READ_FROM_EERPOM(10); 00179 COM_RX_DISABLE_TIMEOUT = READ_FROM_EERPOM(11); 00180 COM_PA_TMP_HIGH = 85;//read[12]; 00181 COM_PA_RECOVERY_TIMEOUT = READ_FROM_EERPOM(13); 00182 COM_SESSION_TIMEOUT = READ_FROM_EERPOM(14); 00183 COM_RSSI_MIN = READ_FROM_EERPOM(15); 00184 PL_STATE = READ_FROM_EERPOM(16); 00185 00186 THRES_READ_FROM_EEPROM(0x0002,flasharray_thres,1); 00187 for(uint8_t z=0;z<24;z++) 00188 scp_threshold_m0[z] = flasharray_thres[z] ; 00189 for(uint8_t z=24;z<32;z++) 00190 scp_threshold_m0[z+8] = flasharray_thres[z] ; 00191 00192 THRES_READ_FROM_EEPROM(0x0003,scp_threshold_m0+(40),2); 00193 00194 THRES_READ_FROM_EEPROM(0x0004,scp_threshold_m1,1); 00195 00196 THRES_READ_FROM_EEPROM(0x0005,scp_threshold_m1+(32),3); 00197 00198 THRES_READ_FROM_EEPROM(0x0006,flasharray_thres,2); 00199 scp_threshold_m0_1[7] = flasharray_thres[0]; 00200 scp_threshold_m0_1[5] = flasharray_thres[1] ; 00201 scp_threshold_m0_1[8] = flasharray_thres[2] ; 00202 scp_threshold_m0_1[6] = flasharray_thres[3] ; 00203 for(uint8_t z=0;z<5;z++) 00204 scp_threshold_m0_1[z] = flasharray_thres[z+4] ; 00205 scp_sfp_threshold_m0_2[0] = flasharray_thres[9] ; 00206 scp_sfp_threshold_m0_2[1] = flasharray_thres[10] ; 00207 scp_sfp_threshold_m0_2[2] = flasharray_thres[11] ; 00208 00209 THRES_READ_FROM_EEPROM(0x0007,flasharray_thres,1); 00210 for(uint8_t z=0;z<24;z++) 00211 sfp_threshold_m0[z] = flasharray_thres[z] ; 00212 for(uint8_t z=24;z<32;z++) 00213 sfp_threshold_m0[z+8] = flasharray_thres[z] ; 00214 00215 THRES_READ_FROM_EEPROM(0x0008,sfp_threshold_m0+(40),2); 00216 00217 THRES_READ_FROM_EEPROM(0x0009,sfp_threshold_m1,1); 00218 00219 THRES_READ_FROM_EEPROM(0x000A,sfp_threshold_m1+(32),3); 00220 00221 /*READ_PMS_FROM_EEPROM(0x0001, pl_block); 00222 00223 READ_PMS_FROM_EEPROM(0x0002, pl_block + (32)); 00224 00225 READ_PMS_FROM_EEPROM(0x0003, pl_block + (64)); //Uncomment and test this after all other PMS functionality has been verified 00226 00227 READ_PMS_FROM_EEPROM(0x0004, pl_block + (96)); 00228 00229 READ_PMS_FROM_EEPROM(0x0005, pl_block + (128)); 00230 00231 READ_PMS_FROM_EEPROM(0x0006, pl_block + (160));*/ 00232 00233 00234 gPC.printf("0 = \r%d\n\r", READ_FROM_EERPOM(0)); 00235 gPC.printf("1 = %d\n\r", READ_FROM_EERPOM(1)); 00236 gPC.printf("2 = %d\n\r", READ_FROM_EERPOM(2)); 00237 gPC.printf("3 = %d\n\r", READ_FROM_EERPOM(3)); 00238 gPC.printf("4 = %d\n\r", READ_FROM_EERPOM(4)); 00239 gPC.printf("5 = %d\n\r", READ_FROM_EERPOM(5)); 00240 gPC.printf("6= %d\n\r", READ_FROM_EERPOM(6)); 00241 gPC.printf("7= %d\n\r", READ_FROM_EERPOM(7)); 00242 gPC.printf("8= %d\n\r", READ_FROM_EERPOM(8)); 00243 gPC.printf("9= %d\n\r", READ_FROM_EERPOM(9)); 00244 gPC.printf("10= %d\n\r", READ_FROM_EERPOM(10)); 00245 gPC.printf("11= %d\n\r", READ_FROM_EERPOM(11)); 00246 gPC.printf("12= %d\n\r", READ_FROM_EERPOM(12)); 00247 gPC.printf("13= %d\n\r", READ_FROM_EERPOM(13)); 00248 gPC.printf("14= %d\n\r", READ_FROM_EERPOM(14)); 00249 gPC.printf("15= %d\n\r", READ_FROM_EERPOM(15)); 00250 gPC.printf("16 = %u\n\r", READ_FROM_EERPOM(16)); 00251 gPC.printf("test buffer 17 = %u\n\r", READ_FROM_EERPOM(17)); 00252 00253 00254 // SD_LIB_BLK_CURRENT = READ_FROM_EERPOM(16); 00255 // added by samp 00256 00257 00258 } 00259 00260 /*===================================================MMS Functions=================================================*/ 00261 00262 void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock); 00263 00264 void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock) 00265 { 00266 if(mid == 0x0100) 00267 { 00268 WRITE_TO_EEPROM(11,(datablock>>16) & 0x000000FF); 00269 WRITE_TO_EEPROM(13,(datablock>>8) & 0x000000FF); 00270 WRITE_TO_EEPROM(14,datablock & 0x000000FF); 00271 } 00272 else if(mid == 0x0101) 00273 { 00274 WRITE_TO_EEPROM(12,(datablock>>16) & 0x000000FF); 00275 WRITE_TO_EEPROM(10,(datablock>>8) & 0x000000FF); 00276 WRITE_TO_EEPROM(15,datablock & 0x000000FF); 00277 } 00278 else if(mid == 0x0102) 00279 { 00280 WRITE_TO_EEPROM(9,datablock & 0x0000FFFF); 00281 } 00282 else if(mid == 0x0103) 00283 { 00284 WRITE_TO_EEPROM(6,datablock & 0x00000001); 00285 } 00286 else if(mid == 0x0104) 00287 { 00288 WRITE_TO_EEPROM(17,datablock & 0x00000001); 00289 } 00290 } 00291 00292 #endif
Generated on Tue Jul 12 2022 15:50:06 by
