查看: 1390|回复: 1

[评测分享] 【NXP OKdo E1双核Cortex M33开发板 】USB音频PowerQuad正弦波

[复制链接]

该用户从未签到

发表于 2020-12-13 19:19:18 | 显示全部楼层 |阅读模式
分享到:
本帖最后由 文波_苏州 于 2020-12-13 22:36 编辑

上周,我们检查了USB音频的格式,从而按照格式产生出了一个单频方波。

方波在时域比较单纯,但在频域却比较复杂,有丰富的谐波成份。方波简单也很有用,将来如果把LPC55S69连接了了模拟器件,比如放大或滤波电路,用方波就可以检查信号的延时,或通过方波台阶的形状判断电路的频响如何,如果台阶比较“软”,那意味着高频或瞬态会有所损失。频域中最简单的波形是正弦波,但在时域中它却并不容易通过直觉能够领会,比如不参考资料尝试从头手写一个sin()函数。

在C语言的math.h库中已经实现了sin(),一般需要一个正弦波,调库即可,但这会消耗宝贵的CPU时间。在LPC55S69中有一个专门的个DSP模块PowerQuad,它也已经实现了一些常用的math库函数,  用它我们既能享受调库的便利,又不用担心占用太多CPU资源影响其他的任务。不仅如此,NXP也准备了丰富的文档和例子程序使我们在几分钟之内, 加几行代码就可以在已有项目中使用PowerQuad加速过的诸多DSP功能。

在SDK的实例代码中,boards/lpcxpresso55s69/driver_examples/powerquad/math文件夹下看示例powerquad_math.c, 已经提供了32bit的sin函数:
Screen Shot 2020-12-13 at 6.35.35 AM.png

稍加改造,把它放到我们上次的filter.c中:

Screen Shot 2020-12-13 at 6.16.32 AM.png

在main()函数中加一行初始化PowerQuad模块:

Screen Shot 2020-12-13 at 3.39.17 AM.png

包含上必要的头文件,在CMakeLists.txt中加几行:

Screen Shot 2020-12-13 at 3.41.17 AM.png

编译下载,用Audacity录音,成功得到一条标准的正弦波,而且实时逐点计算出来的。

Screen Shot 2020-12-13 at 6.19.32 AM.png
频域:

Screen Shot 2020-12-13 at 6.22.23 AM.png

PowerQuad的使用是如此方便,下一步我们可以尝试用它的滤波器库来对信号作些处理了。





点评

cool  发表于 2020-12-18 14:33
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-23 15:37 , Processed in 0.141992 second(s), 21 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.