fix: AD5941 soft-reset between measurement modes to prevent pH->EIS lockup

This commit is contained in:
jess 2026-04-01 01:29:27 -07:00
parent 3f91159596
commit cc0685a333
2 changed files with 10 additions and 0 deletions

View File

@ -93,6 +93,9 @@ static uint16_t mv_to_vbias_code(float v_cell_mv)
static void echem_init_lp(uint32_t rtia_reg) static void echem_init_lp(uint32_t rtia_reg)
{ {
AD5940_SoftRst();
AD5940_Initialize();
CLKCfg_Type clk; CLKCfg_Type clk;
memset(&clk, 0, sizeof(clk)); memset(&clk, 0, sizeof(clk));
clk.HFOSCEn = bTRUE; clk.HFOSCEn = bTRUE;
@ -207,6 +210,9 @@ static float read_current_ua(float rtia_ohms)
static void echem_init_adc(void) static void echem_init_adc(void)
{ {
AD5940_SoftRst();
AD5940_Initialize();
CLKCfg_Type clk; CLKCfg_Type clk;
memset(&clk, 0, sizeof(clk)); memset(&clk, 0, sizeof(clk));
clk.HFOSCEn = bTRUE; clk.HFOSCEn = bTRUE;

View File

@ -159,6 +159,10 @@ void eis_init(const EISConfig *cfg)
ctx.sys_clk = 16000000.0f; ctx.sys_clk = 16000000.0f;
resolve_config(); resolve_config();
/* reset to clear stale AFE state from prior measurement mode */
AD5940_SoftRst();
AD5940_Initialize();
CLKCfg_Type clk; CLKCfg_Type clk;
memset(&clk, 0, sizeof(clk)); memset(&clk, 0, sizeof(clk));
clk.HFOSCEn = bTRUE; clk.HFOSCEn = bTRUE;