数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1571|回复: 7

[Arduino] 跟坛友学习,这个叫什么我也不知道,软件模拟DDS?

[复制链接]
发表于 2020-3-19 09:32:32 | 显示全部楼层 |阅读模式
这个坛友叫什么忘了,头像是一副眼镜,哈哈:titter:
他搞得软件模拟dds播放音乐。我觉得挺好玩,学点最初级的,试验一下
就是在一个基础频率上得到其1,2,3.。。。的倍频。

我这里数据都是实时计算的,因为我没那么大的内存,我的数据大小也很小
比人家25K数据小得多,但是arduino性能还是很慢,基础频率只能到1hz左右!

先看几个保持的图样


这里用了一个da转换器输出波形,所以就更慢了


示波器探头也不行了,1x档总是虚,信号不好
低价的就是不行,这个能修理吗?


这是两个频率切换的瞬间



下面是测试数据
这个算基频吧,大约1hz


2倍


3倍,这里我只看显示的频率数字,不看波形










这是9倍


最后得到一个表,第一列是理论数值,第二列是实际数值,第三列误差
如果做得好的话,误差还可以



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 1家元 +20 收起 理由
花生仔 + 20 謝謝分享

查看全部打赏

发表于 2020-3-19 10:06:57 | 显示全部楼层
谢谢分享,只能路过。

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10 别走,带点盘缠

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-19 10:07:48 | 显示全部楼层
不拆了,从事研究,挺好的!

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-19 10:28:22 | 显示全部楼层
高深的东西,不懂。:smile:

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 10:30:29 | 显示全部楼层
asus21 发表于 2020-3-19 10:28
高深的东西,不懂。

哈哈,其实很简单,看那个坛友帖子,我是说不明白:loveliness:
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:16:11 | 显示全部楼层
建议你查查泰勒公式,然后得到sinx的前5项展开就行了。用这个公式做拟合公式,然后你开辟一个写在code memory的float数组,每隔一度采样一次,就有90个4字节数据,对于8Kbytes的MCU来说九牛一毛。每次求正弦值就根据实际角度查找1度范围内的正弦值,根据左端点的初始值带入泰勒公式求输入角度对应的正弦值,在速度和精度做一定取舍,应该都会快一点。
由于sinx的特性,实际5相中偶次幂项都是0,实际上只有3个奇次幂项,所以速度快一些。

打赏

参与人数 2家元 +30 收起 理由
2545889167 + 20 用定点就行了 浮点他这个8位机算的慢.
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-19 19:19:55 | 显示全部楼层
la45088d1 发表于 2020-3-19 19:16
建议你查查泰勒公式,然后得到sinx的前5项展开就行了。用这个公式做拟合公式,然后你开辟一个写在code memo ...

哈哈,不错,可惜我不擅长数学
回复 支持 反对

使用道具 举报

发表于 2020-3-19 19:21:08 | 显示全部楼层
DDS: Direct digital synthesis
原理在这里,你可以查查百度的:https://www.sohu.com/a/204979496_467791

打赏

参与人数 1家元 +18 收起 理由
2545889167 + 18 泰勒展开好评

查看全部打赏

回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-25 15:55 , Processed in 0.436801 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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