微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 如何确定TMS320F28335 AD模块是否工作?

如何确定TMS320F28335 AD模块是否工作?

时间:10-02 整理:3721RD 点击:
我在使用ICETEK-F28335-A实验板,以及SEED-XD560PLUS仿真器,在CCS4.2.0027 (UNLICENSED)中成功进入DEBUG,调试TI官方的例程

FILE:   Example_2823xAdcSeqModeTest.c //                    // TITLE:  DSP2823x ADC Seq Mode Test.

编译不报错无警告,但是无法完成AD转换,连随机电平都读不到,我怀疑是AD整体不工作,观察AdcRegs.ADCTRL2.bit.SOC_SEQ1及AdcRegs.ADCRESULT0,其中AdcRegs.ADCTRL2.bit.SOC_SEQ1一直为1,而AdcRegs.ADCRESULT0一直为0







上程序





#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

// 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   2048  // Sample buffer size

// Global variable for this example Uint16 SampleTable[BUF_SIZE];

main() {    Uint16 i;

// Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP2833x_SysCtrl.c file.    InitSysCtrl();

// Specific clock setting for this example:    EALLOW;    SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK    EDIS;

// Step 2. Initialize GPIO: // This example function is found in the DSP2833x_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio();  // Skipped for this example

// Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts    DINT;

// Initialize the PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the DSP2833x_PieCtrl.c file.    InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:    IER = 0x0000;    IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example.  This is useful for debug purposes. // The shell ISR routines are found in DSP2833x_DefaultIsr.c. // This function is found in DSP2833x_PieVect.c.    InitPieVectTable();

// Step 4. Initialize all the Device Peripherals: // This function is found in DSP2833x_InitPeripherals.c // InitPeripherals(); // Not required for this example    InitAdc();  // For this example, init the ADC

// Specific ADC setup for this example:    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 = 0x0;     //选择A2    AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

// Step 5. User specific code, enable interrupts:

// Clear SampleTable    for (i=0; i >4) );                  }    } }

//=========================================================================== // No more. //===========================================================================



感觉程序问题不大,纠结了一个多星期不知道问题出在哪儿,求帮助~~~~~~~~~~~~~要毕不了业了!QQ 342811994

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top