view Small_CPU/Src/adc.c @ 972:12426391edd9
Evo_2_23 tip
Disabled development debug warnings
author |
Ideenmodellierer |
date |
Sun, 19 Jan 2025 21:03:42 +0100 (2 days ago) |
parents |
5f11787b4f42 |
children |
|
line source
/**
******************************************************************************
* @file adc.c
* @author heinrichs weikamp gmbh
* @version V0.0.1
* @date 11-Dec-2014
* @brief ADC for ambient light sensor
*
@verbatim
==============================================================================
##### How to use #####
==============================================================================
@endverbatim
******************************************************************************
* @attention
*
* <h2><center>© COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
*
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
#include "adc.h"
/* Exported variables --------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef AdcHandle;
__IO uint16_t uhADCxConvertedValue = 0;
/* Private types -------------------------------------------------------------*/
#define ADCx ADC1
#define ADCx_CLK_ENABLE() __ADC1_CLK_ENABLE();
#define ADCx_CHANNEL_GPIO_CLK_ENABLE() __GPIOF_CLK_ENABLE()
#define ADCx_FORCE_RESET() __ADC_FORCE_RESET()
#define ADCx_RELEASE_RESET() __ADC_RELEASE_RESET()
/* Definition for ADCx Channel Pin */
#define ADCx_GPIO_PIN GPIO_PIN_0
#define ADCx_GPIO_PORT GPIOB
#define ADCx_GPIO_CLK_ENABLE() __GPIOB_CLK_ENABLE()
#define ADCx_GPIO_CLK_DISABLE() __GPIOB_CLK_DISABLE()
/* Definition for ADCx's Channel */
#define ADCx_CHANNEL ADC_CHANNEL_8
/* Definition for ADCx's NVIC */
//#define ADCx_IRQn ADC_IRQn
/* Private function prototypes -----------------------------------------------*/
void ADC_Start_single_IT_Conversion(void);
/* Exported functions --------------------------------------------------------*/
uint16_t get_ambient_light_level(void)
{
#ifdef OSTC_ON_DISCOVERY_HARDWARE
return 800;
#endif
return uhADCxConvertedValue;
}
static void ADCx_MspInit(ADC_HandleTypeDef *hadc)
{
#ifdef OSTC_ON_DISCOVERY_HARDWARE
return;
#endif
GPIO_InitTypeDef GPIO_InitStruct;
ADCx_GPIO_CLK_ENABLE();
GPIO_InitStruct.Pin = ADCx_GPIO_PIN ;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(ADCx_GPIO_PORT, &GPIO_InitStruct);
ADCx_CLK_ENABLE();
// HAL_NVIC_SetPriority(ADCx_IRQn, 2, 0);
// HAL_NVIC_EnableIRQ(ADCx_IRQn);
}
void ADCx_DeInit(void)
{
// HAL_ADC_Stop_IT(&AdcHandle);
HAL_ADC_DeInit(&AdcHandle);
}
void ADCx_Init(void)
{
#ifdef OSTC_ON_DISCOVERY_HARDWARE
return;
#endif
ADC_ChannelConfTypeDef sConfig;
AdcHandle.Instance = ADCx;
AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
AdcHandle.Init.Resolution = ADC_RESOLUTION12b;
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
AdcHandle.Init.ContinuousConvMode = DISABLE;
AdcHandle.Init.DiscontinuousConvMode = DISABLE;
AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
AdcHandle.Init.EOCSelection = EOC_SINGLE_CONV;
AdcHandle.Init.NbrOfConversion = 1;
AdcHandle.Init.DMAContinuousRequests = DISABLE;
ADCx_MspInit(&AdcHandle);
HAL_ADC_Init(&AdcHandle);
sConfig.Channel = ADCx_CHANNEL;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
sConfig.Rank = 1;
sConfig.Offset = 0;
HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);
// ADC_Start_single_IT_Conversion();
}
uint32_t adc_debug_status = 0;
void adc_ambient_light_sensor_get_data(void)
{
#ifdef OSTC_ON_DISCOVERY_HARDWARE
return;
#endif
HAL_ADC_Start(&AdcHandle);
HAL_ADC_PollForConversion(&AdcHandle, 10);
adc_debug_status = HAL_ADC_GetState(&AdcHandle);
if(adc_debug_status == HAL_ADC_STATE_EOC_REG + HAL_ADC_STATE_READY) // new HAL_ADC_STATE_READY 160613
// if(HAL_ADC_GetState(&AdcHandle) == HAL_ADC_STATE_EOC_REG)
uhADCxConvertedValue = HAL_ADC_GetValue(&AdcHandle);
HAL_ADC_Stop(&AdcHandle);
}
/* Private functions ---------------------------------------------------------*/
/*
void ADC_Start_single_IT_Conversion(void)
{
HAL_ADC_Start_IT(&AdcHandle);
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle)
{
extern void copyAmbientLightData(void);
uhADCxConvertedValue = HAL_ADC_GetValue(AdcHandle);
copyAmbientLightData();
ADC_Start_single_IT_Conversion();
}
*/
/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/