DDS算法:当时是用了一款AD9833芯片搭配外接电路实现了一个波形发生,配合stm32f103芯片实现一个幅度、频率、显示的功能;
在这个过程中,也学会了一些控制算法;就比如DDS算法,当时做了一些了解,可能理解不够深入,但是起码理解了,哈哈哈。
算法原理:
微控制器向 AD9833 写入频率控制字和相位控制字,芯片内部的相位累加器根据频率控制字进行累加运算,得到的相位值作为地址去访问波形存储器(内部已固化正弦波、方波、三角波等波形数据),取出对应幅值的数字信号,再经过数模转换和低通滤波,输出模拟波形 。通过改变频率控制字,可以调整相位累加器的累加速度,从而实现输出波形频率的改变;通过修改相位控制字,能够改变输出波形的初始相位。
好迷,总体来说就是向寄存器写入一些值(下面应该是叫做控制码)来控制输出的波形变化;
AD9833 可输出正弦波、方波和三角波,通过向特定寄存器写入不同的控制码来选择波形类型。例如,写入控制码 0x2000 选择正弦波,写入 0x2100 选择方波,写入 0x2200 选择三角波。在程序中,根据用户选择的波形类型,将对应的控制码通过 SPI 通信写入 AD9833 的控制寄存器。
感觉如果嵌入式方面要应用的话,能理解上面这些就欧克了,至于具体的公式原理倒没有显得那么重要了。
下面就是一些关于DDS控制算法的频率和相关相位的计算了: