OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3331|回复: 4

stm32f103的DAC输出电压在不断变大

[复制链接]

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-9-22
在线时间
2 小时
发表于 2020-9-22 10:05:28 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 liaohh 于 2020-9-22 10:07 编辑

我在网上找了一个DAC输出电压的程序,然后在调试的时候发现电压在不断增大。输出电压应该是在500ms的时间间隔内2V和1V两个电压值之间来回切换。刚开始的时候输出电压是正确的,但是随着切换的次数变多,电压值开始按照大约0.04V的数值增大,也就是2V-1V,然后2.04V-1.04V,2.08V-1.08V这样开始变大,这是为什么呀。下面是输出电压和程序。请问这是什么原因呢?
void dac1_init()        
{
        DAC_InitTypeDef DAC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);   
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
//        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
//     GPIO_SetBits(GPIOA,GPIO_Pin_4);
        
        
        DAC_InitStructure.DAC_Trigger=DAC_Trigger_Software;
        DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;
//     DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bits11_0;
       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,0);
}

void Dac1_Out(float vol)
{
        float temp1;
        temp1=vol/3.3*4096;
        int a=temp1;
        DAC_SetChannel1Data(DAC_Align_12b_R,a);
        DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}

int main (void){
        RCC_Configuration();
        dac1_init();
        while(1){
                Dac1_Out(2.0);
                delay_s(1);
               Dac1_Out(1.0);
                delay_s(1);
        }

}

这是最开始时候的输出电压

这是最开始时候的输出电压

这是一段时间后的输出电压

这是一段时间后的输出电压
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2143

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4880
金钱
4880
注册时间
2015-1-10
在线时间
611 小时
发表于 2020-9-22 16:27:24 | 显示全部楼层
一个思路,基准电压有没有变?debug看Dac1_Out函数里面的a有没有变化,你的变化速度不快,直接可以看到的
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-9-22
在线时间
2 小时
 楼主| 发表于 2020-9-22 19:28:37 | 显示全部楼层
阿侑kevin 发表于 2020-9-22 16:27
一个思路,基准电压有没有变?debug看Dac1_Out函数里面的a有没有变化,你的变化速度不快,直接可以看到的

基准电压看了是一直稳定在3.3V左右没有变动。debug里面的a没有看过。要是a这个值发生变化的话会是什么原因引起的呢?
回复

使用道具 举报

11

主题

2143

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4880
金钱
4880
注册时间
2015-1-10
在线时间
611 小时
发表于 2020-9-23 09:49:07 | 显示全部楼层
liaohh 发表于 2020-9-22 19:28
基准电压看了是一直稳定在3.3V左右没有变动。debug里面的a没有看过。要是a这个值发生变化的话会是什么原 ...

基准电压你不要用示波器看外部的供电电压,你用ADC采芯片内部的基准电压去计算外部供电电压,a要是出现变化原因就很多了,比如编译上的优化,你先debug定位问题
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-9-22
在线时间
2 小时
 楼主| 发表于 2020-9-24 18:21:28 | 显示全部楼层
阿侑kevin 发表于 2020-9-23 09:49
基准电压你不要用示波器看外部的供电电压,你用ADC采芯片内部的基准电压去计算外部供电电压,a要是出现变 ...

现在那个核心板都坏了,做不了实验。。等把板子拿到了再测一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表