式中,T0(n)为同步信号周期,T1(n)为二阶滤波后的结果,T(n)为频率相位修正后的结果。A为频率修正系数,B为相位修正系数。
基于TMS320F28l2实现数字锁相环(DPLL)的基本原理如图4所示。算法过程如下:
(1)设置捕获单元为上升沿捕获,当同步信号脉冲的上升沿到达到,计数器2从零开始计数,当下一个脉冲上升沿到达时,捕获计数器2的值,得到同步信号的周期值T0(n)。
(2)开放定时器1的下溢中断,当计数器l为零时即进入下溢中断,立即读取并记录此刻计数器2的值,如图4中点M,该值即为相位差θ(n),将其存入到相应寄存器中,等待程序调用。
(3)调用相关变量,基于锁相环基本算式,计算得到新的周期值T(n)。
(4)判断T(n)是否在频率限定范围之内,限幅处理后,将T(n)作为计数器1下一周期的周期值,这样在每个周期都进行调节便可实现锁相的目的。
考虑到移相PWM信号的发生,这里需设置计数器l为连续增减计数模式,所以实际载入周期寄存器的值的需再除以2。
移相PWM信号的发生原理如图5所示。设置定时/计数器1(GPl)为连续增减计数模式,设A和A′两点对应于比较单元l(CMPl),B和B′对应于比较单元2(CMP2)。比较单元1与比较单元2分别输出两路互补的脉冲信号。在GPl的下溢中断和周期匹配中断及时改变定时器比较寄存器的值,即可产生所需的移相PWM信号。
比较寄存器值的算法如下:
其中,TPR(n)为定时器l的周期值,date1和date2为两个变量值。改变datel与date2的差值,即可得到移相角可控的PWM输出。
设移相臂的滞后角度为β,则
由式(3)可知,当datel=0,date2=TPR(n)时,移相角β最大,此时移相范围为0~π,但在DSP的程序设计中datel(A点)是不能取零的,所以在这种算法下,移相角的范围与datel的最小取值有关。