时间: 2024-11-26 00:47:48 | 作者: 党建专栏
在介绍ADC之前我们先说一下ADC大致应用到哪些领域。比如无线通信、软件无线电、数据采集、光通讯、仪器设施等领域用到的非常多,举个格外的简单的例子,比如你要获取电池电压的用电情况这时候就要使用到ADC这样的一个东西。当然了ADC又可以分很多种,这里就不在说了,这里可以去网上查查。看看多了解了解。
其实在自然界存在的大都是模拟量,像温湿度、时间、速度、压力、流量等都是模拟量,但是吧,兄弟们,我们在使用这一些东西的时候需要把这玩意用计算机转换成数字量,这样才可以更有效的进行一些控制。
因此这就需要他们之间有一个桥梁,这个桥梁就是ADC和DAC这两个。本章只介绍ADC,DAC将会在下一章介绍。
根据图中的信息可知道,非电模拟量需要用特定的传感器将模拟信号转换成电信号,然后使用ADC将电信号转换成数字信号,经嵌入式系统处理后,再通过DAC将数字信号转换成模拟信号去控制执行机构。
我们首先说一下ADC的转换过程,然后说一下原理,当然如果嫌啰嗦可以直接跳过。
ADC是英文Analog-to-Digital Converter缩写,翻译过来就是模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。A/D转换的作用是将时间连续、幅值也连续的模拟信号转换为时间离散、值也离散的数字信号,因此,A/D转换一般要经过采样、保持、量化及编码4个过程,如下图所示。在实际电路中,这些过程有的是合并进行的。例如,采样和保持、量化和编码往往都是在转换过程中同时实现的。
1、ADC:模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。
2 、在进行模/数转换时,要按一定的时间间隔,对模拟信号进行采样,然后再把采样得到的值转换为数字量。因此,模/数转换的基本过程由①采样、②保持、③量化和④编码组成。
通常,采样和保持两个过程由采样–保持电路完成,量化和编码又常在转换过程中同时实现。
(2)当vs为低电平时,S断开,保持阶段,此时由于电容无放电回路,所以vO保持在上一次采样结束时输入电压的瞬时值上。
将A/D转换输出的数字信号,再进行D/A转换,得到的模拟信号与原输入信号的接近程度,与采样频率密切相关。
采样是在间隔为T的T、2T、3T、…时刻抽取被测模拟信号幅值,相邻两个采样时刻之间的间隔T也被称为采样周期。
只有当采样频率fs大于或等于模拟信号v最高频率分量fmax的2倍时(fs≥2fmax),所采集的信号样值才能不失真地反映原来模拟信号的变化规律。
例如:若被采样信号的最高频率分量的频率为100Hz,则采样频率应该不低于200Hz。
我们在对对模拟信号进行采样后,会得到一个时间上离散的脉冲信号序列,但每个脉冲的幅度仍然是连续的。然而,CPU所能处理的数字信号不仅在时间上是离散的,而且数值大小的变化也是不连续的,因此,必须把采样后每个脉冲的幅度进行离散化处理,得到被CPU处理的离散数值,这样的一个过程就称为量化。
说白了就是A/D转换过程中,必须将采样-保持电路的输出电压,按某种近似方式规划到与之相应的离散电平上。
把量化的结果二进制表示出来称为编码。而且,一个n位量化的结果值恰好用一个n位二进制数表示。这个n位二进制数就是ADC转换完成后的输出结果。
说白了就是量化过程,只是把模拟信号按量化单位作了取整处理,只有用代码表示量化后的值,才能得到数字量。当然常用的编码是二进制编码。
1.取整时只舍不入,就是说当电压在0-1v的时候电压都是0,1-2v的时候电压都是1,按照这样以此类推。采用这种方法,输入电压总是比输出电压高的,所以产生的量化误差是不可能为负的。
2.取整时有舍有入(也就是四舍五入):也就是0-0.5V取0,0.5-1.5V取1,以此类推后面的都是这样的。从这就看到这个地方的量化误差是有正有负的。
指从接到转换控制信号开始,到输出端得到稳定的数字输出信号所需要的时间。通常用完成一次A/D转换操作所需时间来表示转换速度。
例如,某ADC的转换时间T为10ms,则该A/D转换器的转换速度为1/T=100次/s。
分辨率也可以叫做分解度。用来描述刻度划分。常以输出二进制代码的位数来表示分辨率的高低。位数越多,说明量化误差越小,则转换的精度越高。摄像头数字化处理用到的地方多。
精度指产生一个给定的数字量输出,所需模拟电压的理想值与实际值之间总的误差,这中间还包括量化误差、零点误差及非线性等产生的误差。用来描述物理量的准确程度。
输入模拟电压范围指ADC允许输入的电压范围。超过这个范围,A/D转换器将异常工作。例如 :STM32F429输入电压范围是:单极性0~V_ref。
转换时间(conversiontime)是ADC完成一次A/D转换所需要的时间,是指从启动ADC开始到获得相应数据所需要的总时间。
STM32F429IGT6带3个ADC控制器:其核心为模拟至数字转换器,它由软件或硬件触发,在ADC时钟ADCLK的驱动下对规则通道或注入通道中的模拟信号进行采样、量化和编码。
1、12 位 ADC 是逐次趋近型模数转换器,可配置为10 位、8 位或 6 位分辨率。
2、多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和VBAT通道的信号。
5、ADC具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
6、多种ADC转换触发方式:软件方式、定时器、EXTI 中断线、可触发DMA功能(可看DMA章节)。
从上面看到:ADC在开始精确转换前需要一个稳定时间tSTAB。在开始ADC转换和14个时钟周期后, EOC标志被设置, 16位ADC数据寄存器包含转换的结果。
ADC_CR2寄存器中的ALIGN位选择转换后数据储存的对齐方式。数据可以左对齐或右对齐。注入组通道转换的数据值已经减去了在ADC_JOFRx寄存器中定义的偏移量,因此结果可以是一个负值。SEXT位是扩展的符号值。对于规则组通道,不需减去偏移值,因此只有12个位有效。
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。
通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束, CAL位被硬件复位,能开始正常转换。建议在上电时执行一次ADC校准。校准阶段结束后,校准码储存在ADC_DR中。
STM32F4系列微控制器的ADC是逐次比较逼近型,因此一定要使用驱动时钟。所有ADC共用时钟ADCCLK,它来自经可编程预分频器分频的APB2时钟,该预分频器允许ADC在fPCLK2/2、fPCLK2/4、fPCLK2/6或fPCLK2/8等频率下工作。
1-规则通道组:相当正常运行的程序。最多16个通道。规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则 组转换的总数 写入ADC_SQR1寄存器的L[3:0]中规则通道组共用一个转换数据寄存器!
2-注入通道组:相当于“中断”。最多4个通道。注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转换的总数应写入ADC_JSQR寄存器的JL[1:0]中每个注入通道都有一个独立的转换数据寄存器。
STM32F4的ADC的各通道可以①单次,②连续,③扫描或者④间断模式执行。
1)、软件触发:ADC 使能 可以由 ADC 控制寄存器 2: ADC_CR2 的 ADON 这个位来控制,写 1 的时间开始转换,写 0 的时候 停止转换,这个是最简单也是最好理解的开启 ADC 转换的控制方式。
另:(1)位SWSTART:启动规则组。(2)位JSWSTART:启动注入组
当模拟看门狗状态位和溢出状态位分别置 1 时,规则组和注入组在转换结束时可能会产生中 断。能够正常的使用单独的中断使能位以实现灵活性。
使用看门狗功能,可以限制ADC转换模拟电压的范围(低于阈值下限或高于阈值上限,定义在ADC_HTR和ADC_LTR这两个寄存器中),当转换的结果超过这一范围时,会将ADC_SR中的模拟看门狗状态位置1,如果使能了相应中断,会触发中断服务程序,以及时进行对应的处理。
由于规则组通道只有一个ADC_DR,因此,对于多个规则组通道的转换,使用 DMA非常有帮助。
ADC1规则组转换4个输入通道信号时,要使用到DMA2的数据流0的通道0,在扫描模式下,在每个输入通道被转化结束后,都会触发DMA控制器将转换结果从规则组ADC_DR中的数据传输到定义的存储器中。
程序的流程如上图所示。 编写完程序,测试发现,当初始化函数中将等待中断设置为等待按键按下中断时(enter_wait_pen_down_mode),上电后显示的是pen dowm,但实际上触摸屏并没有被按下。这时候程序会进入等待抬起状态不会检测到按下,此时有必要进行一遍按下抬起的操作后续的检测才能正常,只有设置为等待按键抬起时(enter_wait_pen_up_mode),上电后显示的才是pen up,这时候程序会进入等待按键按下的状态,能够顺利的检测。 设置为等待按键抬起时,调试信息如下。 设置为等待按键按下时,调试信息如下。 奇怪的是,视频和例程中的调试信息如下,设置的是等待按键按下模式(enter_wait
和触摸屏_按下松开检测_P /
限幅滤波法是通过软件来限制本次采样值的上次采样值的偏差,若本次采样值和上次采样值的偏差超过了设定的最大偏差值,则丢弃本次的采样值。 下面看C代码的实现 //返回两个整数差 unsigned int num_sub( unsigned int a, unsigned int b ) { return ( a = b ? ( a - b ) : ( b - a ) ); } #define A 200 //允许最大误差值 unsigned int filter1( void ) { static unsigned int value; unsigned int new
采样算法----限幅滤波法 /
上海,2013年3月18日 –富士通半导体(上海)有限公司今日宣布,高速数据转换器的市场领军供应商富士通半导体欧洲(FSEU)在高速ADC上取得最新突破,这将使得在全球范围内大规模部署单波长100Gbps的光传输系统成为可能。结合富士通在混合信号设计、热设计、功耗优化及高性能封装设计上的专长,可为系统设备商提供基于此ADC的完整SoC ASIC解决方案,在持续增大的带宽和传输流量需求下为全球网络基础设施的亟待升级铺平道路。 对带宽的需求将会使得对100Gbps网络的应用从广域网(数千公里传输距离)扩大到城域网(MAN)领域。城域网的覆盖距离较广域网短,最多几百公里,但其端口密度会更高,因此受机械和散热的制约,要求100Gbps
产品 /
1 前言 Windows CE 是为各种嵌入式系统和产品设计的一种压缩的、高效的、可升级的操作系统。多线性、多任务、全优先的操作系统环境是专对于资源有限而设计的,它的模块化设计使嵌入式系统开发者和应用者能够将其应用于各种产品,例如家用电器、专门的工业控制和嵌入式通信设施等。Windows CE 支持各种硬件外围设备及网络系统,应用领域极为广阔,是微软专门为信息设备、移动通讯、电子科技类产品、嵌入式应用等非 PC 领域而专门设计的一种战略性操作系统产品。 2 Samsung ARM 系列S3C2410 处理器 S3C2410 是Samsung 公司推出的基于ARM920T 核的32 位RISC 微处理器芯片。S3C
驱动开发设计 /
最近比较忙,针对前面的留言说有怎么download u-boot、uclinux到stm32,我翻了翻以前记录下的笔记,特意贴上来,其实有些步骤我都已经忘记了。。。 一、搭建嵌入式linux开发环境 1. 准备一台Linux系统(Fedora,CentOS,Ubuntu等)的电脑,将BSP压缩包(linux-cortexm-2.0.0.tar.gz)拷贝到一个目录; 2. 解压BSP包: tar -xzvf linux-cortexm-2.0.0.tar.gz 3. 解压arm工具链: cd linux-cortexm-2.0.0/tools tar xvfj arm-2010q1-189-arm-uc
的u-boot、uclinux内核烧写说明 /
对于STM32,在使用ADC的时候需要配置几个参数。 (1) 第一个参数是ADC_Mode,这里设置为独立模式: ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; 在这一个模式下,双ADC不能同步,每个ADC接口独立工作。所以如果不需要ADC同步或者只是用了一个ADC的时候,就应该设成独立模式了。 (2) 第二个参数是ADC_ScanConvMode,这里设置为DISABLE。 ADC_InitStructure.ADC_ScanConvMode = DISABLE; 如果只是用了一个通道的话,DISABLE就可以了,若使用了多个通道的话,则必须将其设置
HV632的结构原理 HV632的结构框图如图2所示。依照结构图简述其工作原理:8位二进制总线口输入到Data Latch(数据锁存器)中,在移位时钟(Shift Clock)的上下沿分别进行锁存,每16个Shift Clock脉冲为一组,因此能锁存32个8位二进制数据,在第一个Shift Clock脉冲的上升(或下降)沿读入的数据锁存到Data Latch1,并与高压输出HVout1相对应,依此类推,最后一个8位二进制数据锁存到Data Latch32中,并与高压输出HVout32相对应。每一个数据锁存器锁存的数据都会在Comparator(比较器)中与8 B Counter(8位计数器)的输出进
原理 /
1.P0作为地址数据总线是一起工作的,构成推挽结构。高电平时,V1打开,V2截止;低电平时,V1截止,V2打开。这样的一种情况下不用外接上拉电阻。而且,当V1打开,V2截止,输出高电平的时候,因为内部电源直接通过V1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以驱动8个TTL负载的原因。 2.P0作为一般端口时,V1就永远的截止,V2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,PO口就没有输出了,(注意,这种情况是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1。 3.其他端口P1P2P3,在内部直接将P1口中的V1换成了上拉电阻,所以
及上拉问题 /
微电网稳定性分析与控制 提高功率分配和潮流调控水平的微电网建模 稳定分析和控制 (
东芝1200V SIC SBD “TRSxxx120Hx系列” 助力工业电源设备高效
[高精度实验室] ADC系列 10 : 高速模数转换器 (ADC) 基础
[高精度实验室] ADC系列 6 : 逐次逼近型 (SAR) 模数转换器 (ADC) 的输入驱动设计
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
TI 有奖直播 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
【下载】LAT1439 关于STM32H745的MC SDK电机控制工程问题的解决办法
【下载】LAT1446 TrustZone应用中串口通信的DMA传输失败问题
【直播】实时数据革命:在STM32设备中融合现代ITTIA实时数据库技术
【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低
【新品】STM32H7R/S 基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储
【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议
【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器
【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性
【视频】STM32新增安卓支持 — OpenSTDROID,开启MPU应用新格局
站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程