打印

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

[复制链接]
307|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第十代火影|  楼主 | 2018-7-10 14:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的板子是探索者,用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);
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

363

主题

363

帖子

0

粉丝