AnsweredAssumed Answered

DAC example witouth using DMA

Question asked by David Rojas on Dec 15, 2011
Hi. I'm trying to get an output from the internal DAC without using DMA, but the examples all use DMA.
My code looks like this:
GPIO_InitTypeDef  GPIO_InitStructure;
 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
/* Time base configuration */
      TIM_TimeBaseStructure.TIM_Period = 0xFF;
      TIM_TimeBaseStructure.TIM_Prescaler = 0;
      TIM_TimeBaseStructure.TIM_ClockDivision = 0;
      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
      TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
      /* TIM6 TRGO selection */
      TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);
      /* TIM6 enable counter */
      TIM_Cmd(TIM6, ENABLE);
/* DAC Config */
DAC_InitTypeDef DAC_InitStructure;
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
      DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;
      DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
      DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
      DAC_Init(DAC_Channel_1, &DAC_InitStructure);
DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R, 4095);

As you can see, I'm using TIM6 as a trigger update. The channel data can be any number from 0 to 4095 (4095 here, but I've tried several numbers in a loop). I've tried changing the GPIO_Mode to OUT instead of AN also. I measure in PA4 with a probe, but nothing comes out. The TIM6 though is working fine, I've tried changing a pin testing for the TIM_FLAG_Update and it's firing at the correct rate. I don't thing I've missed any clock config. Any idea?