This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
您好,
我一直在为三相电压源逆变器开发正弦波调制器
在TMS320F2808 DSP上。 我一直在使用CCS v6进行调试(特别是Graph
工具)。 我已经开发了用于生成所需正弦波的代码(请
请参阅附件)。 我的问题是,此代码产生的正弦波只能正常工作
在某些频率下(我在统计图工具中观看输出正弦波)。 现在我不知道是否
问题出现在我的代码或CCS中的图形中。 请大家 看看我的代码并进行评估
是否可以? 下面是用于以下项目的图形:
1.50 Hz ~ 3.2767万
2.49 Hz ~ 3.22万
3.45 Hz ~ 3万
4. 25 Hz ~ 1.6384万
提前感谢。
//索引,16位,0-6.5535万 静态无符号短索引1 = 0; 静态无符号短索引2 = 0; //所需输出频率,50 Hz ~ 3.2767万 静态无符号短频率= 3.2767万; //临时变量 静态短温度= 0; //表中正弦值的1.15 中的a // 表包含整个期间<0,2*PI>和129个值(由于线性内插) //表中的角度步长(2*PI)/128 ~ 2.8 ° //归一化角度步长(2*PI)/128*1/(2*PI)*6.5536万=512 静态短正弦表[]={ 01608,3212,4808, 6393, 7962,9512,1.1039万, 1.2539万,1.401万, 1.5446万,1.6846万, 1.8204万,1.9519万,2.0787万, 2.2005万, 2.317万,2.4279万,2.5329万,2.6319万, 2.7245万,2.8105万,2.8898万,2.9621万, 3.0273万, 3.0852万,3.1356万,3.1785万, 3.2137万,3.2412万, 3.2609万,3.2728万, 3.2767万,3.2728万,3.2609万, 3.2412万, 3.2137万,3.1785万,3.1356万,3.0852万, 3.0273万,2.9621万,2.8898万,2.8105万, 2.7245万, 2.6319万,2.5329万,2.4279万, 2.317万,2.2005万, 2.0787万,1.9519万, 1.8204万,1.6846万,1.5446万, 1.401万, 1.2539万,1.1039万,9512,7962, 6393,4808,3212,1608, 0,-1608,-3212,-4808, -6393, -7962,-9512,-1.1039万, -1.2539万,-1.401万, -1.5446万,-1.6846万, -1.8204万,-1.9519万,-2.0787万, -2.2005万, -2.317万,-2.4279万,-2.5329万,-2.6319万, -2.7245万,-2.8105万,-2.8898万,-2.9621万, -3.0273万, -3.0852万,-3.1356万,-3.1785万, -3.2137万,-3.2412万, -3.2609万,-3.2728万, -3.2767万,-3.2728万,-3.2609万, -3.2412万, -3.2137万,-3.1785万,-3.1356万,-3.0852万, -3.0273万,-2.9621万,-2.8898万,-2.8105万, -2.7245万, -2.6319万,-2.5329万,-2.4279万, -2.317万,-2.2005万, -2.0787万,-1.9519万, -1.8204万,-1.6846万,-1.5446万, -1.401万, -1.2539万,-1.1039万,-9512,-7962, -6393,-4808,-3212,-1608, 0 }; //所需输出频率的角度步长 静态无符号短delta相位=0; //相位累加 器静态无符号短相位=0; //输出正弦波 静态短正弦波=0; //所需输出频率的角度步长(由频率变量设置 )//对于一个频率为FS的中断,角度步长(以弧度为单位)为2*PI*f/FS //因此归一化角度步长为f/FS*6.5536万 //对于所需的50 Hz和FS=1.2万 Hz: 50/1.2万*65536 =6.5536万 = 273 // 50 Hz设置为3.2767万 delta相位=(((((unsigned Long)frequency)*273)>15);// 增量相位累加器,带角度步进 相位+= delta相位; //"低"索引 //相位到索引转换 //表中有128个值,因此只有7个最高位设置索引 //相位累加器为16位所以>> 9 索引1 =相位>> 9; //"高"索引 2 =索引1 + 1; //从表中检索正弦值 //正弦值表中的线性插值 temp =(*(sine_table + index2)-*(sine_table + index1)); //相位累加器的低9位为"分数",因此和0x1FF //表中的"全"角步长为512,所以>> 9 temp =(短)(((长) temp)*((相位和0x1FF)>> 9); temp +=*(正弦表+索引1); //电压与频率 正弦比率=(((长)*15)
您好,Rafael:
我已将代码放置到连接到的ISR中
计时器。 此ISR以12 kHz频率调用。
我发现了以下代码
TEMP =(短)(((长) temp)*((相位和0x1FF)>> 9));
应该替换为此
温度=(((长)温度)*((相位和0x1FF)<6))>> 15;
因为相位的分数部分会丢失。
我已经测试过,但结果相同。 我一直在使用
统计图工具的以下代码
#define buffer_size 480 short buffer[buffer_size]; short *pbuffer = buffer; *pbuffer = sine_wave; pbuffer++; if (pbuffer >(buffer + buffer_size - 1)) pbuffer = buffer;
此代码也放置在ISR中。 统计图工具已配置
。