您的位置 首页 电源

S3C2440 AD转换器

10位CMOSADC(模数转换器)是一个8通道模拟输入的再循环类型设备。其转换模拟输入信号为10位二进制数字编码,最大转换率为2

10 位CMOS ADC(模/数转化器)是一个8 通道模仿输入的再循环类型设备。其转化模仿输入信号为10 位二

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

触摸屏鄙人一篇文章,ADC转化比较简单,这儿贴出一个代码

[cpp]view plaincopy

  1. #include”2440addr.h”
  2. #include”2440lib.h”
  3. #include”def.h”
  4. //=====================================================================
  5. //称号:ADC_Select(intch,U32preScaler)
  6. //功用:挑选转化通道,转化器预分频值设置
  7. //参数:ch:转化通道preScaler:预分频值
  8. //返回值:无
  9. //=======================================================================
  10. voidADC_Select(intch,U32preScaler)
  11. {
  12. rADCCON=(1<<14)|(preScaler<<6)|(ch<<3);
  13. }
  14. //=======================================================================
  15. //称号:AD_ENABLE()
  16. //功用:选用置位使能方法发动AD转化
  17. //参数:无
  18. //返回值:转化后的值
  19. //=======================================================================
  20. intAD_ENABLE(void)
  21. {
  22. inti;
  23. intval=0;
  24. for(i=0;i<16;i++)
  25. {
  26. rADCCON|=0x1;//使能ADC转化
  27. while(rADCCON&0x1);//判别使能ADC转化后被清零
  28. while(!(rADCCON&0x8000));//等候转化完毕
  29. val+=(rADCDAT0&0x3ff);//读取ADC转化的值
  30. }
  31. val=val/16;//核算ADC转化值
  32. returnval;
  33. }
  34. //=======================================================================
  35. //称号:AD_READ()
  36. //功用:选用读控制器的方法发动AD转化
  37. //参数:无
  38. //返回值:转化后的值
  39. //=======================================================================
  40. intAD_READ(void)
  41. {
  42. inti;
  43. inttemp,val=0;
  44. rADCCON|=0x2;//ADC转化经过读操作来发动
  45. temp=rADCDAT0&0x3ff;//发动ADC
  46. for(i=0;i<16;i++)
  47. {
  48. rADCCON|=0x1;//使能ADC转化
  49. while(rADCCON&0x1);//判别使能ADC转化后被清零
  50. while(!(rADCCON&0x8000));//等候转化完毕
  51. val+=(rADCDAT0&0x3ff);//读取ADC转化的值
  52. }
  53. val=val>>4;//核算ADC转化值
  54. returnval;
  55. }
  56. voidMain(void)
  57. {
  58. inttemp_val;
  59. U8mode;
  60. SelectFclk(2);//设置体系时钟400M
  61. ChangeClockDivider(2,1);//设置分频1:4:8
  62. CalcBusClk();//核算总线频率
  63. rGPHCON&=~((3<<4)|(3<<6));
  64. rGPHCON|=(2<<4)|(2<<6);//GPH2--TXD[0];GPH3--RXD[0]
  65. rGPHUP=0x00;//使能上拉功用
  66. Uart_Init(0,115200);
  67. Uart_Select(0);
  68. while(1)
  69. {
  70. ADC_Select(2,49);
  71. Uart_Printf(“SelectADCMode:1.Enable2.Read\n”);
  72. mode=Uart_Getch();
  73. Uart_Printf(“\n%c\n\n”,mode);
  74. if(mode!=1&&mode!=2)
  75. {
  76. Uart_Printf(“youselectwrongmodel!\n”);
  77. return;
  78. }
  79. switch(mode)
  80. {
  81. case1:
  82. Uart_Printf(“ADCEnable-ConvertMode\n”);
  83. temp_val=AD_ENABLE();
  84. break;
  85. case2:
  86. Uart_Printf(“ADCRead-ConvertMode\n”);
  87. temp_val=AD_READ();
  88. break;
  89. }
  90. Uart_Printf(“ADCval=%d\n”,temp_val);//发送到串口显现
  91. }
  92. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/262839.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部