模拟信号/数字信号
(1)、模拟信号是一种在时间上连续,数值上也连续的物理量,具有无穷多的数值,从自然界感知的大部分物理量都是模拟性质的,如速度,压力,温度,声音等。
(2)、数字信号在时间上和数值上均是离散的,而离散信号的值只有真与假,是或不是,因此可以使用二进制中的0与1来表示 。
ADC驱动流程
ADC主要驱动程序
main.c
#define ADC_FREQ 2500000
void Main(void)
{
/*时钟初始化*/
Set_Clk();
/*adc初始化*/
adc_init();
while(1)
{
/*读取转换值*/
adc_value=ReadAdc(0);
delay(1000) ;
}
}
void adc_init(void)
{undefined
//选择输入通道,AIN0,对应开发板上W1可调电阻
int channel=0;
/*设置分频时钟*/
preScaler = ADC_FREQ;
preScaler = 50000000/ADC_FREQ - 1; //PCLK=50M
/*AD转换频率设置,最大频率为2.5MHz*/
rADCCON = (1<<14)|(preScaler<<6)|(channel<<3); //setup channel
delay(1000);
}
**************************************************/
int ReadAdc(int channel)
{undefined
/*开始AD转换*/
rADCCON |= 0x01; //start ADC
while(rADCCON & 0x1); //check if Enable_start is low
/*检查转换是否结束*/
while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
return ( (int)rADCDAT0 & 0x3ff );
}
关键字:ARM9 S3C2440 ADC
引用地址:
ARM9(S3C2440) ADC
推荐阅读最新更新时间:2024-11-13 11:26
BootLoader —— S3C2440
先来看看扬创的bootloader的实现方法: 首先:在汇编中初始化堆栈,中断向量表,MMU,时钟,串口等,然后跳到C语言的Main函数。这部分代码小于4K,放在block0。这个Main函数用来将第二段代码拷备到DRAM中并执行。 其次:进入第二段代码。第二段代码也是先在汇编中初始化堆栈,中断向量表等,然后跳到C语言的Main函数。这部分代码就不用有4K限制了,具体大小由第一段代码决定,因为它本身由第一段代码来搬运。这个Main函数用来显示开机图片以及进度条。然后视串口接收信息运行带有USB下载NK的Eboot或是读取NK映像,启动WINCE系统。 最后:进入第三段代码。这段代码用于通过USB将PC上的NK.nb0或
[单片机]
AD1256之STM32程序——STM32测试高精度ADC篇(四)
1.ADS1256概述 ADS1256是TI(TexasInstruments)公司推出的一款低噪声高分辨率的24位Sigma-Delta(E-v)模数转换器(ADC)。E-vADC与传统的逐次逼近型和积分型ADC相比有转换误差小而价格低廉的优点,但由于受带宽和有效采样率的限制,E-vADC不适用于高频数据采集的场合。该款ADS1256可适合于采集最高频率只有几千赫兹的模拟数据的系统中,数据输出速率最高可为30K采样点/秒(SPS),4路差分与8路伪差分输入,有完善的自校正和系统校正系统,SPI串行数据传输接口。本文结合笔者自己的应用经验,对该ADC的基本原理以及应用做简要介绍。 ADS1256性价比很高,是TI公司24位
[单片机]
LINUX中s3c2440总线频率、时钟的设置
很多硬件的正常运行需要有总线时钟的支持,比如LCD、I2C等设备。本文分析一下s3c2440的总线时钟,以及在linux中对s3c2440总线时钟频率的相关操作。首先分析硬件s3c2440的总线时钟。 1. s3c2440的FCLK HCLK PCLK: 时钟源首先来自外部晶振12MHz。对于必须运行在200MHz以上的ARM920t内核来说,这个频率实在太低了,不能直接使用,所以首先要通过s3c2440片上的pll硬件电路将12MHz的晶振时钟信号升频,而具体升到多少MHz是通过MPLL控制寄存器来控制的。比如MPLLCON赋值为 0x5c 12 | 2 4 | 1就可以将PLL电路的输出时钟设置为400MHz,也就是将
[单片机]
STM32adc采集的一些bug
调试过程如下: 进行调试发现 这个卡死在 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));1 等待转换结束。 一般的卡在这个地方主要是初始化没有做好,需要进行初始化的检查,去看初始化的代码。
[单片机]
STM8单片机ADC连续采样模式
STM8S003单片机内部ADC为12位,A/D转换的各个通道可以执行单次和连续的转换模式。 单次转换模式的意思就是,ADC每次转换一次数据后,就会停止转换,如果还需要继续转换的话,就需要手动开启第二次转换功能。 连续转换模式的意思就是每次转换结束后,系统会自动开启第二次转换,不需要手动设置第二次转换的开启,也就是说连续转换模式只需要开启一次。 ADC框图如下: ADC连续模式转换时序图如下: 通过时序图可以看出,在第2次转换完成后,第一次采样的结果才会输出,也就是结果输出比采样滞后了一个周期。 下面用代码来实现ADC的连续转换模式: #include adc.h #include main.h
[单片机]
stm32之ADC oled显示
六路adc的显示结果 ** 一些基本的代码: ** 初始化ADC //初始化ADC void Adc_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, EN
[单片机]
stc89c51单片机定时浇水,使用了adc0832+土壤湿度传感
制作出来的定时浇水实物图如下: 单片机源程序如下: /* K1 用于设置选择高位还是低位 左数第四个 K2 用于高/低位减 左数第三个 K3 用于高/低位加 左数第二个 K4用于 设置模式 初始设置其他3按键按下无用 显示at 按下一次之后启动3个按键 显示 mt 左数第一个 当测量值超过设置值或者低于设定值 小灯亮 反之不亮 显示内容 hun :数值% H:数值 mode:模式 L:数值
[单片机]
基于ARM9的多功能综合通信控制系统设计
伴随着计算机技术的迅速发展,工业数据采集已由传统的测控电路发展为由微型计算机、接口电路、外部通用设备和工业生产对象等组成的现代数据采集与控制系统。但是以微型计算机为核心的数据采集系统也逐渐暴露出许多缺陷:体积大,不易携带;扩展性差、成本高等。因此,以嵌入式系统为平台的数据采集和控制系统应运而生,嵌入式数据采集系统具备可靠性高、体积小、易扩展、开发周期短、成本低的特点使其的成为未来的通信控制发展趋势。 1 系统工作原理及框架 存储板通电后,程序自启动首先用Socket建立服务器等待PC端的配置信息,PC端按顺序发送时间帧和手机号码帧,当其中任何一个不满足帧格式或者校验错误时,存储板都会向PC端发送相应的重传指令,两个配置帧都
[单片机]