OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3530|回复: 3

用stm32做一个信号发生器,输出两路可调波形

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-1-11
在线时间
17 小时
发表于 2017-1-11 12:49:02 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 wslk427 于 2017-1-11 14:41 编辑

最近想用stm32 做一个信号发生器,用DAC输出两路波形,要求频率可调,最大频率要达到30k,我用两个DAC输出生成的波形数据,但是调节其中一路的波形频率会影响另外一路的。
lk1.png
通过按键中断来改变波形表的点数和单点重复输出次数,但是这样两路波形之间就会有影响,各路大神,有没有什么方法可以做到输出两路互不影响,频率可调的波形
我也试过用UCOS-ii 系统来做两个任务,但是由于不能有延时,优先级低的那个任务就得不到运行,使用信号量同步的话波形频率最高也只有2k,求大神帮忙!!!!另外,把DAC设置为定时器触发,是不是定时时间到DAC就会自动输出?还是说要给DAC->DHR12R1赋值,赋值后的操作是执行下面的语句呢?还是等带定时到来?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11541
金钱
11541
注册时间
2014-4-1
在线时间
1315 小时
发表于 2017-1-11 14:49:36 | 显示全部楼层

肯定是自己的问题。

具体思路是怎么样的,有没有用到DMA,这些逻辑过程要清楚。

回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-1-11
在线时间
17 小时
 楼主| 发表于 2017-1-11 15:45:37 | 显示全部楼层
具体要求就是输出两路10—30k可调频率的正玄波,两路波形互不影响
具体思路是:
首先用sin函数得到一个波形数据表,DAC通过查表输出波形
但是频率的调节不知道该怎么办?
是通过定时器来改变每点之间输出间隔时间还是怎么做?
现在的想法是死循环里一直输出,通过改变单个点输出次数来改变频率,这样就是通道1输出一个点,通道2输出一个点,
但每次输出的间隔时间还是会不一样,所以改变其中一个通道的频率对另外一个通道的频率也有影响
有没有什么好的办法 可以做到两路波形频率调节互不影响的?
回复

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2016-11-25
在线时间
37 小时
发表于 2017-1-16 08:38:21 | 显示全部楼层
本帖最后由 Mylittledonkey 于 2017-1-16 08:44 编辑

好好复习一下高中数学!!!

另外给你一个思路

在定时器中运行以下代码

通过改变查表的步长实现调频

angle_step=sin_freq/pwm_freq;

angle+=angle_step;

if(angle>1)angle=0;

sin_value=sin_table[angle];

DAC=sin_value;
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-30 13:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表