历史上的今天

今天是:2024年11月25日(星期一)

2019年11月25日 | TX2440裸机程序-AD

发布者:梅花居士 来源: eefocus关键字:TX2440  裸机程序 手机看文章 扫描二维码
随时随地手机看文章

一、基本概念


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<    rADCCON = (0 << 0)     | // ADC转换设置 未设置

              (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);  //发送到串口显示

 

 }


关键字:TX2440  裸机程序 引用地址:TX2440裸机程序-AD

上一篇:S3C2440时钟和电源管理
下一篇:TX2440裸机程序-uart

推荐阅读

2年一度的德国慕尼黑电子展近期盛大开幕,来自全球50多个国家3000余家企业围绕工业4.0、汽车、物联网等热门主题同台竞技,秀出当今最先进的技术和最热门的应用。 全球知名半导体制造商罗姆亮相展会,展示了在汽车电子和工业设备等领域的丰富产品、解决方案以及模拟技术和功率元器件等技术亮点。罗姆欧洲市场总监Gunter Richard也向eeworld记者解读了罗姆...
STM8L103C6拥有1KB的片上EEPROM,可以用来存储程序需要用到的参数,就不需要额外使用24C02这样的外部存储器了.同时,和24C02比起来,STM8L的片上EEPROM操作更简单,可以直接对地址进行操作,进行数据读写.下图是STM8L闪存和EEPROM的地址分配图,可以看到EEPROM的起始地址为0x001000,结束地址为0x0013FF.共1024个地址空间,所以EEPROM的容量为1KB.EEPROM在上电复位...
昨日晚间,Redmi 红米手机官方公布了 Note 9 系列碧海星辰配色渲染图,并表示 “碧海潮起天地惊,碧海潮落鬼神泣。碧海倒映星辰,掬起这抹蓝色”。  IT之家了解到,Redmi Note 9 系列发布会将于 11 月 26 日召开。  今日上午,小米集团副总裁,中国区总裁,红米 Redmi 品牌总经理卢伟冰还提到,Note 7 Pro 搭载新一代骁龙 ...
据 onMSFT 报道,近期,微软开始为 Surface Duo 2推出新的固件更新。最新的更新没有带来任何新功能,它只包括 Surface Duo 2 的 11 月安全补丁。  2021 年 11 月的更新下载包大小为 84.41MB,升级到 2021.830.19 软件版本。更新日志显示,这个版本的日期可以追溯到 11 月 19 日,它特别旨在解决一些关键的安全问题。  ...

史海拾趣

问答坊 | AI 解惑

改进型高频双半波整流电路

  摘要:分析传统双半波整流电路的工作原理和存在的问题,提出并分析改进型高频双半波整流电路的原理及其优点,解决传统双半波整流电路中存在的问题。 关键词:双半波整流续流   在低压输出的推挽、桥式、半桥式开关电源电路中,变压器的 ...…

查看全部问答∨

简易入库小车

黑龙江大学生电子设计大赛一等奖 红外遥控启车; 自动寻线入库; 自动转向出库; 显示运行时间; 声光报警提示; 语音提示…

查看全部问答∨

求M-BUS通讯原理图及工作方式

求M-BUS通讯原理图及工作方式…

查看全部问答∨

ARM比单片机有哪些飞跃?

我了解单片机,也做过点东西, 但是我毕设想提高一个档次,请问ARM比单片机有哪些有哪些飞跃,DSP与ARM是不是都挺好的啊? 您听说过的ARM做毕设都是做什么的呢? 谢谢指教…

查看全部问答∨

请帮忙给个锂离子电池充电的芯片型号

最近在做个要用到锂离子电池的东西,要做个充电芯片,在网上找了很多,max1679,max468什么的,但实际上根本在市场上买不到!(我南京的)有没有做过这个的大侠给指个明路啊!谢谢啦…

查看全部问答∨

我想问 手机开机后会自动寻找无线网络等功能是怎么实现的??

     问题比较模糊。 大家与此有关的回答都可以写出来。。 比如 小区更新。小区切换。方面 再比如。…

查看全部问答∨

ARM指令求救

LDR 字数据读取指令 LDR指令从内存中将一个32位的字读取到指令中的目标寄存器中。(下面不理解) 如果指令中寻址方式确定的地址不是字对齐的,则从内存中读取的数字要进行循环右移操作,移位的位数为寻址方式确定的地址的bit[1:0]的8倍。…

查看全部问答∨

求助一个C语言和汇编简单键盘显示电路

求助一个C语言和汇编均可... 设计并制作一个简单键盘显示电路,具有两个8段LED显示块和按键功能,要求: 1、使用+5V电源。 2、每按一次按键,在显示块上显示的内容有变化 3、每按一次按键,显示的数字加一。 4、显示的数字能进位,并从 ...…

查看全部问答∨

STC12C系列单片机 - 1

    今天用了STC12C5410AD的片子,由于调试的板子是09年的做的,所以芯片较老。看手册的话,发现07年手册和09-12年的手册中EEPROM大小不一样。不知道宏晶会在什么地方有注明!?我的板子EEPROM经过测试居然是15.5Kbytes,和手册上的 ...…

查看全部问答∨

别看那些编译原理的书了!这本书教你编写真正实用的语言应用--《编程语言实现模式》

编程语言实现模式        别看那些编译原理的书了!这本书教你编写真正实用的解析器、翻译器、解释器等语言应用,Terence Parr 在书中细致地讲解了先进的语言工具和语言应用中设计模式的用法。无论是编写自己的领域专 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved