Skip to content

Commit

Permalink
Enable charging to battery while CM4 is power off
Browse files Browse the repository at this point in the history
- IN2SYS_EN_Pin and CHARGE_EN_Pin always pull up
- use GLOBAL_EN (MCU_REV1_Pin) to control power on/off of CM4
  • Loading branch information
penk committed Dec 15, 2021
1 parent 2678db4 commit 64f9721
Showing 1 changed file with 32 additions and 25 deletions.
57 changes: 32 additions & 25 deletions Src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ static void MX_ADC_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_IWDG_Init(void);
/* USER CODE BEGIN PFP */
static void Pow_GPIO_Dir_Set(int dir);
//static void Pow_GPIO_Dir_Set(int dir);
/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
Expand Down Expand Up @@ -268,7 +268,7 @@ void time_1000ms_proc(void)
ADC_Check_And_Send(current_pow_sts);
}

static void Pow_GPIO_Dir_Set(int dir)
void Pow_GPIO_Dir_Set(int dir)
{
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};

Expand All @@ -290,6 +290,12 @@ static void Pow_GPIO_Dir_Set(int dir)
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(IN2SYS_EN_GPIO_Port, &GPIO_InitStruct);

GPIO_InitStruct.Pin = MCU_REV1_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(MCU_REV1_GPIO_Port, &GPIO_InitStruct);

}
else /*output*/
{
Expand All @@ -300,21 +306,12 @@ static void Pow_GPIO_Dir_Set(int dir)
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(BOOST_EN_GPIO_Port, &GPIO_InitStruct);

/**/
GPIO_InitStruct.Pin = CHARGE_EN_Pin;
GPIO_InitStruct.Pin = MCU_REV1_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(CHARGE_EN_GPIO_Port, &GPIO_InitStruct);

/**/
GPIO_InitStruct.Pin = IN2SYS_EN_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(IN2SYS_EN_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
LL_GPIO_Init(MCU_REV1_GPIO_Port, &GPIO_InitStruct);
}

}
Expand Down Expand Up @@ -570,7 +567,7 @@ static void MX_GPIO_Init(void)
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB);

/**/
//LL_GPIO_ResetOutputPin(MCU_REV1_GPIO_Port, MCU_REV1_Pin);
LL_GPIO_ResetOutputPin(MCU_REV1_GPIO_Port, MCU_REV1_Pin);

/**/
//LL_GPIO_ResetOutputPin(MCU_REV2_GPIO_Port, MCU_REV2_Pin);
Expand All @@ -582,18 +579,18 @@ static void MX_GPIO_Init(void)
LL_GPIO_ResetOutputPin(BOOST_EN_GPIO_Port, BOOST_EN_Pin);

/**/
LL_GPIO_ResetOutputPin(CHARGE_EN_GPIO_Port, CHARGE_EN_Pin);
LL_GPIO_SetOutputPin(CHARGE_EN_GPIO_Port, CHARGE_EN_Pin);

/**/
LL_GPIO_ResetOutputPin(IN2SYS_EN_GPIO_Port, IN2SYS_EN_Pin);
LL_GPIO_SetOutputPin(IN2SYS_EN_GPIO_Port, IN2SYS_EN_Pin);

/**/
// GPIO_InitStruct.Pin = MCU_REV1_Pin;
// GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
// GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
// GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
// LL_GPIO_Init(MCU_REV1_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = MCU_REV1_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_DOWN;
LL_GPIO_Init(MCU_REV1_GPIO_Port, &GPIO_InitStruct);

/**/
// GPIO_InitStruct.Pin = MCU_REV2_Pin;
Expand Down Expand Up @@ -625,21 +622,31 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(BOOST_EN_GPIO_Port, &GPIO_InitStruct);

/**/
GPIO_InitStruct.Pin = CHARGE_EN_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(CHARGE_EN_GPIO_Port, &GPIO_InitStruct);

GPIO_InitStruct.Pin = IN2SYS_EN_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
LL_GPIO_Init(IN2SYS_EN_GPIO_Port, &GPIO_InitStruct);

/*
GPIO_InitStruct.Pin = CHARGE_EN_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(CHARGE_EN_GPIO_Port, &GPIO_InitStruct);
/**/
GPIO_InitStruct.Pin = IN2SYS_EN_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(IN2SYS_EN_GPIO_Port, &GPIO_InitStruct);
*/

}

Expand Down

0 comments on commit 64f9721

Please sign in to comment.