From 505e9bb7c2db7902674d39d339e5e7eecbf101af Mon Sep 17 00:00:00 2001 From: matei jordache Date: Sun, 12 Nov 2023 12:45:13 -0500 Subject: [PATCH] fix clock tree --- firmware/src/clock.c | 40 ++++++++++++++++++++++++---------------- platformio.ini | 6 +++--- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/firmware/src/clock.c b/firmware/src/clock.c index 0416025..fb14050 100644 --- a/firmware/src/clock.c +++ b/firmware/src/clock.c @@ -1,33 +1,33 @@ #include "pins_arduino.h" /** - * @brief System Clock Configuration - * @retval None - */ + * @brief System Clock Configuration + * @retval None + */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; +#ifdef USBCON + RCC_PeriphCLKInitTypeDef PeriphClkInit = {}; +#endif /** Configure the main internal regulator output voltage - */ + */ HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1_BOOST); /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI48 - |RCC_OSCILLATORTYPE_HSE; + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1; - RCC_OscInitStruct.PLL.PLLN = 28; + RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV3; + RCC_OscInitStruct.PLL.PLLN = 85; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV8; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { @@ -35,9 +35,8 @@ void SystemClock_Config(void) } /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; @@ -47,4 +46,13 @@ void SystemClock_Config(void) { Error_Handler(); } + + #ifdef USBCON + /* Initializes the peripherals clocks */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { + Error_Handler(); + } +#endif } \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 2feb463..4a64df9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -10,7 +10,6 @@ [platformio] default_envs = lemon-pepper -boards_dir = firmware/boards src_dir = firmware/src lib_dir = firmware/lib include_dir = firmware/include @@ -19,7 +18,7 @@ test_dir = firmware/test [env:lemon-pepper] platform = ststm32 board = genericSTM32G431CB -board_build.f_cpu = 168000000 +; board_build.f_cpu = 170000000 framework = arduino upload_protocol = stlink debug_tool = stlink @@ -34,12 +33,13 @@ build_flags = -D PIO_FRAMEWORK_ARDUINO_ENABLE_CDC -D HAL_FDCAN_MODULE_ENABLED -D HAL_OPAMP_MODULE_ENABLED + -D HSE_VALUE=12000000U -D FDCAN_ALT1 -D SN65HVD23x -D ARDUINO_GENERIC_G431CBUX -D SIMPLEFOC_STM32_CUSTOMCURRENTSENSE -D PCB_REV1 ; or PCB_REV2 - ; -D HAS_MONITOR + -D HAS_MONITOR ; lib_deps = ; askuric/Simple FOC@^2.3.1