Changeset 25 for trunk/fw_g473rct/SES/src/eeprom.c
- Timestamp:
- Sep 7, 2025, 3:51:43 PM (7 weeks ago)
- File:
-
- 1 edited
-
trunk/fw_g473rct/SES/src/eeprom.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/SES/src/eeprom.c
r20 r25 94 94 int16_t uBatEmptyCompStopTemp; // We stop calculating uBatEmpty compensations when cell temperature is lower than this value 95 95 uint16_t uBatEmptyCompStopVolt; // uBatEmpty Voltage at temperatures lower than lvpCompStopTemp 96 97 96 int16_t extraDischargeStrom_mA; // For example, current that consumes LiPro itself 98 uint32_t dischargeTotalAh;99 uint32_t chargeTotalAh;100 uint32_t dischargeTotalWh; // 154-155 [mAs]101 uint32_t chargeTotalWh; // 156-157 [mAs]102 103 97 uint16_t cefW; 104 uint32_t onTime; 98 105 99 106 100 } eeprom_data_t; 107 101 108 typedef struct 109 { 110 // Schnittstellenparameter 111 uint32_t baudrate; 112 uint16_t parityMode; 113 uint16_t stopBits; 114 uint16_t slave_adress; 115 uint16_t ibn_day; 116 uint16_t ibn_month; 117 uint16_t ibn_year; 118 uint16_t user_id; 119 120 // Offset und Gain 121 int16_t batteryCurrentOffsetRefTemperatureShunt; 122 int16_t batteryCurrentOffsetRefTemperatureChip; 123 int16_t batteryCurrentGainRefTempShunt; 124 int16_t batteryCurrentGainRefTempChip; 125 int16_t batteryCurrentOffsetTemperatureCalibrationTemperature; 126 int16_t batteryCurrentGainTemperatureCalibrationShuntTemperature; 127 int16_t batteryCurrentGainTemperatureCalibrationChipTemperature; 128 int32_t batteryCurrentOffsetRefshuntVoltage; 129 int32_t batteryCurrentOffsetCommonModeCalibrationVoltage; 130 int32_t batteryCurrentOffsetCommonModeCompensationFactor; 131 int32_t batteryCurrentOffsetTemperatureCompensationFactor; 132 int32_t batteryCurrentGainRefCurrent; 133 int32_t batteryCurrentGainTemperatureCompensationShuntFactor; 134 int32_t batteryCurrentGainTemperatureCompensationChipFactor; 135 136 int32_t currentOffset; 137 uint32_t currentGain; 138 139 int64_t mAsCounter; 140 int32_t detectedCapacity; 141 int32_t detectedEnergy; 142 int32_t mAh_AutoMode; 143 int32_t mWh_AutoMode; 144 145 // battery parameter 146 uint16_t cef; 147 uint16_t peukert; 148 uint32_t cellCapacity; 149 uint32_t cellEnergy; 150 uint16_t iBatFull; 151 uint16_t tBatFull; 152 uint16_t uBatFull; 153 uint16_t uBatEmpty; 154 uint8_t socCalcMode; 155 uint16_t cellRatedDischargeTime; 156 157 // Schaltausgänge 158 uint16_t lvpStart; // Spannung ab der die LOW Voltage Protection aktiv wird in mV 159 uint16_t lvpStop; // Spannung ab der die LOW Voltage Protection wieder inaktiv wird 160 uint16_t ovpStart; // Spannung ab der die OVER Voltage Protection aktiv wird in mV 161 uint16_t ovpStop; // Spannung ab der die OVER Voltage Protection wieder inaktiv wird 162 int16_t loadCurrentLimit; // maximaler Laststrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Laststrom Protection aktiv 163 int16_t chargeCurrentLimit; // maximaler Ladestrom in A wenn der Strom größer ist als der eingestelle Wert dann wird die Ladestrom Protection aktiv 164 int16_t chargeStopHighTemperatureStart; // Abschalttemperatur Ladung wegen zu hoher Temperatur 165 int16_t chargeStopHighTemperatureStop; // Wiedereinschalttemperatur 166 int16_t chargeStopLowTemperatureStart; // Abschalttemperatur Ladung wegen zu niedriger Temperatur 167 int16_t chargeStopLowTemperatureStop; // Wiedereinschalttemperatur 168 int16_t dischargeStopHighTemperatureStart; // Abschalttemperatur Entladung wegen zu hoher Temperatur 169 int16_t dischargeStopHighTemperatureStop; // Wiedereinschalttemperatur 170 int16_t dischargeStopLowTemperatureStart; // Abschalttemperatur EntLadung wegen zu niedriger Temperatur 171 int16_t dischargeStopLowTemperatureStop; // Wiedereinschalttemperatur 172 173 int16_t uBatEmptyCompStartTemp; // We start calculating uBatEmpty compensations only when cell temperature is lower than this value 174 int16_t uBatEmptyCompStopTemp; // We stop calculating uBatEmpty compensations when cell temperature is lower than this value 175 uint16_t uBatEmptyCompStopVolt; // uBatEmpty Voltage at temperatures lower than lvpCompStopTemp 176 177 int16_t extraDischargeStrom_mA; // For example, current that consumes LiPro itself 178 uint32_t dischargeTotalAh; 179 uint32_t chargeTotalAh; 180 uint32_t dischargeTotalWh; // 154-155 [mAs] 181 uint32_t chargeTotalWh; // 156-157 [mAs] 182 183 uint16_t cefW; 184 uint32_t onTime; 185 186 }eeprom_old_data_t; 102 187 103 188 104 // Substitute for #if sizeof(some_type) == sizeof(another_type) functionality … … 248 164 249 165 // muss modulo 8 noch hinzufügen wg 8 byte alignement 250 static uint 64_t eepromData[(SIZE_OF_DATA_TO_STORE / 8) + 1];166 static uint8_t eepromData[SIZE_OF_DATA_TO_STORE]; 251 167 252 168 … … 336 252 337 253 /* extraDischargeStrom_mA */ 7, // mA, current that LiPro consumes itself 338 /* dischargeTotalAh */ 0, // Ah for negative current counter339 /* chargeTotalAh */ 0, // Ah for total charge counter340 /* dischargeTotalWh */ 0,341 /* chargeTotalWh */ 0,342 343 254 /* cefW */ 90, // 90% cef for Wh calculations 344 /* onTime */ 0255 345 256 346 257 }; … … 359 270 startType_t EEPROM_isFirstStart(void) 360 271 { 361 // sizeof eeprom_new_data_t must not be equal to size of eeprom_old_data_t362 BUILD_BUG_ON(sizeof(eeprom_data_t) == sizeof(eeprom_old_data_t));363 272 364 273 uint8_t firstStartCatcher; … … 390 299 { 391 300 eeprom_stored_data_t* dataToStore; 392 uint32_t PageError;393 uint32_t Address;394 uint32_t x;395 396 301 printf("EEPROM FULL RESTORE!\n"); 397 302 … … 458 363 459 364 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 460 dataToStore->changedData.dischargeTotalAh = defaultEepromData.dischargeTotalAh;461 dataToStore->changedData.chargeTotalAh = defaultEepromData.chargeTotalAh;462 dataToStore->changedData.dischargeTotalWh = defaultEepromData.dischargeTotalWh;463 dataToStore->changedData.chargeTotalWh = defaultEepromData.chargeTotalWh;464 365 dataToStore->changedData.cefW = defaultEepromData.cefW; 465 dataToStore->changedData.onTime = defaultEepromData.onTime; 466 467 dataToStore->changedData.mAsCounter = defaultEepromData.mAsCounter; 468 dataToStore->changedData.detectedCapacity = defaultEepromData.detectedCapacity; 469 dataToStore->changedData.detectedEnergy = defaultEepromData.detectedEnergy; 470 dataToStore->changedData.mAs_AutoMode = defaultEepromData.mAs_AutoMode; 471 dataToStore->changedData.mWs_AutoMode = defaultEepromData.mWs_AutoMode; 472 366 367 368 473 369 // Eeprom Status Infos 474 370 dataToStore->eepromState.writeCounter++; … … 567 463 568 464 dataToStore->changedData.extraDischargeStrom_mA = defaultEepromData.extraDischargeStrom_mA; 569 dataToStore->changedData.dischargeTotalAh = defaultEepromData.dischargeTotalAh;570 dataToStore->changedData.chargeTotalAh = defaultEepromData.chargeTotalAh;571 465 dataToStore->changedData.cefW = defaultEepromData.cefW; 572 dataToStore->changedData.onTime = defaultEepromData.onTime; 573 574 // These fields are new 575 dataToStore->changedData.mAsCounter = defaultEepromData.mAsCounter; 576 dataToStore->changedData.detectedCapacity = defaultEepromData.detectedCapacity; 577 dataToStore->changedData.detectedEnergy = defaultEepromData.detectedEnergy; 578 dataToStore->changedData.mAs_AutoMode = defaultEepromData.mAs_AutoMode; 579 dataToStore->changedData.mWs_AutoMode = defaultEepromData.mWs_AutoMode; 580 dataToStore->changedData.dischargeTotalWh = defaultEepromData.dischargeTotalWh; 581 dataToStore->changedData.chargeTotalWh = defaultEepromData.chargeTotalWh; 582 466 467 468 469 583 470 584 471 dataToStore->eepromState.writeCounter = dataToStore->eepromState.writeCounter++; … … 599 486 { 600 487 eeprom_stored_data_t* dataToStore; 601 uint32_t PageError;602 uint32_t Address;603 uint32_t x;604 488 /****************LESE_WERTE_AUS_SYSDATA*********************/ 605 489 printf("EEPROM STORE CONFIG!\n"); … … 669 553 dataToStore->changedData.uBatEmptyCompStopTemp = data->s.parameter.uBatEmptyCompStopTemp; 670 554 dataToStore->changedData.uBatEmptyCompStopVolt = data->s.parameter.uBatEmptyCompStopVolt; 671 672 555 dataToStore->changedData.extraDischargeStrom_mA = data->s.parameter.extraDischargeStrom_mA; 673 dataToStore->changedData.dischargeTotalAh = data->s.values.dischargeTotalAh;674 dataToStore->changedData.chargeTotalAh = data->s.values.chargeTotalAh;675 dataToStore->changedData.dischargeTotalWh = data->s.values.dischargeTotalWh;676 dataToStore->changedData.chargeTotalWh = data->s.values.chargeTotalWh;677 556 dataToStore->changedData.cefW = data->s.parameter.cefW; 678 dataToStore->changedData.onTime = data->s.values.onTime; 679 680 dataToStore->changedData.mAsCounter = data->s.values.mAsCounter; 681 dataToStore->changedData.detectedCapacity = data->s.values.detectedCapacity; 682 dataToStore->changedData.detectedEnergy = data->s.values.detectedEnergy; 683 dataToStore->changedData.mAs_AutoMode = data->s.values.mAs_AutoMode; 684 dataToStore->changedData.mWs_AutoMode = data->s.values.mWs_AutoMode; 685 557 686 558 // Eeprom Status Infos 687 559 dataToStore->eepromState.writeCounter++; … … 781 653 782 654 data->s.parameter.extraDischargeStrom_mA = dataToStore->changedData.extraDischargeStrom_mA; 655 data->s.parameter.cefW = dataToStore->changedData.cefW; 656 657 658 // Geräteinformation 659 data->s.parameter.sn = dataToStore->deviceInfo.SN; 660 661 // prüfe Eeprom Status Infos 662 //dataToStore->eepromState.writeCounter ++ ; 663 if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR; 664 if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR; 665 if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR; 666 667 668 return HAL_OK; 669 } 670 671 /*Entfernte EEPROM Werte 672 783 673 data->s.values.dischargeTotalAh = dataToStore->changedData.dischargeTotalAh; 784 674 data->s.values.chargeTotalAh = dataToStore->changedData.chargeTotalAh; 785 675 data->s.values.dischargeTotalWh = dataToStore->changedData.dischargeTotalWh; 786 676 data->s.values.chargeTotalWh = dataToStore->changedData.chargeTotalWh; 787 data->s.parameter.cefW = dataToStore ->changedData.cefW;788 677 data->s.values.onTime = dataToStore->changedData.onTime; 789 790 678 data->s.values.mAsCounter = dataToStore->changedData.mAsCounter; 791 679 data->s.values.detectedCapacity = dataToStore->changedData.detectedCapacity; … … 793 681 data->s.values.mAs_AutoMode = dataToStore->changedData.mAs_AutoMode; 794 682 data->s.values.mWs_AutoMode = dataToStore->changedData.mWs_AutoMode; 795 796 // Geräteinformation 797 data->s.parameter.sn = dataToStore->deviceInfo.SN; 798 799 // prüfe Eeprom Status Infos 800 //dataToStore->eepromState.writeCounter ++ ; 801 if (dataToStore->eepromState.structureSize != sizeof(eeprom_stored_data_t)) return HAL_ERROR; 802 if (dataToStore->eepromState.revisionInfo != 0) return HAL_ERROR; 803 if (dataToStore->eepromState.firstStartId != CONFIG_ID) return HAL_ERROR; 804 805 return HAL_OK; 806 } 683 */ 684 807 685 808 686 //--- NEW Functions
Note: See TracChangeset
for help on using the changeset viewer.
