Add function to stop continuous CC to BQ769x0 BMS support
authorNathael Pajani <nathael.pajani@ed3l.fr>
Sun, 30 Jan 2022 03:14:56 +0000 (04:14 +0100)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Fri, 10 Feb 2023 18:02:59 +0000 (19:02 +0100)
extdrv/bq769x0_bms.c
include/extdrv/bq769x0_bms.h

index 76357c1..cf276b5 100644 (file)
@@ -232,6 +232,7 @@ int bq769x0_bms_load_present(struct bq769x0_bms_conf* conf)
        return 0; /*  */
 }
 
+
 /* BMS Shut-Down.
  * Disable both charge and discharge and turn off BMS by sending shutdown sequence.
  * Only way out of sequence is power cycle (battery removal and re-insertion or button).
@@ -316,6 +317,29 @@ int bq769x0_bms_set_continuous_conversion(struct bq769x0_bms_conf* conf)
        return 0; /* Configuration change success */
 }
 
+/* Place the bms in continuous CC convertion mode */
+int bq769x0_bms_stop_continuous_conversion(struct bq769x0_bms_conf* conf)
+{
+       int ret = 0;
+       uint8_t tmp = 0;
+
+       /* Read actual config */
+       ret = bq769x0_bms_get_regs(conf, SYS_CTRL_2, &tmp, 1);
+       if (ret != 0) {
+               conf->probe_ok = 15;
+               return ret;
+       }
+       msleep(2);
+       /* Set CC continuous conversion bit and write back */
+       tmp &= ~CC_ENABLE;
+       ret = bq769x0_bms_set_regs(conf, SYS_CTRL_2, &tmp, 1);
+       if (ret != 0) {
+               conf->probe_ok = 16;
+               return ret;
+       }
+       return 0; /* Configuration change success */
+}
+
 /* Enable/Disable charge and/or discharge
  * Note that it is not possible to keep the old charge/discharge state and modify
  *  only the other one with this function.
@@ -479,6 +503,8 @@ int bq769x0_bms_read_adc(struct bq769x0_bms_conf* conf, uint16_t* data, int type
        return 0;
 }
 
+
+
 int bq769x0_bms_get_and_erase_status(struct bq769x0_bms_conf* conf, uint8_t* status)
 {
        int ret = 0;
index 06a4098..8278032 100644 (file)
@@ -102,6 +102,9 @@ int bq769x0_bms_start_conversion(struct bq769x0_bms_conf* conf);
 /* Place the bms in continuous CC convertion mode */
 int bq769x0_bms_set_continuous_conversion(struct bq769x0_bms_conf* conf);
 
+/* Place the bms in continuous CC convertion mode */
+int bq769x0_bms_stop_continuous_conversion(struct bq769x0_bms_conf* conf);
+
 /* Enable/Disable charge and/or discharge
  * Note that it is not possible to keep the old charge/discharge state and modify
  *  only the other one with this function.