STM32F4芯片DAC输出和ADC采集的问题

2019-07-20 01:16发布

我用的板子是探索者,用PA4和PA5进行DAC输出,PA4输出直流电平PA5输出正弦信号,用PA7进行AD采集。因为没有示波器,为了验证DAC输出的效果,就把ADC接到了DAC输出脚上并在LABVIEW上显示波形。在测试正弦信号时效果很好,但是在测试直流电平时误差特别大,特别是当设置电压小于2V时,我将输出电压调到了0V时再进行测量都会有0.6V的输出。起初我以为是ADC的问题,但是把ADC直接接到3.3V的电压上效果也很好,然后我也检查了DAC的相关寄存器,特别是DAC_SetChannel1Data函数,没有发现什么问题。请大神帮忙解决一下这是什么回事。DAC的程序以及波形图如下
#include "dc.h"
#include "sys.h"

double temp;

void DC_Init(void)
{  
  GPIO_InitTypeDef  GPIO_InitStructure;
        DAC_InitTypeDef DAC_InitType;
       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
          
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

        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_Cmd(DAC_Channel_1, ENABLE);  

  DAC_SetChannel1Data(DAC_Align_12b_R, 0);
}

void DC_Set_Vol(u16 dc)
{
        temp=dc;
        temp/=1000;
        temp=temp/4095*3.3;
        DAC_SetChannel1Data(DAC_Align_12b_R,temp);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
shichuang
1楼-- · 2019-07-20 04:08
 精彩回答 2  元偷偷看……
烟雨任平生Devin
2楼-- · 2019-07-20 06:18
大神 请问ADC采集正弦波时的配置和采集直流电压有什么区别