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.

[参考译文] CCS/TMS320F2808:在TMS320F2808上生成的正弦波在图形工具中显示不良

Guru**** 2194690 points
Other Parts Discussed in Thread: TMS320F2808
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/564854/ccs-tms320f2808-sine-wave-generated-on-tms320f2808-badly-displayed-in-graph-tool

部件号:TMS320F2808

工具/软件: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) 


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    测试用例看起来不完整,因为它不包含用于从sine_table填充sine_wave变量的循环。 您是否可以发送更完整的测试用例,以便我尝试评估输出之间的差异?

    此外,图形上的参数可能会影响图形的显示方式。 您如何设置图表?

    此致,
    拉斐尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,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中。 统计图工具已配置