28335显示波形问题
我用28335采集三角波,在CCS里用GRAPH显示波形,可是有问题。实际产生的三角波波形正常,可是显示有问题。
见附件。都是在中间位置出错。
请高手指教,谢谢!
附程序
#include"DSP2833x_Device.h"
#include"DSP2833x_Examples.h" //此头文件中声明了所有的外部函数
#include"user_define.h"
#include"math.h"
#include"LCD19264F.H"
// ADC start parameters
#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz
#endif
#if (CPU_FRQ_100MHZ)
#define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz
#endif
#define ADC_CKPS 0x1 // ADC module clock = HSPCLK/2*ADC_CKPS = 25.0MHz/(1*2) = 12.5MHz
#define ADC_SHCLK0xf // S/H width in ADC module periods = 16 ADC clocks
#define AVG 1000// Average sample limit
#define ZOFFSET 0x00// Average Zero offset
#define BUF_SIZE 256// Sample buffer size
// Global variable for this example
Uint16 SampleTable;
INT8Uqian,bai,shi,ge;
void main(void)
{
unsigned int i=0,j=0;
InitSysCtrl();//设定CLKIN=OSCCLK*10/2=150MHz
//LOSPCP=150/4=37.5Mhz
// Specific clock setting for this example:
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK
EDIS;
//-------------------------------------------------
DINT;//cpu中断禁能
// PieCtrlRegs.PIECTRL.bit.ENPIE = 0;//PIE总禁能
InitPieCtrl();//PIE控制标志位清零
//-------------------------------------------------
InitPieVectTable();//初始化PIE中断向量表
IER=0x0000;//CPU中断禁能
IFR=0x0000;//CPU中断标志清零
IER=BIT2+BIT4;//0x0004,使能INT3EPWM1_INT,使能INT5EQEP1 中断
// EnableInterrupts();//使能PIE-EPWM1,使能PIE总中断,PIEACK清零,使能CPU总中断
InitGpio();//对GPIO管脚初始化,GPIO设置为输出
InitAdc();// For this example, init the ADC
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1Cascaded mode
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0B;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
AdcRegs.ADCCHSELSEQ1.all=0x0b;
// Step 5. User specific code, enable interrupts:
// Clear SampleTable
for (i=0; i<BUF_SIZE; i++)
{
SampleTable = 0;
}
// Start SEQ1
AdcRegs.ADCTRL2.all = 0x2000;
Initial_LCD19264();
//DisWords_LCD19264(0,0,"劳动模范考虑");
//DisWords_LCD19264(0,0,"11孟达不给力啊");
//DisWords_LCD19264(1,0,"12陈长兵很给力啊");
//DisWords_LCD19264(2,0,"13孟达小挫男啊");
//DisWords_LCD19264(3,0,"14陈长兵大帅哥啊");
while(1)
{
while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
SampleTable =((AdcRegs.ADCRESULT0>>4) );
i++;
i++;
if(i==256)
{
i=0;
for (j=0; j<BUF_SIZE; j++)
{
SampleTable = 0;
}
}
DELAY_US(20);
}
}
谁知道啊? 好啦。SampleTable数组是16位的,我选错啦,
DSP DATA TYPE应该选16bit unsigned integer,选成32位啦。 OK 谢谢最后解决方法的分享
页:
[1]