一、基本概念
ADC:模/数转换器。
一种将模拟信号转换成数字信号的装置;
DAC:数/模转换器。
一种将数字信号转换成模拟信号的装置。
模拟信号转换为数值信号的步骤:
1.取值;
2.量化;
3.编码;
二、硬件电路
S3C2440ADC
S3C2440芯片内部共有8路A/D转换通道AIN0~AIN7,但是转换器只有一个。转换精度为10位,故转换后的值最小时会接近0,最大时会接近1024.
最大的转换率在2.5MHZ转换时钟下能达到500KSPS(每秒采样5000千次)
在常见的设计中,如TX2440开发板,一般AIN4、AIN5、AIN6、AIN7被用作了四线电阻触摸的YM、YP、XM、XP通道;剩余的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("n ---ADC测试程序---n");
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("n%cnn", ch);
if (ch!='0' && ch !='1')
{
Uart_Printf("you select wrong chanel!n");
return;
}
rADCDLY = 100; //ADC转换延时
// rADCTSC = 0; //设置ADC为普通模式
/* 进行ADC模块设置,其中x< (0 << 1) | // 读AD数据触发AD转换 未使用 (0 << 2) | // StandBy模式选择 为普通操作模式 (ch << 3) | // ADC通道选择 ch (49 << 6) | // CLKDIV = Fpclk /49+1/5 ,即转换时钟为1MHz Fpclk = 10M ADC转换频率400K (1 << 14) ; // 使能软件预设值 Uart_Printf("Select ADC Mode: 1.Enable 2.Read"); mode=Uart_Getch(); Uart_Printf("n%cnn", mode); if (mode!='1' && mode !='2') { Uart_Printf("you select wrong model!n"); return; } switch(mode) { case '1': Uart_Printf("ADC Enable-Convert Moden"); while(Uart_GetKey() != ESC_KEY) { AD_ENABLE(); } break; case '2': Uart_Printf("ADC Read-Convert Moden"); while(Uart_GetKey() != ESC_KEY) { AD_READ(); } break; // default: // break; } } //======================================================================= //名称:AD_ENABLE() //功能:采用置位使能方式启动AD转换 //参数: 无 //返回值: 无 //======================================================================= void AD_ENABLE (void) { int i,j; int val; val = 0; for(i=0;i<16;i++) { rADCCON |= 0x1; //使能ADC 转换 while(rADCCON&0x1); //判断是否使能ADC转换 while(!rADCCON&0x8000); //判断ADC转换是否结束 val += (rADCDAT0 &0x03ff); //取出ADC转换值 for(j=0;j<500;j++); } val = val/16; //计算ADC平均转换值 Delay(500); Uart_Printf("ADC val = %dn", val); //发送到串口显示 } //======================================================================= //名称:AD_READ() //功能:采用读控制器的方式启动AD转换 //参数: 无 //返回值: 无 //======================================================================= void AD_READ (void) { int i,j; int val,aa; val = 0; rADCCON |= 0x2; //ADC转换通过读操作来启动 aa = rADCDAT0 &0x03ff; //启动ADC转换 for(i=0;i<16;i++) { while(!rADCCON&0x8000); //判断ADC转换是否结束 val += (rADCDAT0 &0x03ff); //取出ADC转换值 for(j=0;j<500;j++); } val = val/16; //计算ADC平均转换值 Delay(500); Uart_Printf("ADC val = %dn", val); //发送到串口显示 }
上一篇:S3C2440时钟和电源管理
下一篇:TX2440裸机程序-uart
推荐阅读
史海拾趣
随着市场需求的变化,FTDI并未满足于初期的成就,而是积极拓展产品线。他们推出了如MM232R和USB-COM232-PLUS1等接口产品,这些产品在连接性和兼容性上展现了公司强大的技术实力和创新精神。同时,FTDI还涉足USB和其他通信协议的转换领域,满足了多样化的市场需求,进一步巩固了其在电子行业中的地位。
为了进一步扩大市场份额,Edcon Components Netherlands Cv开始积极拓展国际市场。公司通过对不同国家和地区的市场进行深入分析,制定了精准的市场拓展策略。通过与当地经销商建立合作关系,Edcon的产品逐渐进入国际市场,并在多个国家和地区取得了成功。国际市场的拓展不仅为公司带来了更多的商机,也提升了公司的品牌影响力。
1994年,在韩国这片科技热土上,AMOTECH公司应运而生。创立之初,公司便立志于在电子行业中占据一席之地。创始团队凭借对技术的深刻理解和敏锐的市场洞察,决定专注于金属氧化物压敏电阻(MOV)的研发与生产。初期的发展并非一帆风顺,但团队凭借坚定的信念和不懈的努力,逐步在市场中建立了良好的口碑。
随着技术实力的不断增强,CALMIRCO公司开始积极拓展国内外市场。公司通过参加国际电子展会、建立海外销售渠道等方式,逐渐将产品推向全球。同时,CALMIRCO公司还注重品牌建设,通过广告宣传、媒体报道等多种渠道提升品牌知名度和美誉度。这些举措使得CALMIRCO公司的产品在市场上获得了广泛认可,公司也因此成为电子行业的佼佼者。
随着光通信技术的快速发展,三环集团敏锐地捕捉到了这一市场机遇。在2001年,公司开始研发生产光通讯用陶瓷部件,这些部件在光纤通信中发挥着重要作用。通过不断的技术创新和产品优化,三环集团成功地将光通讯用陶瓷部件推向市场,并获得了客户的广泛认可。这一举措不仅拓展了公司的业务领域,也为公司带来了新的增长点。
Gem Asia Enterprise最初是一家专注于电子元件生产的小型制造商。面对激烈的市场竞争,公司决定加大研发投入,专注于开发新型半导体材料。经过数年努力,Gem Asia成功研发出一种高效能、低功耗的半导体材料,并成功应用于智能手机和可穿戴设备中。这一创新不仅显著提升了产品的市场竞争力,还吸引了多家国际知名电子品牌的合作,使Gem Asia迅速在电子行业中崭露头角。
摘要:分析传统双半波整流电路的工作原理和存在的问题,提出并分析改进型高频双半波整流电路的原理及其优点,解决传统双半波整流电路中存在的问题。 关键词:双半波整流续流 在低压输出的推挽、桥式、半桥式开关电源电路中,变压器的 ...… 查看全部问答∨ |
|
我了解单片机,也做过点东西, 但是我毕设想提高一个档次,请问ARM比单片机有哪些有哪些飞跃,DSP与ARM是不是都挺好的啊? 您听说过的ARM做毕设都是做什么的呢? 谢谢指教… 查看全部问答∨ |
|
最近在做个要用到锂离子电池的东西,要做个充电芯片,在网上找了很多,max1679,max468什么的,但实际上根本在市场上买不到!(我南京的)有没有做过这个的大侠给指个明路啊!谢谢啦… 查看全部问答∨ |
|
求助一个C语言和汇编均可... 设计并制作一个简单键盘显示电路,具有两个8段LED显示块和按键功能,要求: 1、使用+5V电源。 2、每按一次按键,在显示块上显示的内容有变化 3、每按一次按键,显示的数字加一。 4、显示的数字能进位,并从 ...… 查看全部问答∨ |
|
今天用了STC12C5410AD的片子,由于调试的板子是09年的做的,所以芯片较老。看手册的话,发现07年手册和09-12年的手册中EEPROM大小不一样。不知道宏晶会在什么地方有注明!?我的板子EEPROM经过测试居然是15.5Kbytes,和手册上的 ...… 查看全部问答∨ |
别看那些编译原理的书了!这本书教你编写真正实用的语言应用--《编程语言实现模式》 编程语言实现模式 别看那些编译原理的书了!这本书教你编写真正实用的解析器、翻译器、解释器等语言应用,Terence Parr 在书中细致地讲解了先进的语言工具和语言应用中设计模式的用法。无论是编写自己的领域专 ...… 查看全部问答∨ |