进制数字编码,最大转换率为2.5MHz A/D转换器时钟下的 500 KSPS。A/D 转换器支持片上采样-保持功能和掉电
模式的操作。
触摸屏在下一篇文章,ADC转换比较简单,这里贴出一个代码
- #include "2440addr.h"
- #include "2440lib.h"
- #include "def.h"
- //=====================================================================
- //名称:ADC_Select(int ch, U32 preScaler)
- //功能:选择转换通道,转换器预分频值设置
- //参数: ch :转换通道 preScaler:预分频值
- //返回值:无
- //=======================================================================
- void ADC_Select(int ch, U32 preScaler)
- {
- rADCCON=(1<<14)|(preScaler<<6)|(ch<<3);
- }
- //=======================================================================
- //名称:AD_ENABLE()
- //功能:采用置位使能方式启动AD转换
- //参数: 无
- //返回值: 转换后的值
- //=======================================================================
- int AD_ENABLE(void)
- {
- int i;
- int val=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转换值
- return val;
- }
- //=======================================================================
- //名称:AD_READ()
- //功能:采用读控制器的方式启动AD转换
- //参数: 无
- //返回值:转换后的值
- //=======================================================================
- int AD_READ(void)
- {
- int i;
- int temp,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转换值
- return val;
- }
- void Main(void)
- {
- int temp_val;
- U8 mode;
- 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("Select ADC Mode: 1.Enable 2.Read\n");
- mode=Uart_Getch();
- Uart_Printf("\n%c\n\n", mode);
- if (mode!='1' && mode !='2')
- {
- Uart_Printf("you select wrong model!\n");
- return;
- }
- switch(mode)
- {
- case '1':
- Uart_Printf("ADC Enable-Convert Mode\n");
- temp_val=AD_ENABLE();
- break;
- case '2':
- Uart_Printf("ADC Read-Convert Mode\n");
- temp_val=AD_READ();
- break;
- }
- Uart_Printf("ADC val = %d\n", temp_val); //发送到串口显示
- }
- }
上一篇:S3C2440 LCD字符显示
下一篇:S3C2440驱动4.3寸TFT屏程序
推荐阅读最新更新时间:2024-03-16 14:50
- 热门资源推荐
- 热门放大器推荐