基于DSP的信号发生器设
DSP初始化,调用按键检测子程序判断是否有键按下,无键按下则循环等待,有键按下则根据不同的键值进入不同的子程序。
一种直接使用算法产生波形,另一种为查表法,所需的存储空间较大
计算法使用泰勒级数进行展开。
要产生一个正弦信号,首先要计算一个周期内各采样点的值,由于DA是8位的,所以要乘以二的八次方,才能够进入DA转换器进行处理。计算结果采用先计算后输出的方式。
通过矩阵键盘ch452选择不同的按键值,分别进入不同的产生波形或改变幅值或改变频率的子程
序,每个波形周期输出后,调用按键查询子程序,判断有无键按下,有的话输出下一个周期,否则跳到相应的键值对应的子程序中。
以正弦波为例在子函数中计算一个周期720个点的数据,并将这720个数据以不同的点数间隔传送给DA,改变间隔点数间隔点数即可改变频率,通过通道1显示出波形。通过改变一个周期内传送给DA的数据个数来改变频率,个数越少,时间越小,频率越大。
DA通过spi通信,按键通过i2c通信
mBCD码显示键盘
ch452数据手册,按键程序
12864显示屏可以静态显示每个键值对应的操作
问题1 sxdch452.c中定义的变量在其他函数中不能使用,通过在其他子函数中变量的前面加extern使其成为全局变量,解决这个问题。
问题二 产生波形的子程序,有个while(1)死循环,不能跳出这个循环函数,将其改变成while(变量),并在按键子程序中将不同的变量分别赋值为1,按不同的按键从而可以跳出循环。
问题三 正弦波调频时,计算一个周期360个点的函数值,当每隔18个点输出一个数据时,共输出了20个点的数据,点数太少,导致波形产生很大的畸变,通过在一个周期内计算720个点的数据,使得点数增多,减少了波形失真。