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.

关于TM4C1294XL ADC



配置ADC  代码如下,单步的时候查看ui32ACCValues里的值,只有三个在变化,是我哪里配置错误了吗? 
 
   g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ |
                                             SYSCTL_OSC_MAIN |
                                             SYSCTL_USE_PLL |
                                             SYSCTL_CFG_VCO_480), 120000000);
    ui32PWMClock = ui32SysClkFreq / 64;

    //配置ADC
	SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
	GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_0| GPIO_PIN_1 | GPIO_PIN_2);
	GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
	ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 4, ADC_CTL_CH7);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 5, ADC_CTL_CH6);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 6, ADC_CTL_CH5);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH3);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH2);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_CH1|ADC_CTL_IE|ADC_CTL_END);
	ADCSequenceEnable(ADC0_BASE, 1);
	while(1)
	{
		ADCIntClear(ADC0_BASE, 1);
		ADCProcessorTrigger(ADC0_BASE, 1);
		while(!ADCIntStatus(ADC0_BASE, 1, false))
		{
		}
		ADCSequenceDataGet(ADC0_BASE, 1, ui32ACCValues);
	}

  • 没有人么。。。。

  • 来人啊!帮帮忙啊!

  • 光看例程的话,该配置的都配置完了,具体你ADC不启动

    1.查看官方给的例程,看看ADC初始化过程中你配置的先后顺序,TIVA系列对这个很敏感的,初始化顺序错了也有影响

    2.单独调试,跟踪寄存器看看,哪个寄存器没初始化OK呢

  • 给你个可以用的例程

    //模数转换器实验程序解析
    //头文件
    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_types.h"
    #include "inc/hw_memmap.h"
    #include "driverlib/fpu.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/rom.h"
    #include "driverlib/pin_map.h"
    #include "grlib/grlib.h"
    #include "drivers/cfal96x64x16.h"
    #include "driverlib/gpio.h"
    #include "driverlib/adc.h"
    #include "inc/hw_gpio.h"
    
    int main(void)
    {
      tContext sContext;
      tRectangle sRect;
      ui32 ulADC0_Value;
      ui8 ulADC0_v[8];
      ui32 i,j;
      const char chars[16]={"0123456789ABCDEF"};
        
      //使能FPU
      FPUEnable();  
      FPULazyStackingEnable();
    
      //设置系统时钟为50MHz (400/2/4=50)
      ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | 
                         SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
    
      //初始化ADC0/PE3
      ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); 
      ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
      ROM_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
      //设置ADC参考电压为外部3V
      ROM_ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);    
      //配置ADC采集序列
      ROM_ADCSequenceConfigure(ADC0_BASE, 0, 
                       ADC_TRIGGER_PROCESSOR, 0);  
      ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0 | 
                       ADC_CTL_END | ADC_CTL_IE);
      //使能ADC采集序列
      ROM_ADCSequenceEnable(ADC0_BASE, 0);  
      ROM_ADCIntClear(ADC0_BASE, 0);     
      ROM_ADCIntEnable(ADC0_BASE, 0);     
        
      //初始化显示模块
      CFAL96x64x16Init();
      GrContextInit(&sContext, &g_sCFAL96x64x16);  
     while(1)
     {   
       //触发采集
       ADCProcessorTrigger(ADC0_BASE, 0);  
       //等待采集结束
       while(!ADCIntStatus(ADC0_BASE, 0, false)) ;
       //获取采集结果
       ADCSequenceDataGet(ADC0_BASE, 0, &ulADC0_Value);
       //将采集结果从32位无符号数转化为char
       i=28;
       for(j=0;j<8;j++)
       {
         ulADC0_v[j]=chars[(ulADC0_Value>>i)&0xf];
         i-=4;
       }
       //延时
       SysCtlDelay(SysCtlClockGet() / 12);
    
      //屏幕的上面24行填充蓝色覆盖上次的显示结果
      sRect.i16XMin = 0;
      sRect.i16YMin = 0;
      sRect.i16XMax = GrContextDpyWidthGet(&sContext) - 1;
      sRect.i16YMax = 23;
      GrContextForegroundSet(&sContext, ClrDarkKhaki);
      GrRectFill(&sContext, &sRect);
    
      //在颜色块的边缘放置白框
      GrContextForegroundSet(&sContext, ClrWhite);
      GrRectDraw(&sContext, &sRect);
    
      //显示工程名称和采集结果
      GrContextFontSet(&sContext, g_psFontCm12);
      GrStringDrawCentered(&sContext, ulADC0_v, 8,
                  GrContextDpyWidthGet(&sContext) / 2, 10, 0);
      GrStringDrawCentered(&sContext, "ADC Results", -1,
                  GrContextDpyWidthGet(&sContext) / 2,
                  ((GrContextDpyHeightGet(&sContext) - 24) / 2) + 24, 0);
    
     //更新显示
     GrFlush(&sContext);
       }
    }