基于DSP正弦信号发生器设计
1.4 独立键盘的设计
本信号发生器采用独立键盘作为人机接口部分,即各个按键相互独立,按下相应的按键,就能输出对应幅度和频率的正弦波。
图3所示为中断方式工作的独立式键盘的连接图,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不影响其它的I/O接口线。因此,可以通过检测I/O的电平状态判断出哪个键按下。这4个独立按键分别接HD0~HD3口,并且使用4个220 Ω的上拉电阻接Vcc。本文引用地址:https://www.eepw.com.cn/article/150945.htm
当没有按下键时,对应的I/O接口线输入为高电平,当按下键时,对应的I/O接口线输入为低电平,则请求中断INT1。而在读键时,每一个键的状态通过读入键值的高低电平来反应。在中断服务程序中通过执行判键程序,判断是哪个键按下,从而设置对应的幅度和频率,执行产生正弦波形的程序。
独立式键盘的电路配置灵活、软件简单。但每个按键要占用1根I/O接口线,在按键较多时,I/O接口线浪费较大。故在按键数量不多时采用这种方法,本系统采用4个独立按键,而DSP芯片有足够的I/O接口可供使用,设计时可以充分利用这一特点来连接硬件,至于对按键时抖动的消除可在软件中完成。使用中断,可提高CPU的效率,实现资源共享和并行处理,同时也可以在芯片运行过程中对突发故障做出及时发现和处理。
2 系统软件设计
2.1 正弦波形产生原理
常见产生正弦波的方法有6种:(1)采样回放法;(2)实时计算法;(3)查表法;(4)查表结合插值法;(5)数值迭代法;(6)泰勒级数展开法。
采样回放法容易实现,但系统的扩展性差,且并没有充分利用DSP的数据计算处理能力。实时计算法需要花费较多时间,只能产生较低频率的正弦波,而且存在计算精度与计算时间的矛盾。查表法的精度受表的大小影响较大,表越大精度越高,但是存储量也越大。查表结合插值法亦称混合法,用它产生的正弦波达不到理想的精度。数值迭代法较难编写出清晰的程序来。泰勒级数展开法是一种有效的方法,与查
表法和查表结合插值法相比,该方法需要的存储单元很少,而且精度更高。一个角度为的正弦和余弦函数,展开成5项泰勒级数如下
式中,x为θ的弦度值,正弦波的波形可以看成是由无数个点组成,这些点与x轴的每个角度值相对应,利用DSP可大量重复计算的优势来计算出x轴每一点对应的y值,然后通过D/A转换即可输出连续的正弦模拟信号。
2.2 变频调幅的方法
(1)16位定时模块。
C5402 DSP芯片片内定时器是一个软件可编程的计数器,它包括以下3个16位存储器映射寄存器:定时寄存器TIM,定时器周期寄存器PRD和定时控制寄存器TCR。片内定时器中,4位的预定标计数器PSC和16位定时计数器TIM组成一个20位的计数器,定时器每个CPU时钟周期减1,每次计数器减到0将产生定时器中断(TINT),同时PSC和TIM重新载入预设的值。定时器中断TINT的速率可由式(3)计算。
(2)变频调幅实现方法。
调幅的实现相对简单,只需在所有采样值前乘以一个调幅因子A1就可得到相应的正弦波幅值A。而调频的实现必须依赖于C5402芯片内的16位定时器。DSP芯片不断向D/A芯片送出采样值,然后经模数转换后可在示波器上观察到连续的正弦波形。先预设要产生的正弦信号频率为f,根据正弦波生成原理可知,向D/A送出采样值的间隔,即向D/A送值的周期T1=T/N(N为采样点数),那么向D/A送值的频率为f1=N×f,即向D/A送值的频率是期待产生的正弦波信号频率的N倍。
因此,为了能够调节产生正弦信号的频率,实际上改变向D/A芯片送值的频率即可。而改变向D/A芯片送值的频率就得用到C5402芯片内的16位定时器。根据式(3)将需要的频率值换算成PRD内的初值和TDDR的初值,并将该初值分别置入PRD和TDDR。
评论