Skip to main content
flyingchris
Associate II
September 26, 2020
Question

Error in my DAC config I can't figgure out

  • September 26, 2020
  • 0 replies
  • 417 views

Hi,

I enabled the DAC and a GPIO Pin as analog. But whatever value I provide, the GPIO Pin of the DAC never reaches a value above 20mV.

DAC config:

static void MX_DAC1_Init(void)
{
 
 /* USER CODE BEGIN DAC1_Init 0 */
 
 /* USER CODE END DAC1_Init 0 */
 
 DAC_ChannelConfTypeDef sConfig = {0};
 
 /* USER CODE BEGIN DAC1_Init 1 */
 
 /* USER CODE END DAC1_Init 1 */
 /** DAC Initialization 
 */
 hdac1.Instance = DAC1;
 if (HAL_DAC_Init(&hdac1) != HAL_OK)
 {
 Error_Handler();
 }
 /** DAC channel OUT1 config 
 */
 sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
 sConfig.DAC_Trigger = DAC_TRIGGER_SOFTWARE;
 sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
 sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_DISABLE;
 sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
 if (HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1) != HAL_OK)
 {
 Error_Handler();
 }
 /* USER CODE BEGIN DAC1_Init 2 */
 
 /* USER CODE END DAC1_Init 2 */
 
}

GPIO config for DAC:

static void MX_GPIO_Init(void)
{
 
	GPIO_InitTypeDef GPIO_InitStruct;
 
 /* GPIO Ports Clock Enable */
 __HAL_RCC_GPIOC_CLK_ENABLE();
 __HAL_RCC_GPIOH_CLK_ENABLE();
 __HAL_RCC_GPIOA_CLK_ENABLE();
 __HAL_RCC_GPIOB_CLK_ENABLE();
 
//ADC
 GPIO_InitStruct.Pin = GPIO_PIN_6;
 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
//DAC
 GPIO_InitStruct.Pin = GPIO_PIN_4;
 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
}

This is in my while(1) when I want to set the DAC value.

	 HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
	 HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_8B_R, dac_value);

Can someone figgure out what I am missing? dac_value is set to 220 -> 2.83V. Also there is a 500ms delay in my while(1).

Thank you in advance

This topic has been closed for replies.