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

2019-10-15 07:54发布

本帖最后由 wslk427 于 2017-1-11 14:41 编辑

最近想用stm32 做一个信号发生器,用DAC输出两路波形,要求频率可调,最大频率要达到30k,我用两个DAC输出生成的波形数据,但是调节其中一路的波形频率会影响另外一路的。
lk1.png
通过按键中断来改变波形表的点数和单点重复输出次数,但是这样两路波形之间就会有影响,各路大神,有没有什么方法可以做到输出两路互不影响,频率可调的波形
我也试过用UCOS-ii 系统来做两个任务,但是由于不能有延时,优先级低的那个任务就得不到运行,使用信号量同步的话波形频率最高也只有2k,求大神帮忙!!!!另外,把DAC设置为定时器触发,是不是定时时间到DAC就会自动输出?还是说要给DAC->DHR12R1赋值,赋值后的操作是执行下面的语句呢?还是等带定时到来?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
xuande
1楼-- · 2019-10-15 12:56
 精彩回答 2  元偷偷看……
wslk427
2楼-- · 2019-10-15 14:57
具体要求就是输出两路10—30k可调频率的正玄波,两路波形互不影响
具体思路是:
首先用sin函数得到一个波形数据表,DAC通过查表输出波形
但是频率的调节不知道该怎么办?
是通过定时器来改变每点之间输出间隔时间还是怎么做?
现在的想法是死循环里一直输出,通过改变单个点输出次数来改变频率,这样就是通道1输出一个点,通道2输出一个点,
但每次输出的间隔时间还是会不一样,所以改变其中一个通道的频率对另外一个通道的频率也有影响
有没有什么好的办法 可以做到两路波形频率调节互不影响的?
Mylittledonkey
3楼-- · 2019-10-15 17:26
本帖最后由 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;

一周热门 更多>