Hi All,
We are working with TI-DM3725 and TPS65950. We are facing an issue LDO short circuit detection.
We are trying to consume power with cutting the LDOs (3V1, 1V5, 1V8) when the device enters the suspend mode and make it active when the device resumes.
We have tried with short circuiting the LDOs using SC_DETECT register checking with IT_CHECK_CFG register’s SC_STATUS bit as described in the Tech reference manual (page 317).
But when implemented, the SC_STATUS bit isn't getting set post short circuiting the LDOs,
but when checking the SC_DETECT register, the short circuitry bits for LDOs have been set.
below is the code for LDO disable,
int tps69590_DisableLDO(int LDO)
{
unsigned char LDORegValue;
unsigned char RegValue;
OSAL_TPS_I2C_Read_U8(MCCI_USB_ADDR_GROUP_4b,
SC_DETECT2,
&LDORegValue
);
switch (LDO)
{
case USB1V8:
LDORegValue |= SC_VUSB1V8;
break;
case USB1V5:
LDORegValue |= SC_VUSB1V5;
break;
case USB3V1:
LDORegValue |= SC_VUSB3V1;
break;
}
RegValue = 0;
/* Clearing Short Circuiting STATUS bit before performing Short circuitry*/
OSAL_TPS_I2C_Read_U8(MCCI_USB_ADDR_GROUP_4b,
IT_CHECK_CFG,
&RegValue
);
RegValue &= ~SC_STATUS;
OSAL_TPS_I2C_Write_U8(MCCI_USB_ADDR_GROUP_4b,
IT_CHECK_CFG,
RegValue
);
/* Disabling the LDO by Short Circuiting */
OSAL_TPS_I2C_Write_U8(MCCI_USB_ADDR_GROUP_4b,
SC_DETECT2,
LDORegValue
);
/* Check with SC_STATUS bit of IT_CHECK_CFG reg */
OSAL_TPS_I2C_Read_U8(MCCI_USB_ADDR_GROUP_4b,
IT_CHECK_CFG,
&RegValue
);
if ((RegValue & SC_STATUS) == 1)
{
OSAL_TPS_I2C_Read_U8(MCCI_USB_ADDR_GROUP_4b,
SC_DETECT2,
&LDORegValue
);
}
else
{
return 1;
}
printf ("\nSC_DETECT reg - %s (0x%x)\n",
(LDO == 1) ? "USB1V8" : (LDO == 2) ? "USB1V5" : "USB3V1",
LDORegValue
);
return 0;
}
printf ("\nSC_DETECT reg - %s (0x%x)\n",
(LDO == 1) ? "USB1V8" : (LDO == 2) ? "USB1V5" : "USB3V1",
LDORegValue
);
return 0;
}
please check and let me know if there is any problem in the code flow or is there any workaround for this issue.
Thanks!