Разработка для STM32L053R8 на плате NUCLEO-L053R8.HAL_RCC_OscConfig занимает слишком много времени (appx 170 μS), мне нужно, чтобы оно составляло <50 μS при пробуждении от STOP
У нас есть система, которая «просыпается» от сна каждые 200 мкС или около того, выполняет ли небольшая работа, а затем возвращается в режим сна (режим остановки). В идеале я хотел бы проснуться от STOP менее 50 мкС. Функция HAL_RCC_OscConfig()
занимает около 170 мкс, что делает это усилие бессмысленным.
Из того, что я вижу, большая часть времени тратится на конфигурацию PLL, в частности цикл while («Подождите, пока PLL готов»), который следует за повторным включением PLL (около 98 μS).
/* Configure the main PLL clock source, multiplication and division factors. */
__HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
RCC_OscInitStruct->PLL.PLLMUL,
RCC_OscInitStruct->PLL.PLLDIV);
/* Enable the main PLL. */
__HAL_RCC_PLL_ENABLE();
/* Get timeout */
tickstart = HAL_GetTick();
/* Wait till PLL is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
{
if((HAL_GetTick() - tickstart) > RCC_PLL_TIMEOUT_VALUE)
{
return HAL_TIMEOUT;
}
}
Есть ли способы пробудиться из режима STOP и вернуться к полной скорости HSI менее 50 μS? Каков наиболее эффективный способ установки часов при пробуждении из STOP?
В настоящее время я использую метод, предписанный в примере PWR_STOP, который выглядит следующим образом:
/* Enter Stop Mode */
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
/* Stop interrupt that woke us up */
int ret = HAL_LPTIM_TimeOut_Stop_IT(&LptimHandle);
SystemDisableWakeupCounter();
/* Configures system clock after wake-up from STOP: enable HSI, PLL and select
PLL as system clock source (HSI and PLL are disabled automatically in STOP mode) */
SystemClockConfig_STOP();
Вызов SystemClockConfig_STOP()
в свою очередь, вызывает SystemClock_Config(
), который настраивает часы и включает эту длительную задержку в HAL_RCC_OscConfig(&RCC_OscInitStruct)
.
Большое спасибо за любую помощь.
Какой у вас источник PLL? –
PLLSource является RCC_PLLSOURCE_HSI – PsyUk