S3C2440 AD转换器

发布者:SparklingSun最新更新时间:2016-04-18 来源: eefocus关键字:S3C2440  AD转换器 手机看文章 扫描二维码
随时随地手机看文章
       10 位CMOS ADC(模/数转换器)是一个8 通道模拟输入的再循环类型设备。其转换模拟输入信号为10 位二

进制数字编码,最大转换率为2.5MHz A/D转换器时钟下的 500 KSPS。A/D 转换器支持片上采样-保持功能和掉电
模式的操作。

 

触摸屏在下一篇文章,ADC转换比较简单,这里贴出一个代码

[cpp] view plain copy
 
  1. #include "2440addr.h"  
  2. #include "2440lib.h"  
  3. #include "def.h"  
  4.   
  5. //=====================================================================  
  6. //名称:ADC_Select(int ch, U32 preScaler)  
  7. //功能:选择转换通道,转换器预分频值设置  
  8. //参数: ch :转换通道  preScaler:预分频值  
  9. //返回值:无  
  10. //=======================================================================  
  11.   
  12. void ADC_Select(int ch, U32 preScaler)  
  13. {  
  14.     rADCCON=(1<<14)|(preScaler<<6)|(ch<<3);     
  15. }  
  16. //=======================================================================  
  17. //名称:AD_ENABLE()  
  18. //功能:采用置位使能方式启动AD转换  
  19. //参数: 无  
  20. //返回值: 转换后的值  
  21. //=======================================================================  
  22. int AD_ENABLE(void)  
  23. {  
  24.     int i;  
  25.     int val=0;  
  26.       
  27.     for(i=0;i<16;i++)  
  28.     {  
  29.         rADCCON |=0x1;  //使能ADC转换  
  30.           
  31.         while(rADCCON & 0x1); //判断使能ADC转换后被清零  
  32.           
  33.         while(!(rADCCON &0x8000)); //等待转换结束  
  34.           
  35.         val +=(rADCDAT0 & 0x3ff);   //读取ADC转换的值  
  36.           
  37.     }  
  38.     val = val/16;   //计算ADC转换值  
  39.       
  40.     return val;  
  41. }  
  42.   
  43. //=======================================================================  
  44. //名称:AD_READ()  
  45. //功能:采用读控制器的方式启动AD转换  
  46. //参数: 无  
  47. //返回值:转换后的值  
  48. //=======================================================================  
  49. int AD_READ(void)  
  50. {  
  51.     int i;  
  52.     int temp,val=0;  
  53.       
  54.     rADCCON |=0x2;  //ADC转换通过读操作来启动  
  55.     temp= rADCDAT0 & 0x3ff; //启动ADC  
  56.       
  57.     for(i=0;i<16;i++)  
  58.     {  
  59.         rADCCON |=0x1;  //使能ADC转换  
  60.           
  61.         while(rADCCON & 0x1); //判断使能ADC转换后被清零  
  62.           
  63.         while(!(rADCCON &0x8000)); //等待转换结束  
  64.           
  65.         val +=(rADCDAT0 & 0x3ff);   //读取ADC转换的值  
  66.           
  67.     }  
  68.     val = val>>4; //计算ADC转换值  
  69.       
  70.     return val;  
  71. }  
  72.       
  73.   
  74. void Main(void)  
  75. {  
  76.     int temp_val;  
  77.     U8 mode;  
  78.     SelectFclk(2);  //设置系统时钟 400M       
  79.     ChangeClockDivider(2, 1);      //设置分频 1:4:8  
  80.     CalcBusClk();           //计算总线频率  
  81.       
  82.     rGPHCON &=~((3<<4)|(3<<6));     
  83.     rGPHCON |=(2<<4)|(2<<6);    //GPH2--TXD[0];GPH3--RXD[0]     
  84.         
  85.     rGPHUP=0x00;        //使能上拉功能  
  86.           
  87.     Uart_Init(0,115200);  
  88.     Uart_Select(0);  
  89.       
  90.     while(1)  
  91.     {  
  92.         ADC_Select(2, 49);  
  93.         Uart_Printf("Select ADC Mode: 1.Enable  2.Read\n");  
  94.         mode=Uart_Getch();  
  95.         Uart_Printf("\n%c\n\n", mode);  
  96.       
  97.         if (mode!='1' && mode !='2')  
  98.         {  
  99.             Uart_Printf("you select wrong model!\n");  
  100.             return;  
  101.         }  
  102.       
  103.         switch(mode)  
  104.         {  
  105.             case '1':  
  106.                 Uart_Printf("ADC Enable-Convert Mode\n");  
  107.                 temp_val=AD_ENABLE();  
  108.                 break;  
  109.             case '2':  
  110.                 Uart_Printf("ADC Read-Convert Mode\n");  
  111.                 temp_val=AD_READ();  
  112.                 break;  
  113.         }  
  114.         Uart_Printf("ADC val = %d\n", temp_val);  //发送到串口显示  
  115.     }  
  116. }  
  117.               


 

关键字:S3C2440  AD转换器 引用地址:S3C2440 AD转换器

上一篇:S3C2440 LCD字符显示
下一篇:S3C2440驱动4.3寸TFT屏程序

推荐阅读最新更新时间:2024-03-16 14:50

基于OHCI协议的S3C2440 USB Host Driver之协议介绍(三)
OpenHCI通过两级仲裁在端点中选择哪一个服务。第一级是表级。每一个需要服务的端点类型在相应的类型表里。HC选择服务哪一个表。而在表内,端点都有差不多公平的机会被访问到。HCD通知设置HcPeriodicStart限制从帧开始到开始要服务周期表的时间。周期表服务时,当前帧下,中断表优先于同步表。当周期表服务完,控制和批量有可能会接着服务。 ED作为锚点,供一列TD依附在其上。当HC访问ED且找到一个有效的TD地址,HC完成与指定ED的单笔事务,TD表明了内存地址。 当一个TD所定义的所有数据都传输完,TD从他的ED上解下,且连到完成队列。 ED描述符 FA就是设备地址 EN就是端点地址 D为方向 S
[单片机]
基于OHCI协议的<font color='red'>S3C2440</font> USB Host Driver之协议介绍(三)
s3c2440裸机-内存控制器(三-4、norflash编程之实现)
1.识别norflash 我们知道要识别norflash属性,要让norflash进入cfi模式,然后按照手册上的表格发送一系列的命令就能获取norflash属性。 1)发送命令 那么我们需要实现一个cpu向nor发命令的一个函数nor_cmd()。我们的norflash是16bit位宽的,所以访问nor是以16位为单位访问的。 #define NOR_FLASH_BASE 0 /* jz2440, nor-- cs0, base addr = 0 */ /* 比如: 55H 98 ** 本意是: 往(0 + (0x55) 1)写入0x98 */ void nor_write_word(unsigned int b
[单片机]
<font color='red'>s3c2440</font>裸机-内存控制器(三-4、norflash编程之实现)
S3C2440的SDRAM驱动 
SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存。内存的工作原理、控制时序、及相关控制器的配置方法一直是嵌入式系统学习、开发过程中的一个难点。我们从其硬件的角度来分析其原理,然后再引出SDRAM的驱动编写过程。 内存是代码的执行空间,以PC机为例,程序是以文件的形式保存在硬盘里面的,程序在运行之前先由操作系统装载入内存中,由于内存是RAM(随机访问存储器),可以通过地址去定位一个字节的数据,CPU在执行程序时将PC的值设置为程序在内存中的开始地址, CPU会依次的从内存里取址,译码,执行,在内存没有被初始化之前,内存好比是未建好的房子,是不能读
[单片机]
<font color='red'>S3C2440</font>的SDRAM驱动 
基于嵌入式S3C2440的船舶导航系统设计
       文章在以ARMS3C2440为核的硬件平台上应用Linux操作系统开发了船舶导航系统,完成了系统的硬件设计、软件设计、交叉编译环境的建立、引导程序的移植、内核的移植、驱动程序的编写和根文件系统的建立等,实现了系统的功能。         1.前言        集计算机技术、通信技术、微电子技术等多种技术为一体的嵌入式技术进入到了一个飞速发展的阶段,嵌入式系统已被广泛应用到了航空、消费电子、信息家电、网络通信等各个领域。ARMS3C2440ARM是嵌入式处理器是性价比较优秀的芯片,在各个领域的开发应用有着广阔的应用前景。        船舶导航技术也应随着科学技术背景的改变不断地向着高性能稳定性的方面发展,潜
[嵌入式]
s3c2440——按键中断
s3c2440的异常向量表: IRQ中断地址是0x18.所以,根据之前的异常处理方式,我们编写启动文件: 为什么需要lr减4,可以参考这篇文章: http://blog.csdn.net/zzsfqiuyigui/article/details/23334177 这是为了保证,当cpu正在执行某条指令时被中断打断,中断返回的时候,要继续执行这条被打断的指令,如果不减去4,cpu处理完中断之后,将会在被打断执行的这条指令的下一条指令开始执行(因为lr_irq保存的是下一条指令执行的地址),就会丢失掉这个被打断指令的执行,所以,保存中断处理完毕的返回地址很重要。 void handle_irq_c(void) {
[单片机]
<font color='red'>s3c2440</font>——按键中断
s3C2440 Memory controller
硬件设计篇 首先是BANK0 的选择, 如果是把BANK0 选择连接NAND Flash,需要引脚OM1 和OM0的状态 如果是都设置成0 是NAND FLASH 模式。。 NANDFlash 模式会自动的 NANDFLASH前4MB的内容拷贝到内存中来。 其次是S3C2440 的SDRAM的引脚如下: nSRAS: SDRAM行选择引脚  nSCAS: SDRAM 列选择引脚 nSCS: 片选信号 DQM : 掩码,就是为了屏蔽不需要的位, 比如一个连接了32位的芯片需要写入一个8bit的数据,那么其他的的位就会被掩码屏蔽 SCLK:时钟 SCKE: 时钟使能 nBE :DATA mask。 因为每次SDRAM只能从内核
[单片机]
s3c2440裸机-LCD编程(五、LCD上实现画点、线、圆)
1.画点 无论是何种图形,都是基于点来构成的,因此我们需要先实现画点,其他的都是上层的一些数据处理了,像各种图形、甚至色彩鲜艳的图片无非都是一些由点构造出的数据而已。 我们在在farmebuffer.c实现画点,在geomentry.c实现画线、画圆等几何图形,font.c实现画字。 那么一个像素点要显示到lcd上,我们要知道它的位置坐标,然后还要知道它的颜色值,假设该像素点的坐标为(x,y),那么该像素的地址为: (x,y)= fb_base + (xres*(bpp/8))*y +x*bpp/8; 那么所以在画点前需要先获取lcd参数:fb_base、xres、yres、bpp; static unsigned
[单片机]
<font color='red'>s3c2440</font>裸机-LCD编程(五、LCD上实现画点、线、圆)
基于S3C2440微处理器的工业超声探伤仪设计
  超声探伤仪广泛应用在航空航天、石油化工、冶金造船等行业,用于检测金属或非金属内部缺陷以及分析材质,是无损检测领域重要的检测仪器之一。   超声探伤时,应用得最多的是A型显示,如图1所示。在A型显示中,横坐标代表被测物的深度,纵坐标代表回波信号的幅度。   目前同内生产的数字式超声探伤仪仍主要以单片机为核心,单片机固有的性能瓶颈制约了仪器的性能指标和功能扩展,与国外先进水平相比,国产产品技术水平仍有较大的差距。   本文介绍的新型嵌入式数字超声探伤仪以32位RISC CPUS3C2440为控制中心,以高性能FPGA Spartan3为信号采集及处理核心,并辅以功能强大的Linux操作系统和MiniGUI图形库,实现了一
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved