11511|20

471

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

LM3S811使用心得之ADC [复制链接]

从参加抢LM3S811的活动后,每天都期待啊,终于在4.26的下午,顺风快递发来信息去取快递,其实已经料到是811到啦,好兴奋的跑到校门口外迎接顺风,领到包裹后,回寝室迫不及待的打开它,没错是811 。用811把我以前的LCD有重新驱动了起来,下面是我这几天学习811ADC部分的心得,Stellaris系列ARM 的 ADC 模块提供系列特性: 
4 个模拟输入通道 ,可 配置 单端和差分输入,  内部温度传感器 ,高达500k/s 的采样率 ,4个可编程的采样转换序列, 入口长度1到8, 每个序列均带有相应的转换结果FIFO 
  灵活的触发控制:处理器(软件) 、定时器、模拟比较器、PWM、GPIO , 硬件可对多达 64 个采样值进行平均计算(牺牲速度换取精度) ,转换器采用内部的 3V参考电压 

干脆就直接上程序
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "utils/uartstdio.h"
#include "MyFolder/ssd1963.h"
#include "MyFolder/color.h"
#include "MyFolder/imags.h"
#include "driverlib/adc.h"
#include "driverlib/interrupt.h"
#include "MyFolder/timer_x.h"
#include "driverlib/systick.h"
unsigned long TheSysClock;
unsigned long Flag; //ADC 转换结束的标志
//串口初始化
void uartInit()
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); 
    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
    UARTStdioInit(0);
}
//ADC  初始化
void ADC_Init()
{
  SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);//   使能ADC
  SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); //   设置ADC 采样速率  
  ADCSequenceDisable(ADC_BASE,0);             //   配置前先禁止采样序列
//   采样序列配置:ADC基址,采样序列编号,触发事件,采样优先级
  ADCSequenceConfigure(ADC_BASE,0,ADC_TRIGGER_TIMER,0);
//    ADC采样序列步进配置:ADC基址,采样序列0,步值,采样通道,我采用的是多通道采样,单通道采样类似
  ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_CH0);//采样ADC0
  ADCSequenceStepConfigure(ADC_BASE, 0, 1, ADC_CTL_CH1);//采样ADC1
  ADCSequenceStepConfigure(ADC_BASE, 0, 2, ADC_CTL_CH2);//采样ADC2
  ADCSequenceStepConfigure(ADC_BASE, 0, 3, ADC_CTL_CH3 //第4步:采样ADC3后
                                           |ADC_CTL_END //结束,并
                                           | ADC_CTL_IE); // 申请中断
                                                            
                                                          
                          
  ADCSequenceEnable(ADC_BASE,0);//   使能采样序列
  ADCIntEnable(ADC_BASE, 0);//   使能ADC 采样序列中断
  IntEnable(INT_ADC0);//使能ADC 中断 
  IntMasterEnable();//   使能处理器中断
}
//   ADC采样:
void  ADC_Sample(unsigned long ulValue[])
{
  while (!Flag); //   等待采样结束
  Flag = 0;     //   清除ADC采样结束标志
  ADCSequenceDataGet(ADC_BASE, 0, ulValue);//    自动读取全部ADC结果 
}
void main()
{
  unsigned long Value[4],ulValue;
  unsigned char i;
  SysCtlClockSet(SYSCTL_USE_PLL | SYSCTL_OSC_MAIN\
                 |SYSCTL_SYSDIV_12|SYSCTL_XTAL_6MHZ); //时钟初始化:PLL,16.67MHz
  TheSysClock= SysCtlClockGet();
  uartInit();//串口初始化
  ADC_Init();//ADC  初始化
  timerInt();//定时器初始化
  LCD_GPIOInt();//LCD PORT口初始化
  LCD_ini();    //LCD初始化
  LCDClearScreen(ClrGreen); //清屏
  LCD_PutCHAR(100,80,"EEWORLD", ClrWhite,ClrGreen);
  while(1)
  {
    i=0;
    ADC_Sample(Value);
    for(;i<4;i++)
    {
      ulValue=Value*3000/1024;    //   转换成电压值
      UARTprintf("ADC%d Voltage is:%d\n",i,ulValue);//串口输出
      SysCtlDelay(1500*TheSysClock/3000);//延时约1500ms
    }
  }
}

void ADC_ISR(void)
{
 unsigned long ulStatus;
 ulStatus = ADCIntStatus(ADC_BASE, 0, true);     //   读取中断状态
 ADCIntClear(ADC_BASE, 0);        //    清除中断状态,重要
 if (ulStatus != 0)           //   如果中断状态有效
  {
     Flag = true;         //    置位ADC 采样结束标志
  }
}
还在学习其他部分,待续
下面是通过串口显示的采样电压值

  

[ 本帖最后由 zw357234798 于 2011-5-3 23:24 编辑 ]

最新回复

如果我有两个信号,一个经过adc1 采样,一个经过adc2采样。分别把电压值从oled输出,我该怎么办呀?  详情 回复 发表于 2013-5-8 05:32
 
点赞 关注(1)

回复
举报

104

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

你好,请教问题

求助!!!!!

你好,请教问题

请问LM3S811评估板的驱动怎么装?因为我电脑光驱坏了,所以我通过U盘拷的光盘内容,但我不知道里面那个文件是驱动,谢谢!!

 
 

回复

246

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

回复 沙发 bianyuan2010 的帖子

https://bbs.eeworld.com.cn/viewt ... xtra=page%3D1%26amp;filter%3Dtype%26amp;typeid%3D9
我以前发过 第三个就是 里面就有811的驱动
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

4
 

原帖由 bianyuan2010 于 2011-5-2 18:48 发表 求助!!!!! 你好,请教问题请问LM3S811评估板的驱动怎么装?因为我电脑光驱坏了,所以我通过U盘拷的光盘内容,但我不知道里面那个文件是驱动,谢谢!!

 

J:\Tools\FTDI

 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

5
 

原帖由 bianyuan2010 于 2011-5-2 18:48 发表 求助!!!!! 你好,请教问题请问LM3S811评估板的驱动怎么装?因为我电脑光驱坏了,所以我通过U盘拷的光盘内容,但我不知道里面那个文件是驱动,谢谢!!

 

J:\Documentation\READMEFirst-LM3S811-Eval-Kit.pdf

 
 
 

回复

471

帖子

0

TA的资源

一粒金砂(高级)

6
 

回复 沙发 bianyuan2010 的帖子

选择手动更新驱动,选择驱动文件LM3S811\Tools\FTDI就行了
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

7
 
很好顶顶明天启程回校后天就能看到我期待的宝贝了哈哈
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

8
 
问个问题,ADCHardwareOversampleConfigure(ADC_BASE,32);在这用途是什么?后面步值配置也不是过采样的啊
 
 
 

回复

471

帖子

0

TA的资源

一粒金砂(高级)

9
 
不好意思,那句是我进行硬件过采样时用的,忘了注释掉
 
 
 

回复

1万

帖子

16

TA的资源

版主

10
 

楼主水平可以啊?把液晶都驱动了

点评

可否请问下ADC多通道采样问题? // ADC采样序列步进配置:ADC基址,采样序列0,步值,采样通道 ADCSequStepConfig(ADC_BASE, 0, 0, ADC_CTL_CH0); // 第0步:采样ADC0 ADCSequStepConfig(ADC_BASE, 0, 1, ADC_  详情 回复 发表于 2012-10-18 11:56
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

471

帖子

0

TA的资源

一粒金砂(高级)

11
 
原来弄过些
 
 
 

回复

7219

帖子

192

TA的资源

五彩晶圆(高级)

12
 
介绍的不够详细 我有点迷糊
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

13
 
原帖由 慢慢来 于 2011-5-3 16:35 发表 问个问题,ADCHardwareOversampleConfigure(ADC_BASE,32);在这用途是什么?后面步值配置也不是过采样的啊
过采样:就是从信号中采集额外的转换数据。通过多数据求平均来提高信噪比,从而提高采集精度,但是相应的时机采样频率也会降低,典型的牺牲速度提高精度的方法,有两种软件过采样和硬件过采样!
 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

14
 

回复 13楼 confuciounxk 的帖子

说得不错。。ADC使用手册上面都有哈。以前一直用ZLG的手册。
虽然错多了一点,但还将就吧。
 
个人签名只有想不到,没有做不到。
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

15
 

回复 楼主 zw357234798 的帖子

ADC温度转换公式
T =(151040 - 225 × N)/ 1024
ADC配置为温度传感器模式后,只要得到10位采样值N,就能推算出摄氏温度T

lm3s811片内AD采集外部信号时转换公式是怎样的?
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

16
 

请教楼主

最近刚用LM3S811 ,不懂ADC采样,请问楼主:采样转换序列, 入口长度1到8,与模拟通道是什么关系啊
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

17
 
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

18
 

UARTprintf(0此函数是自己编的吗?

楼主,请问UARTprintf()这个函数是自己编的吗?能否把这段代码贴出来,谢谢您了啊!!!!
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

19
 

回复 10楼 ddllxxrr 的帖子

可否请问下ADC多通道采样问题?

// ADC采样序列步进配置:ADC基址,采样序列0,步值,采样通道
ADCSequStepConfig(ADC_BASE, 0, 0, ADC_CTL_CH0); // 第0步:采样ADC0
ADCSequStepConfig(ADC_BASE, 0, 1, ADC_CTL_CH1); // 第1步:采样ADC1
ADCSequStepConfig(ADC_BASE, 0, 2, ADC_CTL_CH0 |     // 第2步:再次采样ADC0后
                                    ADC_CTL_END |      // 结束,并
                                       ADC_CTL_IE);     // 申请中断
这个的话是采样第2步结束,如果我想采样10次呢?步值最大只有7,这个要怎么配置?
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

20
 
我有个问题,如果我想从ADC2采样,比如给ADC1连一个3v电压, ADC的初始化咋弄呀
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表