| /* |
| * Copyright (c) 2021 STMicroelectronics |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/init.h> |
| #include <stm32_ll_adc.h> |
| #include <zephyr/devicetree.h> |
| |
| static int enable_adc_reference(void) |
| { |
| uint8_t init_status; |
| /* VREF+ is not connected to VDDA by default */ |
| /* Use 2.5V as reference (instead of 3.3V) for internal channels |
| * calculation |
| */ |
| __HAL_RCC_SYSCFG_CLK_ENABLE(); |
| |
| /* VREF_OUT2 = 2.5 V */ |
| HAL_SYSCFG_VREFBUF_VoltageScalingConfig(SYSCFG_VREFBUF_VOLTAGE_SCALE1); |
| HAL_SYSCFG_VREFBUF_HighImpedanceConfig( |
| SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE); |
| |
| init_status = HAL_SYSCFG_EnableVREFBUF(); |
| __ASSERT(init_status == HAL_OK, "ADC Conversion value may be incorrect"); |
| |
| return init_status; |
| } |
| |
| SYS_INIT(enable_adc_reference, POST_KERNEL, 0); |