Add new temperature thresholds to flash config

This commit is contained in:
Thomas Kolb 2022-10-15 21:42:46 +02:00
parent c807acec11
commit d7b8c90cb4
5 changed files with 56 additions and 30 deletions

View file

@ -3,5 +3,5 @@
bool flash_config_is_present(void) bool flash_config_is_present(void)
{ {
return (FLASH_CONFIG_CAL_FACTOR_U_BAT != 0xFFFF) return (FLASH_CONFIG_CAL_FACTOR_U_BAT != 0xFFFF)
&& (FLASH_CONFIG_U_BAT_REGULATION_CORRIDOR != -1); && (FLASH_CONFIG_DEEPSLEEP_DURATION != 0xFFFFFFFF);
} }

View file

@ -63,27 +63,35 @@ extern uint8_t __conf_start;
/* Resume operation below this temperature (in units of 0.1 °C). */ /* Resume operation below this temperature (in units of 0.1 °C). */
#define FLASH_CONFIG_INTERNAL_TEMPERATURE_RECOVERY (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x012C)) #define FLASH_CONFIG_INTERNAL_TEMPERATURE_RECOVERY (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x012C))
/* Minimum allowed external (BMP280) temperature (in units of 0.1 °C). If the
* temperature falls below this value, charging is stopped to prevent damage to
* the battery. */
#define FLASH_CONFIG_EXTERNAL_TEMPERATURE_LIMIT (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0130))
/* Resume operation above this temperature (in units of 0.1 °C). */
#define FLASH_CONFIG_EXTERNAL_TEMPERATURE_RECOVERY (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0134))
/* Thresholds for load control */ /* Thresholds for load control */
/* Voltage above which the load is turned on (in mV). */ /* Voltage above which the load is turned on (in mV). */
#define FLASH_CONFIG_U_BAT_LOAD_ON (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0130)) #define FLASH_CONFIG_U_BAT_LOAD_ON (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0138))
/* Voltage below which the load is turned off (in mV). */ /* Voltage below which the load is turned off (in mV). */
#define FLASH_CONFIG_U_BAT_LOAD_OFF (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0134)) #define FLASH_CONFIG_U_BAT_LOAD_OFF (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x013c))
/* Current at which the overload protection triggers (in mA). */ /* Current at which the overload protection triggers (in mA). */
#define FLASH_CONFIG_LOAD_CURRENT_LIMIT_MA (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0138)) #define FLASH_CONFIG_LOAD_CURRENT_LIMIT_MA (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0140))
/* Inrush tolerance time (in ms). Overload protection is not enforced for this /* Inrush tolerance time (in ms). Overload protection is not enforced for this
* time after load power-on. */ * time after load power-on. */
#define FLASH_CONFIG_LOAD_CURRENT_INRUSH_TIME (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x013C)) #define FLASH_CONFIG_LOAD_CURRENT_INRUSH_TIME (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x0144))
/* Minimum voltage that the charge pump must produce above U_bat before any /* Minimum voltage that the charge pump must produce above U_bat before any
* power FET is switched on (in mV). */ * power FET is switched on (in mV). */
#define FLASH_CONFIG_MIN_CHARGE_PUMP_EXCESS_VOLTAGE (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0140)) #define FLASH_CONFIG_MIN_CHARGE_PUMP_EXCESS_VOLTAGE (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0148))
/* The minimum time the load must be off before it can be switched on again (in ms). */ /* The minimum time the load must be off before it can be switched on again (in ms). */
#define FLASH_CONFIG_LOAD_ON_DELAY (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x0144)) #define FLASH_CONFIG_LOAD_ON_DELAY (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x014c))
/* Measurement Averaging: /* Measurement Averaging:
@ -99,21 +107,21 @@ extern uint8_t __conf_start;
* */ * */
/* Averaging factor for load current. */ /* Averaging factor for load current. */
#define FLASH_CONFIG_AVG_ALPHA_I_SOLAR (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0148)) #define FLASH_CONFIG_AVG_ALPHA_I_SOLAR (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0150))
#define FLASH_CONFIG_AVG_ALPHA_I_LOAD (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x014C)) #define FLASH_CONFIG_AVG_ALPHA_I_LOAD (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0154))
#define FLASH_CONFIG_AVG_ALPHA_U_BAT (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0150)) #define FLASH_CONFIG_AVG_ALPHA_U_BAT (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0158))
#define FLASH_CONFIG_AVG_ALPHA_U_SW (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0154)) #define FLASH_CONFIG_AVG_ALPHA_U_SW (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x015c))
#define FLASH_CONFIG_AVG_ALPHA_U_SOLAR (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0158)) #define FLASH_CONFIG_AVG_ALPHA_U_SOLAR (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0160))
#define FLASH_CONFIG_AVG_ALPHA_TEMP (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x015C)) #define FLASH_CONFIG_AVG_ALPHA_TEMP (*(int32_t*)(FLASH_CONFIG_BASE_PTR + 0x0164))
/* Generic configuration */ /* Generic configuration */
/* Time (in ms) to stay active in idle state before entering deep sleep. */ /* Time (in ms) to stay active in idle state before entering deep sleep. */
#define FLASH_CONFIG_DEEPSLEEP_DELAY (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x0160)) #define FLASH_CONFIG_DEEPSLEEP_DELAY (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x0168))
/* Deep sleep duration (in seconds). */ /* Deep sleep duration (in seconds). */
#define FLASH_CONFIG_DEEPSLEEP_DURATION (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x0164)) #define FLASH_CONFIG_DEEPSLEEP_DURATION (*(uint32_t*)(FLASH_CONFIG_BASE_PTR + 0x016c))
/* Functions */ /* Functions */

View file

@ -56,6 +56,14 @@ config:
# Resume operation below this temperature (in units of 0.1 °C). # Resume operation below this temperature (in units of 0.1 °C).
INTERNAL_TEMPERATURE_RECOVERY: 450 INTERNAL_TEMPERATURE_RECOVERY: 450
# Minimum allowed external (BMP280) temperature (in units of 0.1 °C). If the
# temperature falls below this value, charging is stopped to prevent damage to
# the battery.
EXTERNAL_TEMPERATURE_LIMIT: -30
# Resume operation above this temperature (in units of 0.1 °C).
EXTERNAL_TEMPERATURE_RECOVERY: 0
# Thresholds for load control # Thresholds for load control

View file

@ -56,6 +56,14 @@ config:
# Resume operation below this temperature (in units of 0.1 °C). # Resume operation below this temperature (in units of 0.1 °C).
INTERNAL_TEMPERATURE_RECOVERY: 450 INTERNAL_TEMPERATURE_RECOVERY: 450
# Minimum allowed external (BMP280) temperature (in units of 0.1 °C). If the
# temperature falls below this value, charging is stopped to prevent damage to
# the battery.
EXTERNAL_TEMPERATURE_LIMIT: 250
# Resume operation above this temperature (in units of 0.1 °C).
EXTERNAL_TEMPERATURE_RECOVERY: 270
# Thresholds for load control # Thresholds for load control

View file

@ -29,20 +29,22 @@ CONFIG_KEY_TO_OFFSET = {
"SLEEP_SWITCH_DELAY": 0x0124, "SLEEP_SWITCH_DELAY": 0x0124,
"INTERNAL_TEMPERATURE_LIMIT": 0x0128, "INTERNAL_TEMPERATURE_LIMIT": 0x0128,
"INTERNAL_TEMPERATURE_RECOVERY": 0x012C, "INTERNAL_TEMPERATURE_RECOVERY": 0x012C,
"U_BAT_LOAD_ON": 0x0130, "EXTERNAL_TEMPERATURE_LIMIT": 0x0130,
"U_BAT_LOAD_OFF": 0x0134, "EXTERNAL_TEMPERATURE_RECOVERY": 0x0134,
"LOAD_CURRENT_LIMIT_MA": 0x0138, "U_BAT_LOAD_ON": 0x0138,
"LOAD_CURRENT_INRUSH_TIME": 0x013C, "U_BAT_LOAD_OFF": 0x013c,
"MIN_CHARGE_PUMP_EXCESS_VOLTAGE": 0x0140, "LOAD_CURRENT_LIMIT_MA": 0x0140,
"LOAD_ON_DELAY": 0x0144, "LOAD_CURRENT_INRUSH_TIME": 0x0144,
"AVG_ALPHA_I_SOLAR": 0x0148, "MIN_CHARGE_PUMP_EXCESS_VOLTAGE": 0x0148,
"AVG_ALPHA_I_LOAD": 0x014C, "LOAD_ON_DELAY": 0x014c,
"AVG_ALPHA_U_BAT": 0x0150, "AVG_ALPHA_I_SOLAR": 0x0150,
"AVG_ALPHA_U_SW": 0x0154, "AVG_ALPHA_I_LOAD": 0x0154,
"AVG_ALPHA_U_SOLAR": 0x0158, "AVG_ALPHA_U_BAT": 0x0158,
"AVG_ALPHA_TEMP": 0x015C, "AVG_ALPHA_U_SW": 0x015c,
"DEEPSLEEP_DELAY": 0x0160, "AVG_ALPHA_U_SOLAR": 0x0160,
"DEEPSLEEP_DURATION": 0x0164, "AVG_ALPHA_TEMP": 0x0164,
"DEEPSLEEP_DELAY": 0x0168,
"DEEPSLEEP_DURATION": 0x016c,
} }
@ -63,7 +65,7 @@ if __name__ == "__main__":
for key, offset in CONFIG_KEY_TO_OFFSET.items(): for key, offset in CONFIG_KEY_TO_OFFSET.items():
value = config['config'][key] value = config['config'][key]
enc_bytes = struct.pack('<I', value) enc_bytes = struct.pack('<i', value)
output.puts(BASE_ADDR + offset, enc_bytes) output.puts(BASE_ADDR + offset, enc_bytes)
output.write_hex_file(sys.argv[2]) output.write_hex_file(sys.argv[2])