DAC双通道输出电压的问题

2019-07-21 07:00发布

原子哥,各位大神,我想请教一个问题,就是我准备用STM32F103的两个DAC通道DAC1和DAC2同时输出不同的电压值,我通过串口将设定的电压值读入,最后再用串口将DAC的电压值读取出来,检测读取的电压值是否是我设置的电压。然后,我用万用电表测量PA4和PA5两个引脚的值,其中PA5是我设置的电压,但是PA4引脚的电压只有0.1左右,与我设置的值不符合。可是,在串口上却准确地读取出了我设置的电压值。这是为什么呢,是因为我在DAC的初始化里设置错误吗?
请大家帮忙解答,多谢多谢!


[mw_shl_code=c,true]void Dac1_Init(void)
{
  
        GPIO_InitTypeDef GPIO_InitStructure;
        DAC_InitTypeDef DAC_InitType;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );          //使能PORTA通道时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );          //使能DAC通道时钟

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;                                 // 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                  //模拟输入
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5)        ;//PA.4  PA.5输出高
                                       
        DAC_InitType.DAC_Trigger=DAC_Trigger_None;
        DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;
        DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;
        DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ;
DAC_Init(DAC_Channel_1,&DAC_InitType);         //初始化DAC通道1
DAC_Init(DAC_Channel_2,&DAC_InitType);         //初始化DAC通道2

       
        DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC1
        DAC_Cmd(DAC_Channel_2, ENABLE);  //使能DAC2
        DAC_DualSoftwareTriggerCmd(ENABLE);

  DAC_SetChannel1Data(DAC_Align_12b_R, 0);
  DAC_SetChannel2Data(DAC_Align_12b_R, 0);

}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。