TX2440裸机程序-AD

2019-04-14 17:45发布

该文章参考于http://blog.csdn.net/yx_l128125/article/details/7703668,并结合实际情况编写。

一、基本概念

ADC:模/数转换器。             一种将模拟信号转换成数字信号的装置; DAC:/模转换器。            一种将数字信号转换成模拟信号的装置。 模拟信号转换为数值信号的步骤:
1.     取值; 2.     量化; 3.     编码;

二、硬件电路

S3C2440ADC      S3C2440芯片内部共8A/D转换通道AIN0~AIN7,但是转换器只有一个。转换精度为10位,故转换后的值最小时会接近0,最大时会接近1024.               
        最大的转换率在2.5MHZ转换时钟下能达到500KSPS(每秒采样5000千次)       在常见的设计中,如TX2440开发板,一般AIN4AIN5AIN6AIN7被用作了四线电阻触摸的YMYPXMXP通道;剩余的AIN0~3被引出,其中AIN0、AIN1连接采样电路。                                                                 

三、程序

ADC驱动流程

         1.初始化        2.启动          3.转换结束             4.读取转换值;           

寄存器说明

                读取转换值:          

源码

   //====================================================================== //======================================================== // 函数名称: main // 功能描述: 通过串口,显示AD值 // 维护记录: 2009-08-14 v1.0 //======================================================== #include "2440addr.h" #include "2440lib.h" #include "option.h" #include "uart.h" #include "ADC.h" void Main() { SetSysFclk(FCLK_400M); //设置系统时钟 400M ChangeClockDivider(2, 1); //设置分频 1:8:16 CalcBusClk(); //计算总线频 Uart_Select(0); Uart_Init(0, 115200); Uart_Printf(" ---ADC测试程序--- "); while(1) { Test_ADC(); } } //==================================================================== // 文件名 : ADC.c // 功 能 : ADC测试程序 //==================================================================== #include "def.h" #include "2440addr.h" #include "2440lib.h" #include "uart.h" #include "ADC.h" void Test_ADC(void) { U8 ch, mode; Uart_Printf("Select ADC Chanel: 0 or 1"); ch=Uart_Getch(); Uart_Printf(" %c ", ch); if (ch!='0' && ch !='1') { Uart_Printf("you select wrong chanel! "); return; } rADCDLY = 100; //ADC转换延时 // rADCTSC = 0; //设置ADC为普通模式 /* 进行ADC模块设置,其中x<