搜索
bottom↓
回复: 0

关于LM3S1138测电压遇到的问题

[复制链接]

出0入0汤圆

发表于 2012-7-16 17:52:26 | 显示全部楼层 |阅读模式
这个程序是周立功给的示例程序,我把显示的改为了1602,程序不长哈,大家帮我看下,谢谢
#include  "systemInit.h"
#include  "lcd1602.h"
#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_ints.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <hw_timer.h>
#include  <interrupt.h>
#include  <sysctl.h>
#include  <gpio.h>
#include  <adc.h>
#include  <stdio.h>


#define  ADCSequEnable          ADCSequenceEnable
#define  ADCSequDisable         ADCSequenceDisable
#define  ADCSequConfig          ADCSequenceConfigure
#define  ADCSequStepConfig      ADCSequenceStepConfigure
#define  ADCSequDataGet         ADCSequenceDataGet


tBoolean ADC_EndFlag = false;                               //  定义ADC转换结束的标志


//  ADC初始化
void adcInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_ADC);                    //  使能ADC模块
    SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);             //  设置ADC采样速率
    ADCSequDisable(ADC_BASE, 0);                            //  配置前先禁止采样序列

    //  采样序列配置:ADC基址,采样序列编号,触发事件,采样优先级
    ADCSequConfig(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);

    //  采样步进设置:ADC基址,采样序列编号,步值,通道设置
    ADCSequStepConfig(ADC_BASE, 0, 0, ADC_CTL_D |           //  差分输入采样
                                      ADC_CTL_CH1 |         //  差分通道1:ADC2和ADC3
                                      ADC_CTL_END |
                                      ADC_CTL_IE);

    ADCIntEnable(ADC_BASE, 0);                              //  使能ADC中断
    IntEnable(INT_ADC0);                                    //  使能ADC采样序列中断
    IntMasterEnable();                                      //  使能处理器中断

    ADCSequEnable(ADC_BASE, 0);                             //  使能采样序列
}


//  ADC采样
unsigned long adcSample(void)
{
    unsigned long ulValue;

    ADCProcessorTrigger(ADC_BASE, 0);                       //  处理器触发采样序列
    while (!ADC_EndFlag);                                   //  等待采样结束
    ADC_EndFlag = false;                                    //  清除ADC采样结束标志
    ADCSequDataGet(ADC_BASE, 0, &ulValue);                  //  读取ADC转换结果

    return(ulValue);
}


//  主函数(程序入口)
int main(void)
{
    int iVal;
    //char cBuf[30];

    jtagWait();                                             //  防止JTAG失效,重要!
    clockInit();                                            //  时钟初始化:PLL,20MHz
    adcInit();                                              //  ADC初始化
    initlcd1602();
   
    for (;;)
    {
        iVal = adcSample();                                 //  ADC采样
        //iVal = iVal - 0x1FF;                                //  转换成差分数值
        iVal = (iVal * 3000) / 1024;                        //  转换成电压值
        //sprintf(cBuf, "ADC0 = %d(mV)\r\n", iVal);           //  输出格式化
        //uartPuts(cBuf);                                     //  通过UART显示结果
        display(iVal);                                             //通过1602显示侧得的电压差
        SysCtlDelay(1500 * (TheSysClock / 3000));           //  延时约1500ms
    }
}


//  ADC采样序列0的中断
void ADC_Sequence_0_ISR(void)
{
    unsigned long ulStatus;

    ulStatus = ADCIntStatus(ADC_BASE, 0, true);             //  读取中断状态
    ADCIntClear(ADC_BASE, 0);                               //  清除中断状态,重要

    if (ulStatus != 0)                                      //  如果中断状态有效
    {
        ADC_EndFlag = true;                                 //  置位ADC采样结束标志
    }
}

我发现了一个问题,它这个示例程序是在给定1.5v(管教AD3)的固定情况下测的差分电压,另外一个管教AD2通过函数adcSample()得到,我把iVal = iVal - 0x1FF;  这句话注释掉了,那么就是参考电压是0v了,测得的就是外面输入的电压。测试的数据结果就是标题那样,有错误。然后测量的结果是输入3v,0v测得3v,输入0v,0v侧得是随机的数字,有时数据为9左右。。。
如果把参考电压管教也改为通过函数adcSample()得到,该怎么办(我不明白的是adcSample这个函数为什么就是管教AD2的电压值,而不是AD3的电压值),要得到输入管教AD3的电压又该怎样得到

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 08:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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