4486|2

6107

帖子

4

TA的资源

版主

楼主
 

NUCLEO-stm32F413ZH评测一-----DAC程序篇 [复制链接]

本帖最后由 damiaa 于 2016-12-27 21:36 编辑

                               NUCLEO-stm32F413ZH评测一-----DAC程序试用篇

接着NUCLEO-stm32F413ZH评测一-----开箱篇开始唠叨
建议:熟悉STM32CUBEMX的网友喜欢直接用CUBE生成项目。其实也可以在ST官网下载en.stm32cubef4(好像没看到DAC的例子)
解压后有很多例子。和生成的一样,可以作为程序调用的参考。里面有IAR,K,GCC,SW4STM32等例子。读读无妨。

STM32程序架构
STM32CUBE生成的新的程序架构基本上都是这样子了:
然还可以生成更复杂的,特别是当你选了FREERTOS和LWIP后。
GPIO和按键:GPIO输出基本就这样:


按键输入不同的就是把按键的IO设置为GPIO_MODE_INPUT

DAC
DAC这东西就是数字转模拟,对于stm32F413ZH来说有两路两路DAC STM32F072 091也都是两路.
构建这个程序分几步:
1,用STM32CUBEMX配置建个框架。
2,生成代码。
3,代码里面添加函数启动DAC。

用STM32CUBEMX配置建个框架
1,STM32CUBEMX里选NUCLEO-STM32F413ZH板子(这样方便多了,省事)

2,把两个DAC都用上(如果你只想用一个我不勉强

3,生成代码打开就用了DAC的初始化。这时我们要做的事就是添加下面的2,和3(1被STM32CUBEMX做了)

4,编译代码运行。
5,结果展示:

单个示波器通道测试一路

两个示波器通道测试两路。
下面是代码:
uart_dac_test.rar (8.41 MB, 下载次数: 31)
评测结果:拿来即用,用了就会,方便!
关于DAC的理论问题
关于保持寄存器
1,DAC可以设置为8位模式和12位模式
2,DAC可以使用DMA输出数据。
3,DAC在STM32F43和072,091等设备中有两路。
4,因为第三点,所以有了对齐方式:左对齐,右对齐。(the data could be left- or right-aligned)
    DAC_ALIGN_12B_R                 
     DAC_ALIGN_12B_L               
     DAC_ALIGN_8B_R                  





看到这里我们有点糊涂了,怎么有1通道8为DAC_DHR8R1,有2通道8为DAC_DHR8R2的保持寄存器,还有DAC_DHR8RD双路的(16位)
看这里  Dual DAC channel for independent or simultaneous conversions 原来DAC的两个通道可以单独输出也可以同步输出。
所以12位的左右对齐的保持寄存器也都是有3个
关于触发



可以定时器2,4,5,6,7,8触发,也可以EXIT LINE9 配置外部IO触发,也可以软件启动触发。不错都想到了。DMA就不讨论了,这个主要是为了速度,不如放些数据到内存,配置DMA,让他定时发出到DAC。
DAC还能产生噪声?
In order to generate a variable-amplitude pseudonoise, an LFSR (linear feedback shift
register) is available. DAC noise generation is selected by setting WAVEx[1:0] to “01”. The
preloaded value in LFSR is 0xAAA. This register is updated three APB1 clock cycles after
each trigger event, following a specific calculation algorithm.

是的,细节不讨论了。
DAC还能生成三角波?Triangle-wave generation是的
It is possible to add a small-amplitude triangular waveform on a DC or slowly varying signal.
DAC triangle-wave generation is selected by setting WAVEx[1:0] to “10”. The amplitude is
configured through the MAMPx[3:0] bits in the DAC_CR register. An internal triangle counter
is incremented three APB1 clock cycles after each trigger event. The value of this counter is
then added to the DAC_DHRx register without overflow and the sum is stored into the
DAC_DORx register. The triangle counter is incremented as long as it is less than the
maximum amplitude defined by the MAMPx[3:0] bits. Once the configured amplitude is
reached, the counter is decremented down to 0, then incremented again and so on.


对于双通道也可以同步或者独立启动,同步或者独立产生噪声,同步或者独立使用生成三角波。其实只要我们充分使用定时器和DAC,可以产生各种波形。大家试试无妨。
具体细节请看下面资料:
en.DM00305666.pdf (14.19 MB, 下载次数: 28)
好了好了,也不知道大家都清楚了没有,反正我还是一头雾水,似懂非懂。谢谢所有这些都在
stm32f4xx_hal_dac.h
stm32f4xx_hal_dac.c
stm32f4xx_hal_dac_ex.c
三个文件中体现。一句话,方便!





此帖出自stm32/stm8论坛

最新回复

喜欢这种评测,赞一个先!  详情 回复 发表于 2016-12-24 22:33
点赞 关注(1)
 

回复
举报

821

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
喜欢这种评测,赞一个先!
此帖出自stm32/stm8论坛

点评

谢谢鼓励!  详情 回复 发表于 2016-12-25 08:15
 
 

回复

6107

帖子

4

TA的资源

版主

板凳
 
lising 发表于 2016-12-24 22:33
喜欢这种评测,赞一个先!

谢谢鼓励!
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表