微控制器用作正弦波发生器
通过在微控制器存储器中存储预设值的方法,可以来将微控制器作为波形发生器使用。微控制器可以实现包括正弦波、三角波和锯齿波在内的所有类型的波形。
本文引用地址:https://www.eepw.com.cn/article/3019.htm本文探讨了如何通过在微控制器存储器中预先加载一组固定数值,从而生成正弦波的方法。同时还探讨了如何利用DAC将这些预设的数值转换为模拟输出。最后探讨了用来改变正弦波频率的机制。
用来实现这一设计的器件是Cypress的子公司MicrosystemsTM PSoCTM(可编程系统芯片)器件。PSoC采用的是一个8位哈佛结构的微处理器,器件内部有16KB的可编程存储器(闪存),用以存储波形数据点。
可以采用任何具有显示/图形功能的软件包来采集通过串行口传输的波形数据。设计,采用的是NI公司的LabView编程软件,以采集、格式化和显示进入和流出PSoC器件的数据。
任何可利用三角法计算的数学软件或计算器都可以用来生成一组正弦波形数据。一旦确定了所需要的波形分辨率,就可以计算出产生所需波形的波形数据点数。
在器件中加载这些波形点的数据值之前,还需要确定几个参数。其中一个参数是器件的输出范围,这可协助确定偏置数值。在PSoC器件中,有几个输出范围可供选择,包括(Vcc/2)±(Vcc/2)和(Vcc/2)±频带间隙。
我们选择该器件最大可能的输出范围(Vcc/2)±(Vcc/2)。本参考设计的输出采用了PSoC器件的全输出摆幅(0~5V)。为使用最大的输出范围,输出信号的偏置必须置于+2.5V,最大的振幅也必须设为+2.5V。这些数值保证了DAC的波形输出具有最大电压摆幅,同时又不会有削波现象。
正确设定这些参数以后,即可将正弦波数据加载到存储器中。在向PSoC器件闪速存储器中写入预先生成的数据时,可以在源代码中将这些数据列在一个变量名下。这可保证在器件每次被编程时,存储器加载过程都会自动执行。图1示出了如何利用C语言来实现这一点。之后存储在变量中的数据被发送到DAC,每次一个字节循环进行,DAC时钟用来决定DAC转换和输出数据的速度,从而决定了输出波形的周期。
用来编程和调试PSoC设计的PSoC DesignerTM软件包示于图2。该图显示的是DAC和生成DAC时钟的计数器布局。图中还显示出了用来生成中断信号的第二个计数器。中断程序用来将数据传送到DAC,然后DAC将转换后的信号输出至I/O引脚。DAC的最大刷新速率为125KHz,驱动DAC的时钟必须设置为所需输出频率的4倍。
DAC需要进行的设置包括时钟相位参数。该参数将DAC输出与另一个PSoC模块的输入同步。另一参数——模拟总线设置则用来将数据输出至特定的I/O引脚。DAC需要的最后一个配置参数是二进制偏置设置,该参数决定了DAC用来传输数据的格式。
其中一个计数器(counter_1)用来生成驱动DAC的时钟信号。进行适当的计数器参数设置,使计数器输出信号是DAC转换频率的4倍。
第二个计数器(counter_2)用来生成周期性中断信号。在中断服务执行过程中,闪速存储器中的数据地址一增加,存储在该地址单元中的数据则被发送到DAC。这一过程不断重复直至达到最后一个数据点,然后计数器复位,这一过程重新开始。在本例中,数据点的发送用以确定时间间隔紧密相连,从而生成周期性波形。
为调整输出波形的周期,需要调整coanter1(它生成DAC时钟)的周期。这一调整过程可动态完成,因为控制PSoC模块的参数是基于寄存器的。可建立一种协议架构来将这些参数传送至相应的寄存器。一旦确定了相应的协议架构,参数即可被传送至正确的寄存器,而模块输出则根据新的参数进行调整。
设计检查相对比较简单。因为本设计中DAC的输出通过I/O端口输出,因此进行设计的最方便的方法是检查该引脚输出的信号。通过检查输出信号的频率、幅度、偏置和信号质量,可以保证他们满足设计的要求。为验证设计正常工作,开发了LabView接口。
微控制器是非常灵活的,他们可完成的功能也几乎是没有限制的。本文给出的仅是如何实现这些众多可能功能的一个例子。■
评论