打印

采样值还是和内部参考电压值时差不多?

[复制链接]
430|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2016-9-10 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liliang9554|  楼主 | 2016-9-10 21:54 | 只看该作者
为什么不是1.528/3*4096=2086左右呢?

使用特权

评论回复
板凳
dengdc| | 2016-9-10 21:55 | 只看该作者
代码有问题吧

使用特权

评论回复
地板
liliang9554|  楼主 | 2016-9-10 21:57 | 只看该作者
用的官方ADC例程呢

使用特权

评论回复
5
liliang9554|  楼主 | 2016-9-10 21:59 | 只看该作者
更换为外部3V参考电压仅增加了红色区域的代码。请问要如何使用外部3V参考电压呢?

使用特权

评论回复
6
liliang9554|  楼主 | 2016-9-10 22:02 | 只看该作者
12bit的adc,在参考电压与测试电压值都在较稳定的情况下,为什么AD采样值变化如此大?采用硬件多次平均,效果也不是特别好,ad值偏差也有几十个。
unsigned long ref=0xff;
int main(void)
{
     tContext sContext;
     char cText[8];
     unsigned long ulText;
     unsigned long ulADC0_Value[3];
     FPUEnable();
FPULazyStackingEnable();
SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |          SYSCTL_OSC_MAIN);
     CFAL96x64x16Init();
     GrContextInit(&sContext, &g_sCFAL96x64x16);
     GrContextForegroundSet(&sContext, ClrWhite);
     GrContextFontSet(&sContext, &g_sFontFixed6x8);
GrStringDraw(&sContext,"ADC Hands On Lab", -1,1, 5, 0);
GrStringDraw(&sContext,"----------------", -1,1, 15, 0);
GrStringDraw(&sContext,"Ad:", -1,20, 25, 0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
     GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6);
ref=ADCReferenceGet(ADC0_BASE);
   ADCReferenceSet(ADC0_BASE,ADC_REF_EXT_3V);
ref=ADCReferenceGet(ADC0_BASE);
     ADCSequenceConfigure(ADC0_BASE, SEQUENCER, ADC_TRIGGER_PROCESSOR, 0);
   ADCSequenceStepConfigure(ADC0_BASE, SEQUENCER, 0, ADC_CTL_CH7 | ADC_CTL_IE
                       |ADC_CTL_END);
     ADCSequenceEnable(ADC0_BASE, SEQUENCER);
     ADCIntClear(ADC0_BASE, SEQUENCER);
     while(1)
     {
         ADCProcessorTrigger(ADC0_BASE, SEQUENCER);
         while(!ADCIntStatus(ADC0_BASE, SEQUENCER, false))
         {
         }
         ADCSequenceDataGet(ADC0_BASE, SEQUENCER, ulADC0_Value);
         usprintf(cText, " %d    ", ulADC0_Value[0]);
         GrStringDraw(&sContext, cText, -1, 45, 25, 1);
         SysCtlDelay(SysCtlClockGet() / 12);
      GrFlush(&sContext);
     }
}

使用特权

评论回复
7
yszong| | 2016-9-10 22:04 | 只看该作者
楼主用的是A1版本的芯片吧,A1里有个Bug,配置外部参考无效的。

使用特权

评论回复
8
yszong| | 2016-9-10 22:06 | 只看该作者
需要置PB6的AMSEL寄存器。

使用特权

评论回复
9
lizye| | 2016-9-10 22:12 | 只看该作者

嗯,楼主可以加一句:
HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) |= (1 << 6);

使用特权

评论回复
10
liliang9554|  楼主 | 2016-9-10 22:14 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
11
vivilzb1985| | 2016-9-10 23:04 | 只看该作者
一般的不想麻烦的都是采用内部的参考电压。。

使用特权

评论回复
12
lihuami| | 2016-9-12 16:26 | 只看该作者
最好能够使用一个滤波程序。

使用特权

评论回复
13
lihuami| | 2016-9-12 16:30 | 只看该作者
你的这个电压数值是不是有基压。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝