历史上的今天
今天是: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的采样,可以应对许多一半的使用场景。价格也是非常的亲民。。。。
史海拾趣
|
【一个快速查找datasheet 的小工具来自datasheet5.com】 本帖最后由 paulhyde 于 2014-9-15 04:21 编辑 一个很好的下载datasheet的小工具,避免大赛的时候到处找资料 不到1M,但功能超强,基本所有的资料都可以下载到哦 datasheet5.com … 查看全部问答> |
|
一段时间没用,结果再用的时候提示 下面图片的情况 error:simulator failed to initialize before timeout 重装也没有用:(郁闷死了 是什么原因啊? [s:6]… 查看全部问答> |
|
昨天遇到了一个问题,我在wince6.0下编译了一个bootloader,通过Jtag烧录到我的板子上,板子是pxa270+P30 nor flash.这个bootloader可能有些问题,烧录进去之后起不来,我只好把5.0 OK的bootloader重新烧录回去,结果发现竟然5.0的bootloader也起不 ...… 查看全部问答> |
|
参考手册 表37 带刹车功能的互补输出通道 OCx 和 OCxN 的控制位中 当MOE,OSSI,OSSR,CCxE,CCxNE = 1,X,0,0,0时,OCx=CCxP, OCxN=CCxNP ...… 查看全部问答> |
|
LPC1766 和多个单片机用CAN通讯怎么实现呀? 主要是软件部分的实现?哪位大侠能给我指点指点!万分感谢! [ 本帖最后由 zhangjun1960 于 ...… 查看全部问答> |
|
中断出来的PWM怎么没有时间差啊 祈求各位大神帮助#include <msp430x14x.h>#include <math.h>#define uint unsigned int#define uchar unsigned char #define ulong unsigned long#define keyin (P1IN & 0x ...… 查看全部问答> |




