S3C2440 AD转换器
时间:11-21
来源:互联网
点击:
10 位CMOS ADC(模/数转换器)是一个8 通道模拟输入的再循环类型设备。其转换模拟输入信号为10 位二
进制数字编码,最大转换率为2.5MHz A/D转换器时钟下的 500 KSPS。A/D 转换器支持片上采样-保持功能和掉电
模式的操作。
触摸屏在下一篇文章,ADC转换比较简单,这里贴出一个代码
[cpp]view plaincopy
- #include"2440addr.h"
- #include"2440lib.h"
- #include"def.h"
- //=====================================================================
- //名称:ADC_Select(intch,U32preScaler)
- //功能:选择转换通道,转换器预分频值设置
- //参数:ch:转换通道preScaler:预分频值
- //返回值:无
- //=======================================================================
- voidADC_Select(intch,U32preScaler)
- {
- rADCCON=(1<14)|(preScaler<6)|(ch<3);
- }
- //=======================================================================
- //名称:AD_ENABLE()
- //功能:采用置位使能方式启动AD转换
- //参数:无
- //返回值:转换后的值
- //=======================================================================
- intAD_ENABLE(void)
- {
- inti;
- intval=0;
- for(i=0;i<16;i++)
- {
- rADCCON|=0x1;//使能ADC转换
- while(rADCCON&0x1);//判断使能ADC转换后被清零
- while(!(rADCCON&0x8000));//等待转换结束
- val+=(rADCDAT0&0x3ff);//读取ADC转换的值
- }
- val=val/16;//计算ADC转换值
- returnval;
- }
- //=======================================================================
- //名称:AD_READ()
- //功能:采用读控制器的方式启动AD转换
- //参数:无
- //返回值:转换后的值
- //=======================================================================
- intAD_READ(void)
- {
- inti;
- inttemp,val=0;
- rADCCON|=0x2;//ADC转换通过读操作来启动
- temp=rADCDAT0&0x3ff;//启动ADC
- for(i=0;i<16;i++)
- {
- rADCCON|=0x1;//使能ADC转换
- while(rADCCON&0x1);//判断使能ADC转换后被清零
- while(!(rADCCON&0x8000));//等待转换结束
- val+=(rADCDAT0&0x3ff);//读取ADC转换的值
- }
- val=val>>4;//计算ADC转换值
- returnval;
- }
- voidMain(void)
- {
- inttemp_val;
- U8mode;
- SelectFclk(2);//设置系统时钟400M
- ChangeClockDivider(2,1);//设置分频1:4:8
- CalcBusClk();//计算总线频率
- rGPHCON&=~((3<4)|(3<6));
- rGPHCON|=(2<4)|(2<6);//GPH2--TXD[0];GPH3--RXD[0]
- rGPHUP=0x00;//使能上拉功能
- Uart_Init(0,115200);
- Uart_Select(0);
- while(1)
- {
- ADC_Select(2,49);
- Uart_Printf("SelectADCMode:1.Enable2.Read\n");
- mode=Uart_Getch();
- Uart_Printf("\n%c\n\n",mode);
- if(mode!=1&&mode!=2)
- {
- Uart_Printf("youselectwrongmodel!\n");
- return;
- }
- switch(mode)
- {
- case1:
- Uart_Printf("ADCEnable-ConvertMode\n");
- temp_val=AD_ENABLE();
- break;
- case2:
- Uart_Printf("ADCRead-ConvertMode\n");
- temp_val=AD_READ();
- break;
- }
- Uart_Printf("ADCval=%d\n",temp_val);//发送到串口显示
- }
- }
S3C2440AD转换 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)