|
@@ -40,7 +40,6 @@
|
|
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
ADC_HandleTypeDef hadc1;
|
|
|
-DMA_HandleTypeDef hdma_adc1;
|
|
|
|
|
|
UART_HandleTypeDef huart2;
|
|
|
|
|
@@ -56,7 +55,6 @@ uint32_t adcCounter = 0;
|
|
|
void SystemClock_Config(void);
|
|
|
static void MX_GPIO_Init(void);
|
|
|
static void MX_USART2_UART_Init(void);
|
|
|
-static void MX_DMA_Init(void);
|
|
|
static void MX_ADC1_Init(void);
|
|
|
static void MX_NVIC_Init(void);
|
|
|
/* USER CODE BEGIN PFP */
|
|
@@ -65,7 +63,7 @@ static void MX_NVIC_Init(void);
|
|
|
|
|
|
/* Private user code ---------------------------------------------------------*/
|
|
|
/* USER CODE BEGIN 0 */
|
|
|
-void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
|
+/*void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
|
{
|
|
|
// Conversion Complete & DMA Transfer Complete As Well
|
|
|
// So The AD_RES Is Now Updated & Let's Move IT To The PWM CCR1
|
|
@@ -73,7 +71,7 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
|
//TIM2->CCR1 = (AD_RES<<4);
|
|
|
//HAL_GPIO_TogglePin (GPIOC, GPIO_PIN_13);
|
|
|
adcCounter++;
|
|
|
-}
|
|
|
+}*/
|
|
|
|
|
|
|
|
|
/* USER CODE END 0 */
|
|
@@ -107,7 +105,6 @@ int main(void)
|
|
|
/* Initialize all configured peripherals */
|
|
|
MX_GPIO_Init();
|
|
|
MX_USART2_UART_Init();
|
|
|
- MX_DMA_Init();
|
|
|
MX_ADC1_Init();
|
|
|
|
|
|
/* Initialize interrupts */
|
|
@@ -116,16 +113,12 @@ int main(void)
|
|
|
|
|
|
|
|
|
|
|
|
- // Enable the ADC-interrupts and start cont-conversion.
|
|
|
- /*ADC1->SR = 0;
|
|
|
- ADC1->CR2 = (ADC_CR2_ADON | ADC_CR2_CONT);
|
|
|
- ADC1->CR1 = ADC_IT_EOC;
|
|
|
- ADC1->CR2 |= ADC_CR2_SWSTART;*/
|
|
|
-
|
|
|
- //HAL_ADC_Start(&hadc1);
|
|
|
-
|
|
|
-
|
|
|
- //HAL_ADC_Start_IT(&hadc1);
|
|
|
+ // Start continous ADC-conversion
|
|
|
+ HAL_Delay(10);
|
|
|
+ ADC1->SR = 0;
|
|
|
+ ADC1->CR2 = ADC_CR2_ADON | ADC_CR2_CONT;
|
|
|
+ ADC1->CR1 = ADC_IT_EOC;
|
|
|
+ ADC1->CR2 |= ADC_CR2_ADON;
|
|
|
|
|
|
|
|
|
/* USER CODE END 2 */
|
|
@@ -138,8 +131,6 @@ int main(void)
|
|
|
|
|
|
/* USER CODE BEGIN 3 */
|
|
|
HAL_GPIO_TogglePin (GPIOC, GPIO_PIN_13);
|
|
|
- HAL_ADC_Start_DMA(&hadc1, adcData, ADC_SAMPLES);
|
|
|
- //
|
|
|
HAL_Delay (1000);
|
|
|
}
|
|
|
/* USER CODE END 3 */
|
|
@@ -183,7 +174,7 @@ void SystemClock_Config(void)
|
|
|
Error_Handler();
|
|
|
}
|
|
|
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
|
|
|
- PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8;
|
|
|
+ PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV4;
|
|
|
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
|
|
{
|
|
|
Error_Handler();
|
|
@@ -196,9 +187,12 @@ void SystemClock_Config(void)
|
|
|
*/
|
|
|
static void MX_NVIC_Init(void)
|
|
|
{
|
|
|
- /* DMA1_Channel1_IRQn interrupt configuration */
|
|
|
- HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
|
|
|
- HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
|
|
|
+ /* ADC1_2_IRQn interrupt configuration */
|
|
|
+ HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0);
|
|
|
+ HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
|
|
|
+ /* USART2_IRQn interrupt configuration */
|
|
|
+ HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
|
|
|
+ HAL_NVIC_EnableIRQ(USART2_IRQn);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -243,9 +237,24 @@ static void MX_ADC1_Init(void)
|
|
|
/* USER CODE BEGIN ADC1_Init 2 */
|
|
|
HAL_ADCEx_Calibration_Start(&hadc1);
|
|
|
|
|
|
-/* Tconv = Sampling time + 12.5 cycles
|
|
|
- Example:
|
|
|
- With an ADCCLK = 14 MHz and a sampling time of 1.5 cycles: Tconv = 1.5 + 12.5 = 14 cycles = 1 μs
|
|
|
+ // Set sampling frequency
|
|
|
+ sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5;
|
|
|
+ HAL_ADC_ConfigChannel(&hadc1, &sConfig);
|
|
|
+
|
|
|
+/*
|
|
|
+ * Tconv = Sampling time + 12.5 cycles
|
|
|
+ *
|
|
|
+ * Example:
|
|
|
+ * With an ADCCLK = 14 MHz and a sampling time of 1.5 cycles: Tconv = 1.5 + 12.5 = 14 cycles = 1 μs
|
|
|
+ *
|
|
|
+ * In this application we want to sample a 50Hz signal = 20mS
|
|
|
+ *
|
|
|
+ * Calcs here: https://docs.google.com/spreadsheets/d/1an5f3Aog4bdwpe-rDquWTxlXBpsXEK-1DVhAsiCqlq0/edit#gid=304302332
|
|
|
+ *
|
|
|
+ * Select: 56MHz /4 55,5 = 205 882,35Hz = 4 117,6 samples / 50Hz wave
|
|
|
+ *
|
|
|
+ *
|
|
|
+ *
|
|
|
*/
|
|
|
|
|
|
/* USER CODE END ADC1_Init 2 */
|
|
@@ -268,7 +277,7 @@ static void MX_USART2_UART_Init(void)
|
|
|
|
|
|
/* USER CODE END USART2_Init 1 */
|
|
|
huart2.Instance = USART2;
|
|
|
- huart2.Init.BaudRate = 38400;
|
|
|
+ huart2.Init.BaudRate = 19200;
|
|
|
huart2.Init.WordLength = UART_WORDLENGTH_8B;
|
|
|
huart2.Init.StopBits = UART_STOPBITS_1;
|
|
|
huart2.Init.Parity = UART_PARITY_NONE;
|
|
@@ -285,17 +294,6 @@ static void MX_USART2_UART_Init(void)
|
|
|
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * Enable DMA controller clock
|
|
|
- */
|
|
|
-static void MX_DMA_Init(void)
|
|
|
-{
|
|
|
-
|
|
|
- /* DMA controller clock enable */
|
|
|
- __HAL_RCC_DMA1_CLK_ENABLE();
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* @brief GPIO Initialization Function
|
|
|
* @param None
|