From 7784ebe527bc466d8bb938672348eadfcf77a27a Mon Sep 17 00:00:00 2001 From: Andreas Berthoud Date: Thu, 24 Jun 2021 21:12:55 +0200 Subject: [PATCH] zigbee: Enable RF, use HSE oscillator --- nucleo-wb55-zigbee/Core/Src/main.c | 33 ++++++++++++++++++-- nucleo-wb55-zigbee/nucleo-wb55-zigbee.ioc | 38 ++++++++++++++--------- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/nucleo-wb55-zigbee/Core/Src/main.c b/nucleo-wb55-zigbee/Core/Src/main.c index 479141d..3f7d2f1 100644 --- a/nucleo-wb55-zigbee/Core/Src/main.c +++ b/nucleo-wb55-zigbee/Core/Src/main.c @@ -40,6 +40,7 @@ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ + RTC_HandleTypeDef hrtc; /* USER CODE BEGIN PV */ @@ -50,6 +51,7 @@ RTC_HandleTypeDef hrtc; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_RTC_Init(void); +static void MX_RF_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -88,6 +90,7 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_RTC_Init(); + MX_RF_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ @@ -125,8 +128,9 @@ void SystemClock_Config(void) /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE - |RCC_OSCILLATORTYPE_MSI; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE + |RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.MSIState = RCC_MSI_ON; @@ -156,8 +160,10 @@ void SystemClock_Config(void) } /** Initializes the peripherals clocks */ - PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RTC; + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS|RCC_PERIPHCLK_RFWAKEUP + |RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_HSE_DIV1024; PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSI; PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) @@ -169,6 +175,27 @@ void SystemClock_Config(void) /* USER CODE END Smps */ } +/** + * @brief RF Initialization Function + * @param None + * @retval None + */ +static void MX_RF_Init(void) +{ + + /* USER CODE BEGIN RF_Init 0 */ + + /* USER CODE END RF_Init 0 */ + + /* USER CODE BEGIN RF_Init 1 */ + + /* USER CODE END RF_Init 1 */ + /* USER CODE BEGIN RF_Init 2 */ + + /* USER CODE END RF_Init 2 */ + +} + /** * @brief RTC Initialization Function * @param None diff --git a/nucleo-wb55-zigbee/nucleo-wb55-zigbee.ioc b/nucleo-wb55-zigbee/nucleo-wb55-zigbee.ioc index 27186d8..00b4346 100644 --- a/nucleo-wb55-zigbee/nucleo-wb55-zigbee.ioc +++ b/nucleo-wb55-zigbee/nucleo-wb55-zigbee.ioc @@ -11,21 +11,22 @@ RCC.SAI1Freq_Value=128000000 RCC.CortexFreq_Value=32000000 ProjectManager.KeepUserCode=true Mcu.UserName=STM32WB55RGVx -Mcu.PinsNb=11 +Mcu.PinsNb=14 +RF1.Signal=RF_RF1 ProjectManager.NoMain=false RCC.RFWKPFreq_Value=976.5625 RCC.SMPSCLockSelectionVirtualVirtual=RCC_SMPSCLKSOURCE_HSI RCC.HCLK3Freq_Value=32000000 RCC.PLLSAI1RoutputFreq_Value=128000000 -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_RTC_Init-RTC-false-HAL-true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_RTC_Init-RTC-false-HAL-true,0-MX_HSEM_Init-HSEM-false-HAL-true PC4.Signal=GPIO_Input PD0.GPIO_Label=B2 [Push Button] VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled PD1.Signal=GPIO_Input RCC.RTCFreq_Value=32768 ProjectManager.DefaultFWLocation=true -VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM PB0.GPIO_Label=LED_GREEN +VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM PD0.Locked=true ProjectManager.DeletePrevious=true RCC.HCLK2Freq_Value=32000000 @@ -38,11 +39,12 @@ ProjectManager.StackSize=0x400 PB5.GPIOParameters=GPIO_Label RCC.I2C3Freq_Value=32000000 RCC.LPTIM1Freq_Value=32000000 -Mcu.IP4=SYS +Mcu.IP4=RTC RCC.FCLKCortexFreq_Value=32000000 +Mcu.IP5=SYS NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false Mcu.IP2=RCC -Mcu.IP3=RTC +Mcu.IP3=RF Mcu.IP0=HSEM Mcu.IP1=NVIC Mcu.UserConstants= @@ -50,29 +52,32 @@ RCC.VCOSAI1OutputFreq_Value=256000000 ProjectManager.TargetToolchain=STM32CubeIDE Mcu.ThirdPartyNb=0 RCC.HCLKFreq_Value=32000000 -Mcu.IPNb=5 +Mcu.IPNb=6 RCC.HCLKRFFreq_Value=16000000 ProjectManager.PreviousToolchain= RCC.APB2TimFreq_Value=32000000 PCC.Ble.PowerLevel=Min PB5.Locked=true +Mcu.Pin6=PB0 PD0.Signal=GPIO_Input -Mcu.Pin6=PD1 -Mcu.Pin7=PB5 +Mcu.Pin7=PB1 ProjectManager.RegisterCallBack= -Mcu.Pin8=VP_HSEM_VS_HSEM +Mcu.Pin8=PD0 +OSC_IN.Signal=RCC_OSC_IN RCC.USBFreq_Value=128000000 -Mcu.Pin9=VP_RTC_VS_RTC_Activate +OSC_OUT.Mode=HSE-External-Oscillator +Mcu.Pin9=PD1 PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +OSC_OUT.Signal=RCC_OSC_OUT RCC.AHBFreq_Value=32000000 RCC.PLLSAI1PoutputFreq_Value=128000000 Mcu.Pin0=PC14-OSC32_IN PB1.Locked=true Mcu.Pin1=PC15-OSC32_OUT Mcu.Pin2=PC4 -Mcu.Pin3=PB0 -Mcu.Pin4=PB1 -Mcu.Pin5=PD0 +Mcu.Pin3=RF1 +Mcu.Pin4=OSC_OUT +Mcu.Pin5=OSC_IN RCC.SMPSCLockSelectionVirtual=RCC_SMPSCLKSOURCE_HSI ProjectManager.ProjectBuild=false RCC.HSE_VALUE=32000000 @@ -128,22 +133,27 @@ PB1.Signal=GPIO_Output PCC.Ble.ConnectionInterval=1000.0 NVIC.ForceEnableDMAVector=true KeepUserPlacement=false +OSC_IN.Mode=HSE-External-Oscillator NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false ProjectManager.CompilerOptimize=6 +RF1.Mode=RF1_Activate ProjectManager.ToolChainLocation= RCC.LSI_VALUE=32000 VP_SYS_VS_Systick.Signal=SYS_VS_Systick RCC.LSCOPinFreq_Value=32000 ProjectManager.HeapSize=0x200 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +Mcu.Pin13=VP_SYS_VS_Systick ProjectManager.ComputerToolchain=false RCC.HSI_VALUE=16000000 NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +Mcu.Pin11=VP_HSEM_VS_HSEM +Mcu.Pin12=VP_RTC_VS_RTC_Activate VP_HSEM_VS_HSEM.Mode=HSEM_Activate PB5.GPIO_Label=LED_BLUE PD0.GPIOParameters=GPIO_Label RCC.PLLPoutputFreq_Value=128000000 -Mcu.Pin10=VP_SYS_VS_Systick +Mcu.Pin10=PB5 RCC.APB1TimFreq_Value=32000000 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false RCC.PWRFreq_Value=32000000