) 就算没有专门的旗子暗记源,电脑声卡、MP3乃至手机都可以拿来顶替一下。我也常常是用连在电脑上的DAC来得到音频旗子暗记的,我也DIY了仿照的低失落真旗子暗记源,不过那只有单个频点。好,先看我本日做出来的旗子暗记源效果图:
呃,这是什么鬼玩意儿? 旗子暗记源?

别焦急,先看这个:
妥妥的正弦波,这次对了吧。没错,这便是我的旗子暗记源出来的。
下面这个呢,看起来好象波形失落真了……
实在不是,这只是个巧合,示波器现在是当X-Y显示器用的,再来几个就明白了:
如果X,Y输入同频正弦,相位差90度,示波器X,Y增益相称的话,画出来便是一个圆了。
好,效果图看完了,旗子暗记源长啥样?
这东西实在并不大,由于用了单片机,而且可以3.2V电池直供电利用。输出两路音频正弦旗子暗记,频率1Hz~23999Hz, 1Hz步进可调。频率很准的,由于是晶振决定。
MCU便是ST的Cortex-m0: STM32F051
不过我这次把MCU给“超频”用了,晶振是49.152MHz, 超过了规格最大48MHz一点。缘故原由是为了采样频率在48000Hz上。那么我用什么来产生仿照旗子暗记呢?单片机自带了DAC,这个可以用,但是精度差了点。我其余用了一片音频的Sigma-Delta DAC: Cirrus Logic的CS4344:
便是直插电容阁下的小芯片了,音频专用哦,用在旗子暗记源上正得当。这个DAC也很便宜,最高支持192kHz的采样频率,不过我这里只用到48kHz. 通过I2S接口把PCM编码送过去,就出来仿照旗子暗记了,由于STM32F051已经有I2S接口了,以是用起来很方便。
线路挺大略的,我多引了些I/O到插针位上,方便往后做其它运用。CS4344的I2S旗子暗记MCLK, BCK, LRCK, DATA连到MCU上,作为slave设备。CS4344的仿照输出就按照手册上的大略接法输出了,没有加滤波电路,实际上高频噪声影响还是有的。PCB版图:我惯用的Eagle软件出图。
原来想用一块1602 LCD做显示,几个按钮做掌握。后来以为1602模块本身体积更大,弄出来又不小巧了,一时也没选定盒子。于是我就决定用串口掌握吧,设置好了往后可以拔下来,全体更小巧。以是软件上便是更新波形数据,和吸收串口命令的干活…… 一个在DMA的中断里面,一个在串口吸收中断里面。
正弦函数我并没有在程序中计算,而是存了一个表,用查表法。一方面是ROM刚好够用,另一方面是对Cortex-M0的浮点库不熟习就没有此时考试测验。采样频率是48000Hz, 如果要输出1Hz的旗子暗记,那么一个周期须要48000个样本,根据对称性,只须要存储1/4的正弦就够了。一个样本用24-bit足够,16-bit也差不多(截尾会有一些谐波),我任性地直接用了32-bit整型。打算1Hz的整数倍就很大略,相称于查表时每次跳N个就行了。
末了再强调一下利用CS4344等Sigma-Delta DAC相对付MCU片上DAC的优点:一个是量化精度比较高,谐波失落真也低不少。二是独立于MCU,减少了滋扰。三是降落了数据处理量,由于DAC带有8倍的上采样,硬件给你完成了插值。(不然,在48k采样率下,直接用零阶保持出来一个20k的旗子暗记是什么样子?)
请点击阅读原文查见地式及代码
欢迎参加>>>任性DIY,在这等你来!
以上图文内容均是EEWORLD论坛网友:cruelfox 原创,在此感谢。
欢迎微博@EEWORLD
如果你也写过此类原创干货请关注微信"大众号:EEWORLD(电子工程天下)回答“投稿”,也可将你的原创发至:bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!
与更多行业内网友进行互换请上岸EEWORLD论坛。






