CubeMX配置stm32的DAC

描述

我们使用 STM32CubeMX 软件进行配置。DAC 的配置是相对很简单的,如下图所示:

dac

选择两个输出通道,其中 External Trigger 选项为是否选择 外部中断EXTI9 触发,如下图所示:

dac

DAC 的基本设置,很简单,对于博主使用的 STM32L151 来说就只有2个选项:

dac

      DAC选择了输出缓存,可以用来减少输出阻抗,无需外部运放即可直接驱动外部负载。但是输出的电压没法低于20mv。

不使能输出缓存,DAC可以输出低于20mv的信号。

      对于其他型号的 DAC ,可能还会有下面两个选项:

      Wave generation mode 

      波形生成模式:可选三角波发生器 ( Triangle wave generation ) 和 噪声波形 ( noise wave generation )

Maximum Triangle Amplitude,最大三角波幅:0-4095 对应 0V~3.3V

1、触发源software trigger与None的区别
这里要额外说明一下,最后一个选项 software trigger (软件触发) 与 选择 None (没有触发源)的区别。

这两种触发源很多小伙伴在使用的时候会搞糊涂,实际上这两者是完全不同的,先用文字简单解释一下(简单使用 HAL 库,不了解寄存器没关系,这里只是为了说明区别,):选择 None (没有触发源):只在向 DAC 数据寄存器 DHR 写入数据之后,DAC 转化模块自动转换一次。选择 software trigger (软件触发):

向软件触发寄存器 SWTRIGR 中写入命令时触发转换,将 DOR 寄存器中的数据进行转换。 但是在这个之间需要向 DAC 数据寄存器 DHR 写入数据, 再进行软件触发操作。

可以说,software trigger (软件触发)就比  None (没有触发源) 多一个步骤,首先都要写 DHR 寄存器写入数据,写完后  None  自动转换,但是 software trigger  需要多一步软件触发操作。

在标准库中,使用步骤区别:如果模式为 DAC_Trigger_None :直接使用 DAC_SetChannelxData() 设置输出电压,就可以设定输出电压的大小

如果模式为软件触发:每次在使用 DAC_SetChannelxData() 设置或者修改输出电压后, 还需要调用 DAC_SoftwareTriggerCmd(),使能软件触发。

在 HAL 库中,没有单独的软件触发的代码,因为 HAL_DAC_Start() 函数中包含了软触发转换的代码。所以在 HAL 库中,建议的使用方法步骤为:初始化完成后,先使用 HAL_DAC_SetValue();  ,然后再使用 HAL_DAC_Start(); ,这样的先后顺序不管是使用上面的那种方式,都能够正常输出电压值。

在平时使用中需要谨慎使用,因为每一次修改输出电压后,都必须产生一次触发信号来使得 DAC 触发 。
 

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分