• STM32 DAC 无法输出0V 的问题分析与解决


    问题:
    该问题由某客户提出,发生在STM32F100R8T6器件上。据其工程师讲述:在使用 STM32F100 的DAC
    时,不管如何设置输出的值,最低只能输出到63mV,无法输出0V,而63mV 的电压经过他的放大电
    路,对产品的性能产生较大的影响。故其工程师询问是否有办法可以输出0V?

    调研:
    经过对DAC 的输出口PA4 进行测量,发现将DAC 的输出值设置为0x000 的时候,电压输出确实在
    63mV。检查客户的程序,可以看到客户对DAC 的配置如下:
    DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
    DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
    DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0;
    DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
    DAC_Init(DAC_Channel_1, &DAC_InitStructure);
    将 DAC 配置程序修改为:
    DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
    DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
    DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bits8_0;
    DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
    DAC_Init(DAC_Channel_1, &DAC_InitStructure);
    修改后编译,测试:对PA4 的电压进行测量,发现可以输出0V 了。所以问题就是在于使能了Output
    Buffer。

    我们来看一下参考手册是如何描述Output Buffer 的:

    可以看出,在STM32F100 的DAC 中,内嵌了两个Output Buffer,其作用是减小输出阻抗,可以在不使
    用外部运放的情况下就可以直接驱动外部负载。可以通过DAC_CR 寄存器的BOFFx 位来使能或禁止
    Output Buffer

    再来看数据手册的描述:

     可以看到Output Buffer 的位置,当其被禁止时,直接被旁路掉。
    再继续从数据手册里看一下DAC 外设电气特性里关于 Buffer 的相关参数,我们可以看到:

     这个表告诉我们,当Output Buffer 被禁止,输出电压最低电压典型值在0.5mV,输出最高电压最大值
    为(VREF+-1LSB)V。当Output Buffer 被使能,能保证的的输出最低电压为0.2V,输出最高电压为VDDA-
    0.2V。所以,Output Buffer 并不是轨对轨的输出驱动器,无法输出0V。再来看一下它的注释:当VREF+
    为3.6V,其响应范围从0x0E0 到0xF1C 的12 位输出值;当VREF+为2.4V,其响应范围从0x155 到0xEAB
    的12 位输出值。也就是说,当VREF+为3.6V,DAC 的输出电压范围大约为0.197V~3.4V;当VREF+为
    2.4V,DAC 的输出电压范围大约为0.2V~2.212V。当然,这只是能保证的数据,并不是说使能了Output
    Buffer,最低输出电压就一定是0.2V,只是在应用中,应该以从0.2V 到VDDA-0.2V 这个范围来进行设
    计。STM32F100 在使能Output Buffer 后,其最低输出电压为63mV 属于正常现象。

    结论:
    由于打开了DAC 的Output Buffer,导致了DAC 无法输出0V。
    处理:
    禁止DAC 的Output Buffer 即可,也就是在配置中将DAC_InitStructure.DAC_OutputBuffer 一项设置成
    DAC_OutputBuffer_Disable。

    建议:
    客户的实际应用中,如果对于DAC 的输出电压范围的要求在于0.2V~VDDA-0.2V 的范围之内,可以直接使
    用DAC 的Output Buffer,将Output Buffer 使能。如果对于DAC 的输出电压范围超出0.2V~VDDA-0.2V
    或者需要轨对轨输出,那么建议禁止Output Buffer,并在外部使用合适的运放器件增强其输出能力。

  • 相关阅读:
    5285: [Hnoi2018]寻宝游戏
    CF 1117 E. Decypher the String
    4515: [Sdoi2016]游戏
    CF 1051 G. Distinctification
    4820: [Sdoi2017]硬币游戏
    HNOI2019游记
    最近公共祖先(LCT)
    [WC2006]水管局长(LCT)
    P4178 Tree(点分治)
    二维凸包
  • 原文地址:https://www.cnblogs.com/mickey-double/p/12369135.html
Copyright © 2020-2023  润新知