历史上的今天
返回首页

历史上的今天

今天是:2025年04月14日(星期一)

正在发生

2020年04月14日 | 基于Stm32F407的任意波形发生器

2020-04-14 来源:eefocus

今天跟大家分享一个DAC转换的例子:先来效果图示波器使用的是Loto示波器OSC802

三角波20KHz示例

三角波20KHz示例


正弦波20KHz示例

测试使用的是Loto虚拟示波器   以上两张图的波形每一个周期都是300个DAC点组成,DAC转换速度是3MHz


具体的实现代码如下:

主要是最下面的三个函数  一个是DAC的初始化函数,另一个是定时器4的初始化函数 最后一个是波形发生函数。

这是DAC+DMA的初始化函数  这要是设置DAC和DMA的基本参数 

DAC触发选择的是定时器4的触发引脚, 也可以换成以上的其他定时器


接下来是定时器的初始化

定时器初始化部分很简单,不需要配置IO  也不需要配置中断  只需要把定时器的基本参数设置好然后记得打开输出


TIM_SelectOutputTrigger  这样就可以定时输出一个触发信号来控制DAC进行DA转换   同时也会给DMA一个信号DMA会搬运一个新的数据给DAC。


以上就是输出的过程了


接下来就介绍如何产生波形

产生波形大概有这几个参数是需要注意的  以正弦波为例


第一个是波形的峰值  我们知道sinx的最大值是1  最小值是-1   然后应为ADC只能生成正的电压值,所以我们需要将波形向上平移


另一方面就是一个周期内的点数, 点数越多  波形拟合的就越逼真,但是同样需要的转化时间就会正常,所以需要按照自己的需求选择合适的点数。 上图的算式是直接将点数所对应的的周期进行细分分别计算出每一个点上所对应的的值。需要其他波形还需要读者自行摸索。


最后分享一下我用的示波器。。。

平时用很方便,自己在家玩不需要一个很贵很大的示波器  只需要一个小的就可以了,然后出差的时候也可以随着笔记本一起带走。上位机软件方面也是很清爽,一键自动调节频率和幅值,也可以手动单项调整。OSC802是双通道80M的采样,可以应对许多一半的使用场景。价格也是非常的亲民。。。。

推荐阅读

史海拾趣

亿佰特(EBYTE)公司的发展小趣事

亿佰特始终坚持以质量为核心的发展理念。公司建立了严格的质量控制体系,从原材料采购到生产制造,再到产品检验,每一个环节都严格把关。通过精细化的管理,亿佰特确保了产品的优良品质。同时,公司还注重售后服务,为客户提供全方位的支持。正是凭借卓越的品质和优质的服务,亿佰特赢得了客户的信赖和市场的认可。

EECO Switch公司的发展小趣事

EECO Switch公司成立于1947年,最初作为加利福尼亚州的一家电子工程公司,致力于电子产品的设计与制造。随着技术的不断进步和市场需求的变化,公司逐渐将业务重心转向人机界面产品的设计与开发。在这个过程中,EECO Switch凭借其深厚的技术积累和创新精神,成功开发出了一系列具有领先技术的人机界面产品,从而确立了其在该领域的领先地位。

Cystech公司的发展小趣事

随着全球环保意识的不断提高,C-TECH Co., Ltd积极响应环保号召,将环保理念融入公司的发展之中。公司在2007年就通过了ISO 14001环境管理体系认证,并在生产过程中采用环保材料和工艺,减少废弃物排放和能源消耗。此外,公司还积极参与环保公益活动,推动行业绿色发展。通过践行环保理念,C-TECH Co., Ltd在电子行业树立了良好的企业形象。

EXCELTA公司的发展小趣事

近年来,随着环保意识的提高和可持续发展的理念深入人心,Excelta也积极响应这一趋势。公司不断优化生产工艺和材料选择,降低产品对环境的影响。同时,公司还积极参与环保公益活动和社会责任项目,为社会和环境贡献自己的力量。这一转变不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

Esterline Technologies Corporation公司的发展小趣事

近年来,随着环保意识的提高和可持续发展的理念深入人心,Excelta也积极响应这一趋势。公司不断优化生产工艺和材料选择,降低产品对环境的影响。同时,公司还积极参与环保公益活动和社会责任项目,为社会和环境贡献自己的力量。这一转变不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

EMC Component Group公司的发展小趣事

近年来,随着环保意识的提高和可持续发展的理念深入人心,Excelta也积极响应这一趋势。公司不断优化生产工艺和材料选择,降低产品对环境的影响。同时,公司还积极参与环保公益活动和社会责任项目,为社会和环境贡献自己的力量。这一转变不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

【一个快速查找datasheet 的小工具来自datasheet5.com】

本帖最后由 paulhyde 于 2014-9-15 04:21 编辑 一个很好的下载datasheet的小工具,避免大赛的时候到处找资料 不到1M,但功能超强,基本所有的资料都可以下载到哦 datasheet5.com  …

查看全部问答>

tornado2.2 for arm 用不了了!!!!

一段时间没用,结果再用的时候提示 下面图片的情况 error:simulator failed to initialize before timeout 重装也没有用:(郁闷死了 是什么原因啊? [s:6]…

查看全部问答>

WINCE中的playwnd怎么加到内核中?

为什么我老是加不进去,还有就是编译playwnd是不是会产生一个playwnd.exe文件,为什么我没产生?…

查看全部问答>

关于flash Jtag的问题

昨天遇到了一个问题,我在wince6.0下编译了一个bootloader,通过Jtag烧录到我的板子上,板子是pxa270+P30 nor flash.这个bootloader可能有些问题,烧录进去之后起不来,我只好把5.0 OK的bootloader重新烧录回去,结果发现竟然5.0的bootloader也起不 ...…

查看全部问答>

请教一个arm语法的问题

比如下面这段代码,请问“b”是什么意思? ExceptionVec         b                 ResetHandler         b             &nb ...…

查看全部问答>

OCxN_EN是什么输出信号?

    参考手册 表37 带刹车功能的互补输出通道 OCx 和 OCxN 的控制位中    当MOE,OSSI,OSSR,CCxE,CCxNE = 1,X,0,0,0时,OCx=CCxP, OCxN=CCxNP ...…

查看全部问答>

LPC1766 和单片机用CAN通讯怎么实现

LPC1766 和多个单片机用CAN通讯怎么实现呀? 主要是软件部分的实现?哪位大侠能给我指点指点!万分感谢!                         [ 本帖最后由 zhangjun1960 于 ...…

查看全部问答>

linux下面驱动的编写与移植

各位大大  小弟是linux初学者 小弟想学习linux下面驱动的编写与移植  不知道怎么入手  该看什么书、用什么开发软件搭建开发平台  请各位指教指教…

查看全部问答>

求助 求助 急需各位大神帮助看一下程序

中断出来的PWM怎么没有时间差啊 祈求各位大神帮助#include <msp430x14x.h>#include <math.h>#define uint unsigned int#define uchar unsigned char  #define ulong  unsigned long#define keyin    (P1IN & 0x ...…

查看全部问答>

串口通讯

发送没有问题,但是接受有问题。断点中断一直停在此处,if(UARTCharsAvail(UART1_BASE))?是电路问题,还是串口配置可能有误/求解!!!!!!!!!!!!!…

查看全部问答>