原创 【TI博客大赛】C2000查表法产生正弦波浅析

2012-10-24 09:11 2767 7 7 分类: 处理器与DSP

正弦波的产生使用查表法,sin表里面是250个,0~90度的,步进为0.36度的计算出来的正弦值。利用正弦波的对称性,只需要0~90度的即可。
但是这250个值并不是每个都用,而是在程序中由有一个步进值step,
u_index += step
v_index += step
w_index += step
这个步进值step,同F_OUT相关
step = (float ) F_OUT / 10
每个周波后,index和F_OUT都会复位
if(u_index >= 1000)
{
u_index = 0;
F_OUT = Get_F_Command(); // update Frequency
}
unsigned char Get_F_Command()
{
unsigned char Freq;
// get F_Command;
//e.g.
Freq = 50;
return Freq;
}
实际上F_OUT只在第一个周波内是F_OUT = 200,其他周波都是50
由于VF_Mul_F = (int)F_OUT * VF_RATIO,VF_RATIO是不变的:#define VF_RATIO 327
所以只有在第一个周波内,VF_Mul_F是一个值,其他周波内变成了1/4,(50/200).其他见图:

 

 XXX = VF_Mul_F * (long)sin_TABLE[index - 500]>>16或VF_Mul_F * (long)sin_TABLE[index]>>16或VF_Mul_F * (long)sin_TABLE[999 - index]>>16或(long)sin_TABLE[499 - index] * (long)VF_Mul_F >> 16

之所以第一周波与后面不同,我想是为了驱动大一些,步进更细一些,容易启动一些吧。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条