设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5126|回复: 2
打印 上一主题 下一主题

使用采样序列发生器同时采样2路模拟量的问题

[复制链接]

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
跳转到指定楼层
楼主
zyw 发表于 2014-4-10 15:57:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zyw 于 2014-4-10 16:00 编辑

#include "grlib/grlib.h"                        
#include "drivers/lcd_320x240_ili932x.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/fpu.h"
#include "utils/uartstdio.h"
#include "utils/ustdlib.h"               
//-----------------------------------------------------------------------------
// 子函数功能说明:                      串口功能设置  
//-----------------------------------------------------------------------------
void
InitConsole(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);        // 使能GPIO外设
    GPIOPinConfigure(GPIO_PE4_U5RX);                                //        配置串口接收管脚
    GPIOPinConfigure(GPIO_PE5_U5TX);                                //         配置串口发送管脚
    GPIOPinTypeUART(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);//把GPIO功能复用为串口
    UARTStdioInit(5);                                   //设置串口属性
}
//-----------------------------------------------------------------------------
// 主函数   
//-----------------------------------------------------------------------------
int
main(void)
{        tContext sContext;
    tRectangle sRect;
    unsigned long ulADC0_Value[1];
        char cText[10];
//        FPUEnable();               //FPU使能
//    FPULazyStackingEnable();   //使能FPU堆栈  
    SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_16MHZ);          //配置系统时钟
//           lcd_ili932x_init();                                                                                 //初始化LCD驱动
//    GrContextInit(&sContext, &g_sLcdDisplay);//初始化图形库
//                lcd_backlight_on();        
//           lcd_ili932x_flush(&sContext);
//    sRect.sXMin = 0;
//    sRect.sYMin = 0;
//    sRect.sXMax = GrContextDpyWidthGet(&sContext) - 1;
//    sRect.sYMax = 23;                                                                  
//    GrContextForegroundSet(&sContext, ClrDarkBlue);
//    GrRectFill(&sContext, &sRect);                                          //  填充蓝色方块
//    GrContextForegroundSet(&sContext, ClrWhite);
//    GrRectDraw(&sContext, &sRect);                                          //  加白色框框
//    GrContextFontSet(&sContext, &g_sFontCm20);
//    GrStringDrawCentered(&sContext, "ADC out", -1,
//                       GrContextDpyWidthGet(&sContext) / 2, 10, 0);        // 显示ADC输出实验标志
    InitConsole();         // 初始化开发板串口
    UARTprintf("ADC ->\n");
    UARTprintf("  Type: Single Ended\n");
    UARTprintf("  Samples: One\n");
    UARTprintf("  Update Rate: 250ms\n");
    UARTprintf("  Input Pin: AIN17/PH1\n\n");            // 串口显示
//    GrContextFontSet(&sContext, &g_sFontCm20);
//        GrStringDraw(&sContext, "ADC out", -1, 50, 30, 1);
//        GrContextFontSet(&sContext, &g_sFontCm20);
//        GrStringDraw(&sContext, "Type: Single Ended", -1, 50, 60, 1);
//        GrContextFontSet(&sContext, &g_sFontCm20);
//        GrStringDraw(&sContext, "Update Rate: 250ms", -1, 50, 90, 1);
//        GrContextFontSet(&sContext, &g_sFontCm20);
//        GrStringDraw(&sContext, "Input Pin: AIN11/PB5", -1, 50, 120, 1);   // TFT液晶屏显示
   SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);         // 使能ADC0外设,并初始化
   SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);   //GPIO管脚E使能
   GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_1);   // 配置ADC管脚
         GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_0);                                                      在此处加了一路CH16,即PH0
         ADCReferenceSet(ADC0_BASE, ADC_REF_INT  );//此函数设置AD转换的参考电压,不设置默认采用内部参考电压  ADC_REF_INT表示使用片内参考电压
   ADCSequenceConfigure(ADC0_BASE, 2, ADC_TRIGGER_PROCESSOR, 1); // 配置ADC0,采样序列3,ADC处理器触发,优先级为0
   ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH17 | ADC_CTL_IE |
                            ADC_CTL_END);        // CH3,中断使能,对列结束选择,无ADC通道
         ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH16 | ADC_CTL_IE |
                            ADC_CTL_END);        // CH3,中断使能,对列结束选择,无ADC通道           在此处加了一路CH16,即PH0
   ADCSequenceEnable(ADC0_BASE, 2);          //使能ADC采样
   ADCIntClear(ADC0_BASE, 2);         //ADC中断清除
   while(1)
   {   
       ADCProcessorTrigger(ADC0_BASE, 2);        //ADC处理器触发
       while(!ADCIntStatus(ADC0_BASE, 2, false))  //获取中断状态
       {
       }
       ADCSequenceDataGet(ADC0_BASE, 2, ulADC0_Value);        //获取ADC采样数据
       UARTprintf("AIN0 = %4d\r", ulADC0_Value[0]);           //串口显示采样值
////                usprintf(cText, "AIN0 = %4d\r",ulADC0_Value[0]);
////        GrContextFontSet(&sContext, &g_sFontCm20);
////            GrStringDraw(&sContext, cText, -1, 50, 150, 1);          //液晶屏显示采样值
       SysCtlDelay(SysCtlClockGet()/ 12);           // 时钟延迟
   }
}


但是这样调试时,发现不能正常采样,调节电阻器也不起作用,麻烦楼主帮忙解决下,谢谢


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2014-4-10 22:01:37 | 只看该作者
几个参量跟踪一下,看看哪个地方出了问题
回复 支持 反对

使用道具 举报

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
板凳
包子 发表于 2014-6-17 17:57:40 | 只看该作者
我也试了一下,不可以
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-23 02:12 , Processed in 0.139355 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表