ADC模数转换器

2024-01-30 14:36
文章标签 adc 模数转换器

本文主要是介绍ADC模数转换器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. ADC模数转换器

ADC: 模数转换器  : 将模拟量转换为数字量 的 硬件设备  

DAC: 数模转换器  : 将数字量转换为模拟量 

1.1 工作原理

ADC: 工作原理  主要用于测量电压  

1. 逐次逼近型CMOS: 结构一般 成本一般  转换一般   稳定性较低   即对精度要求不高,转换位数一般 成本低 单片机 

2. 积分微分型: 结构简单 成本低  转换速度慢   稳定性较高   精度要求高 但速度不要求的场合  电子秤 数字万用表

3. 直接比较型: 结构复杂 成本高    转速快   稳定性较高   速度快 但 精度要求不高  8bit 10bit 示波器 摄像头

1.2 ADC的工作条件

参考电压:   模拟量的量程  已知且稳定   

转换位数:  数字量的量程  例如 8bit  10bit  12bit  ...

数字量量程  /  参考电压   ==  测量值  / 被测电压 

被测电压(V) =  测量值 / ( 数字量量程/参考电压)

1.3 系统ADC的时钟

133mhz

2. ADC电压测量实验

2.1  原理图

1. 设备 

旋转电位器 输出电压范围 0-1.8V   

2. 原理图 

XadcAIN3 ---   ADC输入通道3 

4412 有4个ADC输入 专用管脚 

3. 芯片手册   ADC控制器 

数字量 量程  可选  10bit 或 12bit 

逐次逼近型 ADC  

ADC 需要时钟驱动  且最大驱动时钟速度 不超过5M(所以后面要分频),最大1M转 换速度 

参考电压  典型值 1.8V 

2.2 配置之寄存器

ADCCON 控制寄存器

[16]  = 1 采用12bit转换 

[15]  只读  转换结束 标志位 只读  0正在转换  1转换结束 

[14]  = 1 预分频使能 

[13:6] = 预分值 19-255    26  =  133M / 5M - 1  (133/5-1=25.6 为了不超过最大驱动时钟所以取26m)

[2]  = 0  正常工作模式  (不能待机)

[1]  = 0 不使用  读使能转换模式   一般多用于 连续采样 快速采样  

[0]  = 1 手动开始一次转换  

ADCDAT 数据寄存器 

ADCDAT  数据寄存器  存放转换的结果 

ADCMUX 输入通道选择

ADCMUX  输入通道选择   = 3  

2.3 写代码

adc_test----main.c


#include"exynos_4412.h"
#include"uart.h"//ADC电压测量实验//初始化adcvoid acd_init(){//选择12bit精度的ADCADCCON |= 1<<16;//[14]  = 1 预分频使能 ADCCON |= 1<<14;// [13:6] = 预分值 19-255    26  =  133M / 5M - 1  (133/5-1=25.6 为了不超过最大驱动时钟所以取26m)ADCCON = (ADCCON &~(0xff<<6)) | (26<<6);// [2]  = 0  正常工作模式  (不能待机)ADCCON &= ~(1<<2);// [1]  = 0 不使用  读使能转换模式   一般多用于 连续采样 快速采样  ADCCON &= ~(1<<1);//ADCMUX  输入通道选择   = 3  ADCMUX = 3;}//手动开启adc转换void adc_start(){// [0]  = 1 手动开始一次转换  ADCCON |= 1;}int adc_get_value(){//[15]  只读  转换结束 标志位 只读  0正在转换  1转换结束 while(((ADCCON >> 15) & 1) == 0){//等待结束}//ADCDAT  数据寄存器  存放转换的结果return ADCDAT & 0xfff; //因为ADCDAT只有[11:0]有效 12个bit有效 又因为我们接收的 a 是 short 16bit类型,16bit装12bit的数够用}int main()
{unsigned short a; //存储模拟量float f; // 存储电压值uart_init();printf("hello!a=%d\r\n",a);//初始化adcacd_init();while(1){adc_start();a = adc_get_value();f = 1.8 /4096*a; // 因为我们选的是12bit精度的adc 即4096//因为我们移植的printf在打印小数时有点问题,所以我们将整数和小数分开打印//整数f=%d (int)f//小数.%02d(保留两位小数)  (int)((f - (int)f) *100)  先用原来的数减去整数部分 扩大100倍就是小数了,但是此时还是float类型,需要再次转为int类型printf("a=%u f=%d.%02d  \r", a, (int)f, (int)((f - (int)f) *100));}return 0;
}

这篇关于ADC模数转换器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660552

相关文章

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

学习硬件测试05:NTC(ADC)+正弦波(DAC)+DMA(ADC+DAC)(P73、P76、P78)

文章以下内容全部为硬件相关知识,鲜有软件知识,并且记的是自己需要的部分,大家可能看不明白。 一、NTC(ADC) 1.1实验现象 本实验用 NTC 采集温度,数码管实时显示温度数据(整数),左下角 USB 小串口每隔 1S 打印温度信息。 1.2硬件电路 NTC 电阻是一个模拟温度传感器,随着温度的升高,电阻值逐渐减小。电路简单介绍如下: 电源滤波电容在 25℃ 室温下 NTC 电

STM32CubeMX 2 解锁ADC模块

掏出上次写完的project。选择引脚 选择PA4和ADC1_IN4 2.选择设置配置 3.发现改完前面的配置之后这里的时钟自动变成了56, 选定,改回72. 4.改configuration,双击ADC1 跳出如下界面: Mode 选independent mode Data Alignment选Right Aligment是为了方便读数,因为这是一个12位的AD

嵌入式s3c2240: ADC

ADC :模数转换 10 位 CMOS ADC (模 / 数转换器)是一个 8 通道模拟输入的再循环类型设备。其转换模拟输入信号为 10 位二进制数字编码,最大转换率为 2.5MHz A/D 转换器时钟下的 500 KSPS 。 模拟:连续信号 数字:离散信号 原理  当采样到信号后, 与各个比较器相比较 假设采样到2.5 2

ADC——模数转换器

一、转换流程 在处理器中主要进行ADC 1、AD转换流程 :采样、保持、量化、编码 通过比较器获得的电信号转换数字信号,根据自己需求,如果要求速率就可以使用较多的比较器,不要求速率考虑成本就可以使用较少的比较器,将最后的转换结果,通过编码来表示 2、转换需要考虑的指标: 量程:0~3.3V 精度:10位 转换速率:500 KSPS 二、使用处理器上的A/D转换器 10 位

物联网——模拟与数字转换器(ADC)

ADC(常用于信号发生器,音频解码器) 逐次逼近型ADC 利用逐次逼近寄存器SAR,二分法逼近未知电压,直到外部输入电压与输出电压保持一致:例如0~225V每次去中间值作为判断电压,逐次二分 stm32的ADC模块 规则通道一次只能选一个数据寄存器,通常搭配DMA使用; 注入通道一次能选4个数据寄存器存相应数值 ADC基本结构 ADC引脚复用 双ADC模式(同步采样

STM32单片机HAL库——ADC输入

一、单通道采集 二、单通道+DMA采集 使能DMA 三、定时器采集+DMA传输 选择定时器1的通道1作为触发源,在TIM1的上升沿进行采集 定时器1挂载在APB2上面,APB2上定时器的频率为168MHZ psc=168-1 arr=1000-1 TIM1的时钟频率为168/168/1000=1kHZ pulse设置为500,占空比为50%

STM32(十):ADC模数转换器

ADC(Analog-Digital Converter)模拟-数字转换器         ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。         12位逐次逼近型ADC,1us转换时间,分辨率:0~2^12-1           输入电压范围:0~3.3V,转换结果范围:0~4095         18个输入通道,可测量16个外

STM32单片机 ADC模数转换器

GPIO只能读取引脚的高低电平,只有两个值 ADC可对任意电压值进行量化,用变量来表示,相当于是电压表,可以测量引脚的具体电压 ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器。 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。 DAC数字电路到模拟电路的桥梁,使用DAC可以将数字变量转换为模拟电压。DA