Changeset 28 for trunk/fw_g473rct/SES/src/eeprom.c
- Timestamp:
- Sep 11, 2025, 4:17:09 PM (7 weeks ago)
- File:
-
- 1 edited
-
trunk/fw_g473rct/SES/src/eeprom.c (modified) (18 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/SES/src/eeprom.c
r27 r28 1 //https://controllerstech.com/eeprom-and-stm32/ 1 // https://controllerstech.com/eeprom-and-stm32/ 2 #include <string.h> 2 3 3 4 #include "eeprom.h" … … 11 12 // Define the I2C 12 13 extern I2C_HandleTypeDef hi2c3; 13 #define EEPROM_I2C &hi2c314 #define EEPROM_I2C &hi2c3 14 15 15 16 // EEPROM ADDRESS (8bits) 16 #define EEPROM_ADDR 0xA017 #define EEPROM_ADDR 0xA0 17 18 18 19 // Define the Page Size and number of pages 19 #define PAGE_SIZE 64// in Bytes20 #define PAGE_NUM 4096// number of pages20 #define PAGE_SIZE 64 // in Bytes 21 #define PAGE_NUM 4096 // number of pages 21 22 22 23 … … 103 104 uint16_t cefW; 104 105 int16_t batteryEmptyDetectionMode; 106 uint16_t auxOutputMode; 107 uint16_t auxOutputSetpointOn; 108 uint16_t auxOutputSetpointOff; 109 uint16_t auxOutputInverted; 105 110 106 111 } eeprom_data_t; … … 138 143 139 144 140 141 142 143 145 // Data to store reated defines 144 //#define SIZEOF_DEFAULT_EEPROM_DATA (sizeof(eeprom_new_data_t))145 #define SIZEOF_CHANGED_EEPROM_DATA (sizeof(eeprom_data_t))146 #define SIZEOF_DEVICE_INFO (sizeof(device_info_t))147 #define SIZEOF_EEPROM_STATE (sizeof(eeprom_state_t))148 149 #define SIZE_OF_DATA_TO_STORE (SIZEOF_CHANGED_EEPROM_DATA + SIZEOF_DEVICE_INFO + SIZEOF_EEPROM_STATE)146 //#define SIZEOF_DEFAULT_EEPROM_DATA (sizeof(eeprom_new_data_t)) 147 //#define SIZEOF_CHANGED_EEPROM_DATA (sizeof(eeprom_data_t)) 148 //#define SIZEOF_DEVICE_INFO (sizeof(device_info_t)) 149 //#define SIZEOF_EEPROM_STATE (sizeof(eeprom_state_t)) 150 151 //#define SIZE_OF_DATA_TO_STORE (SIZEOF_CHANGED_EEPROM_DATA + SIZEOF_DEVICE_INFO + SIZEOF_EEPROM_STATE) 150 152 151 153 152 154 // Adress related defines 153 155 #define EEPROM_ADRESS_FIRST_START_ID (0) 154 #define FIRST_START_ID (0xFF) 156 #define FIRST_START_ID (0xFF) // See datasheet (Chapter "Initial delivery state") 155 157 #define CONFIG_ID (01) // Increment by 1 to make compartible update, more than 1 - incompartible 156 158 #if CONFIG_ID == FIRST_START_ID … … 166 168 167 169 168 169 // muss modulo 8 noch hinzufügen wg 8 byte alignement 170 static uint8_t eepromData[SIZE_OF_DATA_TO_STORE]; 170 static eeprom_stored_data_t eepromData; 171 171 172 172 … … 261 261 /* cefW */ 90, // 90% cef for Wh calculations 262 262 /* Battery Empty Detection Mode*/ 1, // Auto, from BMS 263 264 263 /* AUX MODE */ AUX_MODE_HEATER,// Heizung 264 /* AUX SETPOINT ON */ 13600, // Erkennung Ladegerät ab 13,6V 265 /* AUX SETPOINT OFF */ 100, // Batterie Entladung wird erkannt bei -100mA 266 /* AUX Inverted */ 0, // Nicht invertiert 265 267 }; 266 268 … … 281 283 uint8_t firstStartCatcher; 282 284 283 EEPROM_Read(0,EEPROM_ADRESS_FIRST_START_ID, &firstStartCatcher, 1); 284 285 EEPROM_Read(0, EEPROM_ADRESS_FIRST_START_ID, &firstStartCatcher, 1); 285 286 286 287 if (firstStartCatcher == FIRST_START_ID) … … 306 307 HAL_StatusTypeDef EEPROM_fullRestore(sys_data_t* data) 307 308 { 308 eeprom_stored_data_t* dataToStore;309 309 printf("EEPROM FULL RESTORE!\n"); 310 310 311 311 /**************** LESE_DEFAULT_WERTE ************************/ 312 312 313 dataToStore = (eeprom_stored_data_t*) eepromData; 314 315 // Schnittstellenparameter 316 dataToStore->changedData.baudrate = defaultEepromData.baudrate; 317 dataToStore->changedData.parityMode = defaultEepromData.parityMode; 318 dataToStore->changedData.stopBits = defaultEepromData.stopBits; 319 dataToStore->changedData.slave_adress = defaultEepromData.slave_adress; 320 321 // Offset und Gain 322 dataToStore->changedData.batteryCurrentOffsetRefTemperatureShunt = defaultEepromData.batteryCurrentOffsetRefTemperatureShunt; 323 dataToStore->changedData.batteryCurrentOffsetRefTemperatureChip = defaultEepromData.batteryCurrentOffsetRefTemperatureChip; 324 dataToStore->changedData.batteryCurrentGainRefTempShunt = defaultEepromData.batteryCurrentGainRefTempShunt; 325 dataToStore->changedData.batteryCurrentGainRefTempChip = defaultEepromData.batteryCurrentGainRefTempChip; 326 dataToStore->changedData.batteryCurrentOffsetTemperatureCalibrationTemperature = defaultEepromData.batteryCurrentOffsetTemperatureCalibrationTemperature; 327 dataToStore->changedData.batteryCurrentGainTemperatureCalibrationShuntTemperature = defaultEepromData.batteryCurrentGainTemperatureCalibrationShuntTemperature; 328 dataToStore->changedData.batteryCurrentGainTemperatureCalibrationChipTemperature = defaultEepromData.batteryCurrentGainTemperatureCalibrationChipTemperature; 329 dataToStore->changedData.batteryCurrentOffsetRefshuntVoltage = defaultEepromData.batteryCurrentOffsetRefshuntVoltage; 330 dataToStore->changedData.batteryCurrentOffsetCommonModeCalibrationVoltage = defaultEepromData.batteryCurrentOffsetCommonModeCalibrationVoltage; 331 dataToStore->changedData.batteryCurrentOffsetCommonModeCompensationFactor = defaultEepromData.batteryCurrentOffsetCommonModeCompensationFactor; 332 dataToStore->changedData.batteryCurrentOffsetTemperatureCompensationFactor = defaultEepromData.batteryCurrentOffsetTemperatureCompensationFactor; 333 dataToStore->changedData.batteryCurrentGainRefCurrent = defaultEepromData.batteryCurrentGainRefCurrent; 334 dataToStore->changedData.batteryCurrentGainTemperatureCompensationShuntFactor = defaultEepromData.batteryCurrentGainTemperatureCompensationShuntFactor; 335 dataToStore->changedData.batteryCurrentGainTemperatureCompensationChipFactor = defaultEepromData.batteryCurrentGainTemperatureCompensationChipFactor; 336 337 dataToStore->changedData.currentOffset = defaultEepromData.currentOffset; 338 dataToStore->changedData.currentGain = defaultEepromData.currentGain; 339 340 dataToStore->changedData.currentOffsetFast = defaultEepromData.currentOffsetFast; 341 dataToStore->changedData.currentGainFast = defaultEepromData.currentGainFast; 342 343 // AH Counter Parameter 344 dataToStore->changedData.cef = defaultEepromData.cef; 345 dataToStore->changedData.peukert = defaultEepromData.peukert; 346 dataToStore->changedData.cellCapacity = defaultEepromData.cellCapacity; 347 dataToStore->changedData.cellEnergy = defaultEepromData.cellEnergy; 348 dataToStore->changedData.iBatFull = defaultEepromData.iBatFull; 349 dataToStore->changedData.tBatFull = defaultEepromData.tBatFull; 350 dataToStore->changedData.uBatFull = defaultEepromData.uBatFull; 351 dataToStore->changedData.uBatEmpty = defaultEepromData.uBatEmpty; 352 dataToStore->changedData.socCalcMode = defaultEepromData.socCalcMode; 353 dataToStore->changedData.cellRatedDischargeTime = defaultEepromData.cellRatedDischargeTime; 354 355 // Schaltausgänge 356 dataToStore->changedData.lvpStart = defaultEepromData.lvpStart; 357 dataToStore->changedData.lvpStop = defaultEepromData.lvpStop; 358 dataToStore->changedData.ovpStart = defaultEepromData.ovpStart; 359 dataToStore->changedData.ovpStop = defaultEepromData.ovpStop; 360 dataToStore->changedData.loadCurrentLimit = defaultEepromData.loadCurrentLimit; 361 dataToStore->changedData.chargeCurrentLimit = defaultEepromData.chargeCurrentLimit; 362 dataToStore->changedData.chargeStopHighTemperatureStart = defaultEepromData.chargeStopHighTemperatureStart; 363 dataToStore->changedData.chargeStopHighTemperatureStop = defaultEepromData.chargeStopHighTemperatureStop; 364 dataToStore->changedData.chargeStopLowTemperatureStart = defaultEepromData.chargeStopLowTemperatureStart; 365 dataToStore->changedData.chargeStopLowTemperatureStop = defaultEepromData.chargeStopLowTemperatureStop; 366 dataToStore->changedData.dischargeStopHighTemperatureStart = defaultEepromData.dischargeStopHighTemperatureStart; 367 dataToStore->changedData.dischargeStopHighTemperatureStop = defaultEepromData.dischargeStopHighTemperatureStop; 368 dataToStore->changedData.dischargeStopLowTemperatureStart = defaultEepromData.dischargeStopLowTemperatureStart; 369 dataToStore->changedData.dischargeStopLowTemperatureStop = defaultEepromData.dischargeStopLowTemperatureStop; 370 371 dataToStore->changedData.uBatEmptyCompStartTemp = defaultEepromData.uBatEmptyCompStartTemp; 372 dataToStore->changedData.uBatEmptyCompStopTemp = defaultEepromData.uBatEmptyCompStopTemp; 373 dataToStore->changedData.uBatEmptyCompStopVolt = defaultEepromData.uBatEmptyCompStopVolt; 374 375 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 376 dataToStore->changedData.cefW = defaultEepromData.cefW; 377 dataToStore->changedData.batteryEmptyDetectionMode = defaultEepromData.batteryEmptyDetectionMode; 378 379 313 memcpy(&eepromData.changedData, &defaultEepromData, sizeof(eeprom_data_t)); 380 314 381 315 // Eeprom Status Infos 382 dataToStore->eepromState.writeCounter++; 383 dataToStore->eepromState.structureSize = sizeof(eeprom_stored_data_t); 384 dataToStore->eepromState.revisionInfo = 0; 385 dataToStore->eepromState.firstStartId = CONFIG_ID; 386 387 388 /****************EEPROM Speichern********************/ 389 390 EEPROM_Write(0, 0, (uint8_t*)eepromData, SIZE_OF_DATA_TO_STORE); 391 392 393 394 316 eepromData.eepromState.writeCounter++; 317 eepromData.eepromState.structureSize = sizeof(eeprom_stored_data_t); 318 eepromData.eepromState.revisionInfo = 0; 319 eepromData.eepromState.firstStartId = CONFIG_ID; 320 321 /**************** EEPROM Speichern ********************/ 322 323 EEPROM_Write(0, 0, (uint8_t*)&eepromData, sizeof(eeprom_stored_data_t)); 395 324 396 325 /**************** AUSLESEN_UND_PRÜFEN ********************/ 397 326 398 327 return EEPROM_readConfig(data); 399 400 401 402 } 403 328 } 329 330 //------------------------------------------------------------------------------ 404 331 405 332 //Werkeinstellung ohne Kalibrierwert Überschreibung … … 407 334 { 408 335 printf("EEPROM FACTORY RESTORE/UPDATE!\n"); 409 410 336 411 412 eeprom_stored_data_t* dataToStore = (eeprom_stored_data_t*)eepromData; 413 414 EEPROM_readConfig(data); // Restoring calibration data 337 //eeprom_stored_data_t* dataToStore = &eepromData; 338 339 EEPROM_readConfig(data); // Restoring calibration data 415 340 416 341 // Offset und Gain 417 342 418 dataToStore->changedData.batteryCurrentOffsetRefTemperatureShunt = data->s.parameter.batteryCurrentOffsetRefTemperatureShunt;419 dataToStore->changedData.batteryCurrentOffsetRefTemperatureChip= data->s.parameter.batteryCurrentOffsetRefTemperatureChip;420 dataToStore->changedData.batteryCurrentOffsetRefshuntVoltage = data->s.parameter.batteryCurrentOffsetRefshuntVoltage;421 dataToStore->changedData.batteryCurrentOffsetCommonModeCalibrationVoltage = data->s.parameter.batteryCurrentOffsetCommonModeCalibrationVoltage;422 dataToStore->changedData.batteryCurrentOffsetCommonModeCompensationFactor = data->s.parameter.batteryCurrentOffsetCommonModeCompensationFactor;423 dataToStore->changedData.batteryCurrentOffsetTemperatureCalibrationTemperature= data->s.parameter.batteryCurrentOffsetTemperatureCalibrationTemperature;424 dataToStore->changedData.batteryCurrentOffsetTemperatureCompensationFactor= data->s.parameter.batteryCurrentOffsetTemperatureCompensationFactor;425 dataToStore->changedData.currentOffset= data->s.parameter.batteryCurrentOffset;426 dataToStore->changedData.currentGain = data->s.parameter.batteryCurrentGainCorrectionFaktor;427 dataToStore->changedData.currentOffsetFast= data->s.parameter.batteryCurrentOffsetFast;428 dataToStore->changedData.currentGainFast = data->s.parameter.batteryCurrentGainCorrectionFaktorFast;343 eepromData.changedData.batteryCurrentOffsetRefTemperatureShunt = data->s.parameter.batteryCurrentOffsetRefTemperatureShunt; 344 eepromData.changedData.batteryCurrentOffsetRefTemperatureChip = data->s.parameter.batteryCurrentOffsetRefTemperatureChip; 345 eepromData.changedData.batteryCurrentOffsetRefshuntVoltage = data->s.parameter.batteryCurrentOffsetRefshuntVoltage; 346 eepromData.changedData.batteryCurrentOffsetCommonModeCalibrationVoltage = data->s.parameter.batteryCurrentOffsetCommonModeCalibrationVoltage; 347 eepromData.changedData.batteryCurrentOffsetCommonModeCompensationFactor = data->s.parameter.batteryCurrentOffsetCommonModeCompensationFactor; 348 eepromData.changedData.batteryCurrentOffsetTemperatureCalibrationTemperature = data->s.parameter.batteryCurrentOffsetTemperatureCalibrationTemperature; 349 eepromData.changedData.batteryCurrentOffsetTemperatureCompensationFactor = data->s.parameter.batteryCurrentOffsetTemperatureCompensationFactor; 350 eepromData.changedData.currentOffset = data->s.parameter.batteryCurrentOffset; 351 eepromData.changedData.currentGain = data->s.parameter.batteryCurrentGainCorrectionFaktor; 352 eepromData.changedData.currentOffsetFast = data->s.parameter.batteryCurrentOffsetFast; 353 eepromData.changedData.currentGainFast = data->s.parameter.batteryCurrentGainCorrectionFaktorFast; 429 354 430 dataToStore->changedData.batteryCurrentGainRefTempShunt= data->s.parameter.batteryCurrentGainRefTempShunt;431 dataToStore->changedData.batteryCurrentGainRefTempChip= data->s.parameter.batteryCurrentGainRefTempChip;432 dataToStore->changedData.batteryCurrentGainRefCurrent = data->s.parameter.batteryCurrentGainRefCurrent;433 dataToStore->changedData.batteryCurrentGainTemperatureCalibrationShuntTemperature = data->s.parameter.batteryCurrentGainTemperatureCalibrationShuntTemperature;434 dataToStore->changedData.batteryCurrentGainTemperatureCompensationShuntFactor = data->s.parameter.batteryCurrentGainTemperatureCompensationShuntFactor;435 dataToStore->changedData.batteryCurrentGainTemperatureCalibrationChipTemperature = data->s.parameter.batteryCurrentGainTemperatureCalibrationChipTemperature;436 dataToStore->changedData.batteryCurrentGainTemperatureCompensationChipFactor = data->s.parameter.batteryCurrentGainTemperatureCompensationChipFactor;355 eepromData.changedData.batteryCurrentGainRefTempShunt = data->s.parameter.batteryCurrentGainRefTempShunt; 356 eepromData.changedData.batteryCurrentGainRefTempChip = data->s.parameter.batteryCurrentGainRefTempChip; 357 eepromData.changedData.batteryCurrentGainRefCurrent = data->s.parameter.batteryCurrentGainRefCurrent; 358 eepromData.changedData.batteryCurrentGainTemperatureCalibrationShuntTemperature = data->s.parameter.batteryCurrentGainTemperatureCalibrationShuntTemperature; 359 eepromData.changedData.batteryCurrentGainTemperatureCompensationShuntFactor = data->s.parameter.batteryCurrentGainTemperatureCompensationShuntFactor; 360 eepromData.changedData.batteryCurrentGainTemperatureCalibrationChipTemperature = data->s.parameter.batteryCurrentGainTemperatureCalibrationChipTemperature; 361 eepromData.changedData.batteryCurrentGainTemperatureCompensationChipFactor = data->s.parameter.batteryCurrentGainTemperatureCompensationChipFactor; 437 362 438 363 // Schnittstellenparameter 439 dataToStore->changedData.baudrate = defaultEepromData.baudrate;440 dataToStore->changedData.parityMode= defaultEepromData.parityMode;441 dataToStore->changedData.stopBits = defaultEepromData.stopBits;442 dataToStore->changedData.slave_adress = defaultEepromData.slave_adress;443 dataToStore->changedData.ibn_day = defaultEepromData.ibn_day;444 dataToStore->changedData.ibn_month= defaultEepromData.ibn_month;445 dataToStore->changedData.ibn_year = defaultEepromData.ibn_year;446 dataToStore->changedData.user_id = defaultEepromData.user_id;364 eepromData.changedData.baudrate = defaultEepromData.baudrate; 365 eepromData.changedData.parityMode = defaultEepromData.parityMode; 366 eepromData.changedData.stopBits = defaultEepromData.stopBits; 367 eepromData.changedData.slave_adress = defaultEepromData.slave_adress; 368 eepromData.changedData.ibn_day = defaultEepromData.ibn_day; 369 eepromData.changedData.ibn_month = defaultEepromData.ibn_month; 370 eepromData.changedData.ibn_year = defaultEepromData.ibn_year; 371 eepromData.changedData.user_id = defaultEepromData.user_id; 447 372 448 373 //Ah counter 449 dataToStore->changedData.cef = defaultEepromData.cef;450 dataToStore->changedData.cellCapacity = defaultEepromData.cellCapacity;451 dataToStore->changedData.cellEnergy= defaultEepromData.cellEnergy;452 dataToStore->changedData.iBatFull = defaultEepromData.iBatFull;453 dataToStore->changedData.peukert = defaultEepromData.peukert;454 dataToStore->changedData.tBatFull = defaultEepromData.tBatFull;455 dataToStore->changedData.uBatFull = defaultEepromData.uBatFull;456 dataToStore->changedData.uBatEmpty= defaultEepromData.uBatEmpty;457 dataToStore->changedData.socCalcMode = defaultEepromData.socCalcMode;458 dataToStore->changedData.cellRatedDischargeTime= defaultEepromData.cellRatedDischargeTime;374 eepromData.changedData.cef = defaultEepromData.cef; 375 eepromData.changedData.cellCapacity = defaultEepromData.cellCapacity; 376 eepromData.changedData.cellEnergy = defaultEepromData.cellEnergy; 377 eepromData.changedData.iBatFull = defaultEepromData.iBatFull; 378 eepromData.changedData.peukert = defaultEepromData.peukert; 379 eepromData.changedData.tBatFull = defaultEepromData.tBatFull; 380 eepromData.changedData.uBatFull = defaultEepromData.uBatFull; 381 eepromData.changedData.uBatEmpty = defaultEepromData.uBatEmpty; 382 eepromData.changedData.socCalcMode = defaultEepromData.socCalcMode; 383 eepromData.changedData.cellRatedDischargeTime = defaultEepromData.cellRatedDischargeTime; 459 384 460 385 // Schaltausgänge 461 dataToStore->changedData.lvpStart = defaultEepromData.lvpStart; 462 dataToStore->changedData.lvpStop = defaultEepromData.lvpStop; 463 dataToStore->changedData.ovpStart = defaultEepromData.ovpStart; 464 dataToStore->changedData.ovpStop = defaultEepromData.ovpStop; 465 dataToStore->changedData.loadCurrentLimit = defaultEepromData.loadCurrentLimit; 466 dataToStore->changedData.chargeCurrentLimit = defaultEepromData.chargeCurrentLimit; 467 dataToStore->changedData.chargeStopHighTemperatureStart = defaultEepromData.chargeStopHighTemperatureStart; 468 dataToStore->changedData.chargeStopHighTemperatureStop = defaultEepromData.chargeStopHighTemperatureStop; 469 dataToStore->changedData.chargeStopLowTemperatureStart = defaultEepromData.chargeStopLowTemperatureStart; 470 dataToStore->changedData.chargeStopLowTemperatureStop = defaultEepromData.chargeStopLowTemperatureStop; 471 dataToStore->changedData.dischargeStopHighTemperatureStart = defaultEepromData.dischargeStopHighTemperatureStart; 472 dataToStore->changedData.dischargeStopHighTemperatureStop = defaultEepromData.dischargeStopHighTemperatureStop; 473 dataToStore->changedData.dischargeStopLowTemperatureStart = defaultEepromData.dischargeStopLowTemperatureStart; 474 dataToStore->changedData.dischargeStopLowTemperatureStop = defaultEepromData.dischargeStopLowTemperatureStop; 475 476 dataToStore->changedData.uBatEmptyCompStartTemp = defaultEepromData.uBatEmptyCompStartTemp; 477 dataToStore->changedData.uBatEmptyCompStopTemp = defaultEepromData.uBatEmptyCompStopTemp; 478 dataToStore->changedData.uBatEmptyCompStopVolt = defaultEepromData.uBatEmptyCompStopVolt; 479 480 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 481 dataToStore->changedData.cefW = defaultEepromData.cefW; 482 dataToStore->changedData.batteryEmptyDetectionMode = defaultEepromData.batteryEmptyDetectionMode; 386 eepromData.changedData.lvpStart = defaultEepromData.lvpStart; 387 eepromData.changedData.lvpStop = defaultEepromData.lvpStop; 388 eepromData.changedData.ovpStart = defaultEepromData.ovpStart; 389 eepromData.changedData.ovpStop = defaultEepromData.ovpStop; 390 eepromData.changedData.loadCurrentLimit = defaultEepromData.loadCurrentLimit; 391 eepromData.changedData.chargeCurrentLimit = defaultEepromData.chargeCurrentLimit; 392 eepromData.changedData.chargeStopHighTemperatureStart = defaultEepromData.chargeStopHighTemperatureStart; 393 eepromData.changedData.chargeStopHighTemperatureStop = defaultEepromData.chargeStopHighTemperatureStop; 394 eepromData.changedData.chargeStopLowTemperatureStart = defaultEepromData.chargeStopLowTemperatureStart; 395 eepromData.changedData.chargeStopLowTemperatureStop = defaultEepromData.chargeStopLowTemperatureStop; 396 eepromData.changedData.dischargeStopHighTemperatureStart = defaultEepromData.dischargeStopHighTemperatureStart; 397 eepromData.changedData.dischargeStopHighTemperatureStop = defaultEepromData.dischargeStopHighTemperatureStop; 398 eepromData.changedData.dischargeStopLowTemperatureStart = defaultEepromData.dischargeStopLowTemperatureStart; 399 eepromData.changedData.dischargeStopLowTemperatureStop = defaultEepromData.dischargeStopLowTemperatureStop; 400 401 eepromData.changedData.uBatEmptyCompStartTemp = defaultEepromData.uBatEmptyCompStartTemp; 402 eepromData.changedData.uBatEmptyCompStopTemp = defaultEepromData.uBatEmptyCompStopTemp; 403 eepromData.changedData.uBatEmptyCompStopVolt = defaultEepromData.uBatEmptyCompStopVolt; 404 405 eepromData.changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 406 eepromData.changedData.cefW = defaultEepromData.cefW; 407 eepromData.changedData.batteryEmptyDetectionMode = defaultEepromData.batteryEmptyDetectionMode; 408 eepromData.changedData.auxOutputMode = defaultEepromData.auxOutputMode; 409 eepromData.changedData.auxOutputSetpointOn = defaultEepromData.auxOutputSetpointOn; 410 eepromData.changedData.auxOutputSetpointOff = defaultEepromData.auxOutputSetpointOff; 411 eepromData.changedData.auxOutputInverted = defaultEepromData.auxOutputInverted; 483 412 484 413 485 486 487 488 dataToStore->eepromState.writeCounter = dataToStore->eepromState.writeCounter++; 489 dataToStore->eepromState.structureSize = sizeof(eeprom_stored_data_t); 490 dataToStore->eepromState.revisionInfo = 0; 491 dataToStore->eepromState.firstStartId = CONFIG_ID; 492 493 dataToStore->deviceInfo.deviceInfoWritten = 1; 494 dataToStore->deviceInfo.SN = data->s.parameter.sn; 495 496 EEPROM_Write(0,0, (uint8_t*)dataToStore, SIZE_OF_DATA_TO_STORE); 497 498 414 eepromData.eepromState.writeCounter = eepromData.eepromState.writeCounter++; 415 eepromData.eepromState.structureSize = sizeof(eeprom_stored_data_t); 416 eepromData.eepromState.revisionInfo = 0; 417 eepromData.eepromState.firstStartId = CONFIG_ID; 418 419 eepromData.deviceInfo.deviceInfoWritten = 1; 420 eepromData.deviceInfo.SN = data->s.parameter.sn; 421 422 EEPROM_Write(0,0, (uint8_t*)&eepromData, sizeof(eeprom_stored_data_t)); 423 499 424 return EEPROM_readConfig(data); 500 425 } … … 505 430 /****************LESE_WERTE_AUS_SYSDATA*********************/ 506 431 printf("EEPROM STORE CONFIG!\n"); 507 dataToStore = (eeprom_stored_data_t*) eepromData;432 dataToStore = (eeprom_stored_data_t*)&eepromData; 508 433 509 434 // Schnittstellenparameter … … 578 503 dataToStore->changedData.batteryEmptyDetectionMode = data->s.parameter.batteryEmptyDetectionMode; 579 504 505 dataToStore->changedData.auxOutputMode = data->s.parameter.auxOutputMode; 506 dataToStore->changedData.auxOutputSetpointOn = data->s.parameter.auxOutputSetpointOn; 507 dataToStore->changedData.auxOutputSetpointOff = data->s.parameter.auxOutputSetpointOff; 508 dataToStore->changedData.auxOutputInverted = data->s.parameter.auxOutputInverted; 509 580 510 // Eeprom Status Infos 581 511 dataToStore->eepromState.writeCounter++; … … 591 521 592 522 593 EEPROM_Write(0,0, (uint8_t*)dataToStore, SIZE_OF_DATA_TO_STORE);523 EEPROM_Write(0,0, (uint8_t*)dataToStore, sizeof(eeprom_stored_data_t)); 594 524 595 525 return EEPROM_readConfig(data); … … 605 535 606 536 607 EEPROM_Read(0, 0, (uint8_t*) eepromData, sizeof(eepromData));608 609 610 dataToStore = (eeprom_stored_data_t*) eepromData;537 EEPROM_Read(0, 0, (uint8_t*)&eepromData, sizeof(eepromData)); 538 539 540 dataToStore = (eeprom_stored_data_t*)&eepromData; 611 541 612 542 // Schnittstellenparameter … … 680 610 data->s.parameter.cefW = dataToStore->changedData.cefW; 681 611 data->s.parameter.batteryEmptyDetectionMode = dataToStore->changedData.batteryEmptyDetectionMode; 612 613 data->s.parameter.auxOutputMode = dataToStore->changedData.auxOutputMode; 614 data->s.parameter.auxOutputSetpointOn = dataToStore->changedData.auxOutputSetpointOn; 615 data->s.parameter.auxOutputSetpointOff = dataToStore->changedData.auxOutputSetpointOff; 616 data->s.parameter.auxOutputInverted = dataToStore->changedData.auxOutputInverted; 617 682 618 683 684 619 685 620 // Geräteinformation … … 719 654 } 720 655 656 //----------------------------------------------------------------------------- 721 657 722 658 void EEPROM_Read (uint16_t page, uint16_t offset, uint8_t *data, uint16_t size) … … 735 671 uint16_t MemAddress = startPage<<paddrposition | offset; 736 672 uint16_t bytesremaining = bytestowrite(size, offset); 737 HAL_I2C_Mem_Read(EEPROM_I2C, EEPROM_ADDR, MemAddress, 2, &data[pos], bytesremaining, 1000); 673 HAL_StatusTypeDef res = HAL_I2C_Mem_Read(EEPROM_I2C, EEPROM_ADDR, MemAddress, 2, &data[pos], bytesremaining, 1000); 674 #ifdef DEBUG 675 //printf("MemAddress = 0x%04X, data ptr = 0x%08X, bytes_remaining = %u, res = %u\n", MemAddress, (uint32_t)&data[pos], bytesremaining, res); 676 #endif 738 677 startPage += 1; 739 678 offset=0; … … 741 680 pos += bytesremaining; 742 681 } 743 744 } 745 682 } 683 684 //----------------------------------------------------------------------------- 746 685 747 686 void EEPROM_Write (uint16_t page, uint16_t offset, uint8_t *data, uint16_t size) 748 687 { 749 750 688 // Find out the number of bit, where the page addressing starts 751 689 int paddrposition = PADDRPOSITION; … … 768 706 uint16_t bytesremaining = bytestowrite(size, offset); // calculate the remaining bytes to be written 769 707 770 HAL_I2C_Mem_Write(EEPROM_I2C, EEPROM_ADDR, MemAddress, 2, &data[pos], bytesremaining, 1000); // write the data to the EEPROM 708 HAL_StatusTypeDef res = HAL_I2C_Mem_Write(EEPROM_I2C, EEPROM_ADDR, MemAddress, 2, &data[pos], bytesremaining, 1000); // write the data to the EEPROM 709 #ifdef DEBUG 710 //printf("MemAddress = 0x%04X, data ptr = 0x%08X, bytes_remaining = %u, res = %u\n", MemAddress, (uint32_t)&data[pos], bytesremaining, res); 711 #endif 771 712 startPage += 1; // increment the page, so that a new page address can be selected for further write 772 713 offset=0; // since we will be writing to a new page, so offset will be 0
Note: See TracChangeset
for help on using the changeset viewer.
