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.

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_SHCLK  0xf   // 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[BUF_SIZE];
    INT8U  qian,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,使能INT3  EPWM1_INT,使能INT5  EQEP1 中断
       // 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;        // 1  Cascaded 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[i] = 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[i] =((AdcRegs.ADCRESULT0>>4) );
                    i++;
            
                   
                    i++;
                    if(i==256)
                    {
                      i=0;
                      for (j=0; j<BUF_SIZE; j++)
                       {
                         SampleTable[i] = 0;
                       }
                    }
                    DELAY_US(20);
            }

    }


  • 高手支招啊!

  • 好啦。SampleTable数组是16位的,我选错啦,
    DSP DATA TYPE应该选16bit unsigned integer,选成32位啦。

  • 好啦。SampleTable数组是16位的,我选错啦,
    DSP DATA TYPE应该选16bit unsigned integer,选成32位啦。