Hi,
Thank you for the solution, I'm trying to implement it. Would you be able to provide an example?
When I connect power to the device, it seems to not have time for the I2C communication before the PMIC already cuts power.
/* USER CODE BEGIN SysInit */
MX_I2C1_Init();
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x4F, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x00, 1, HAL_MAX_DELAY); //LDO2_VOLT: 1.8V
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x50, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x0F, 1, HAL_MAX_DELAY); //LDO2_CTRL: VLDO2_EN:=1, VLDO2_STBY_EN:=1, VLDO2_OMODE:=1, VLDO2_LPWER:=1
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x4C, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x05, 1, HAL_MAX_DELAY); //LDO1_VOLT: 1.00V
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x4D, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x03, 1, HAL_MAX_DELAY); //LDO1_CTRL: VLDO1_EN = 1, VLDO1_STBY_EN = 1
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x52, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x09, 1, HAL_MAX_DELAY); //LDO3_VOLT: 1.20V
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x53, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x0F, 1, HAL_MAX_DELAY); //LDO3_CTRL: VLDO3_EN = 1, VLDO3_STBY_EN = 1, VLDO3_OMODE = 1, VLDO3_LPWR = 1
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x9C, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x80, 1, HAL_MAX_DELAY); //0x80
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x9E, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x20, 1, HAL_MAX_DELAY); //0x20
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x42, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x02, 1, HAL_MAX_DELAY); //SW3_CTRL1: SW3_ILIM = 1.5A
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x94, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0xA0, 1, HAL_MAX_DELAY); //VBUS Current limit = 1500mA
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x3B, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x0F, 1, HAL_MAX_DELAY); //SW2_CTRL: SW2_EN = 1, SW2_STBY_EN = 1, SW2_OMODE = 1, SW2_LPWR = 1
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x35, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x0F, 1, HAL_MAX_DELAY); //SW1_CTRL: SW1_EN = 1, SW1_STBY_EN = 1, SW1_OMODE = 1, SW1_LPWR = 1
HAL_I2C_Mem_Write(&hi2c1, (uint8_t)PMIC_ADDRESS, 0x42, I2C_MEMADD_SIZE_8BIT, (uint8_t *)0x01, 1, HAL_MAX_DELAY); //3V1 Rail
/* USER CODE END SysInit */
Kind regards,
Rick