Other Parts Discussed in Thread: CONTROLSUITE
2833x_SGENT1例子中的代码如下
// =====================================================================================
// This software is licensed for use with Texas Instruments C28x
// family DSCs. This license was provided to you prior to installing
// the software. You may review this license by consulting a copy of
// the agreement in the doc directory of this library.
// -------------------------------------------------------------------------------------
// Copyright (C) 2010-2011 Texas Instruments, Incorporated.
// All Rights Reserved.
//======================================================================================
/* ==============================================================================
System Name: Signal Generator Module demo
File Name: SGENT1.C
Description: Primary System file for demonstrating the Signal Generator module
Originator: Digital control systems Group - Texas Instruments
Target dependency: C28x
Description:
============
The "C" frame work, for demonstrating the signal generator module is given below
___________ _____________
| | | |
| | X1=OUT | EVMDAC |
| SGENT_1 |-------->| DLOG_4CH |
| | | PWMDAC |
|___________| |_____________|
*/
//######################################################################################
// $TI Release: C28x SGEN Library Version v1.01 $
// $Release Date: September 30, 2011 $
//######################################################################################
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include <sgen.h>
#define SIGNAL_LENGTH 512
/* Create an instance of Signal generator module */
SGENT_1 sgen = SGENT_1_DEFAULTS;
#pragma DATA_SECTION(ipcb, "SGENipcb");
int ipcb[SIGNAL_LENGTH];
int xn,yn;
void main()
{
unsigned long i;
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
/* Signal Generator module initialisation */
sgen.offset=0;
sgen.gain=0x7fff; /* gain=1 in Q15 */
sgen.freq=5369; /* freq = (Required Freq/Max Freq)*2^15 */
/* = (50/305.17)*2^15 = 5369 */
sgen.step_max=1000; /* Max Freq= (step_max * sampling freq)/65536 */
sgen.alpha=8192; /* phase_norm =(pi/4/(2*pi))*2^16=8192 */
/* So call step_max is normalized fmax in Q16 format */
/* step_max=fmax/fs*65536 */
/* f/fmax*2^15=freq */
for(i=0;i<SIGNAL_LENGTH;i++)
{
ipcb[i]=0;
}
for(i=0;i<SIGNAL_LENGTH;i++)
{
sgen.calc(&sgen);
xn=sgen.out;
ipcb[i]=xn;
}
for(;;);
} /* End: main() */
这部分代码请解释一下,谢谢!
/* Signal Generator module initialisation */
sgen.offset=0;
sgen.gain=0x7fff; /* gain=1 in Q15 */
sgen.freq=5369; /* freq = (Required Freq/Max Freq)*2^15 */
/* = (50/305.17)*2^15 = 5369 */
sgen.step_max=1000; /* Max Freq= (step_max * sampling freq)/65536 */
sgen.alpha=8192; /* phase_norm =(pi/4/(2*pi))*2^16=8192 */
/* So call step_max is normalized fmax in Q16 format */
/* step_max=fmax/fs*65536 */
/* f/fmax*2^15=freq
另外关于这个算法的文章是英文版本我也看不懂 请指点,Signal Generator Library.pdf 谢谢!