嘿,ADC,帮我翻译一下它说啥
ADC (Analog-to-Digital Converter) 指模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件,能够实现将光、温度、湿度等等模拟信号转换为数字信号,进而进行处理和感知。ADC 有逐次逼近型、积分型、压频变换型、分级型和流水线型等等,适合于各种低速、高速、瞬态、基带调解、电子测量等不同场合,应用十分广泛。本文将对常见的ADC类型及其特点进行介绍,并实例演示如何在系统中进行配置使用。
一、ADC分类即特点
1.1逐次逼近型
逐次逼近型ADC是一种直接ADC,由比较器、数模转换器和逐次逼近寄存器以及控制电路组成。每当测试开始时,它逐个产生比较电压,逐次与输入电压分别比较,以逐渐逼近的方式进行模数转换,其转换过程类似于天枰。每次均从最大的砝码开始试放,将砝码与被测物体比较,若物体轻于该砝码,则砝码移去,选择下一个砝码比较,若物体重于该砝码,则砝码保留,增加下一个砝码再比较。以此类推直至增减完最小的砝码,天平上保留的砝码重量相加则为物体重量。逐次逼近型ADC原理同理,将输入的模拟信号与不同大小的参考电压进行比较,最终得出输入模拟量的对应值。
逐次逼近型ADC电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时传感器产生的信号在进行模数转换之前需要进行调理,导致价格偏高。
1.2积分型
积分型ADC是一种通过使用积分器将未知的输入电压转换成数字表示的一种模-数转换器,由模拟积分器、比较器和技术单元组成。未知的输入电压施加在积分器的输入端,并且持续一个固定的时间段,然后用一个已知的反向电压施加到积分器,这样持续到积分器输出归零。这样,输入电压的计算结果实际是参考电压的一个函数,定时上升阶段时间和测得的下降阶段时间。下降阶段时间的测量通常是以转换器的时钟为单位,所以积分时间越长,分辨率越高。
积分型ADC优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,转换速率低。因此,这些转换器通常的典型应用就是数字电压计和其他需要高精度测量的仪表,不适用于音频或信号处理的场合应用。
1.3压频变换型
压频变换型ADC通过间接转换方式实现模数转换,ADC首先将输入的模拟信号转换为频率,然后利用计数器将频率转换为数字量,根据其原理,只要采样的时间从理论上讲这种AD的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度。
其优点是分辩率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。
1.4流水线型
流水线型ADC有多个连续的步骤,每个步骤都是在处理上一个步骤转换出来的信号,最终得到一系列的数字采样值,从而实现将模拟信号转换为数字信号的功能。它将模拟信号经过一系列步骤,每一步实现一个特定功能,最终得到一系列数字采样值。具体来说,流水线型ADC包括输入滤波器、量化器、数据暂存器、插值器和增益校正等模块。输入滤波器用于滤除模拟信号中的频率噪声;量化器会将模拟信号量化成一系列数字采样值;数据暂存器用于缓存量化后的采样值;插值器用于通过对采样值的插值处理得到更精确的采样值;增益校正模块用于对采样值进行增益校正。
流水线结构模数转换器( ADC) 相对于其他结构 ADC 来说, 最大优势在于它在精度、速度、功耗等方面的很好平衡,其精度较高,转换速度较快,功耗较低且芯片面积较小。
二、ADC 工程配置
ADC用处如此广泛,作为物联网操作系统OneOS怎能不支持呢?下面小编将和大家一起进行ADC工程配置,让ADC做一个优秀的翻译官,和我们一起感受世界~
2.1 建立工程文件
如果在提供的 OneOS 源码中已经有适合的 DEMO 工程,则生成工程后可以直接使用;如果没有请参照快速开始中的操作指南,构建一个适合的工程。以下配置均以万耦一代开发板(STM32L475)为例,STM32 的 ADC 目前只支持单通道模式,即任意时刻只能访问获得一个通道的有效数据。
2.2 使用STM32CubeMX配置硬件
1.打开 OneOS\projects\xxxxx(project文件夹)\board\CubeMX_Config 下的 CUBE 工程文件,按照具体的需求进行配置;
ADC 单通道模式下,可以开启多个 ADC,如打开了三个 ADC,按照 ADC 的名称进行注册,每个 ADC 可以配置开启多个通道,通道顺序号和配置一致,但是任意时刻只能访问一个通道,配置实际上是配置好对应的引脚的参数。
2.配置 ADC 通道,并配置 ADC 通道参数;
- Analog 标题下是模拟外设信息,选择 ADC 外设;
- Mode 标题下是通道信息,选择通道模式;
- ADC_Setings 需要根据实际使用进行配置;
- ADC_Regular_ConversionMode 等 ADC 通道配置参数不需要进行配置,实际使用时调用默认参数,修改需要在 drv_adc.c 的 stm32_adc_get_channel_config 函数中添加(STM32 官方工具和 ADC 自身使用有限制导致);
- 右侧的芯片示意图上根据需要配置硬件引脚。
3.点击 Clock Configuration 检查时钟配置,然后点击 GENERATE CODE 生成 STM32CubeMX 工程代码。
2.3 配置和生成工程
1.在对应的 OneOS\projects\xxxxx(project文件夹) 目录下打开 OneOS-Cube 工具,在命令行输入oos config打开可视化配置界面;
2.如下图示,通过Enter键、方向键和空格键选择 (Top) → Drivers→ MISC 下的 Using ADC device drivers 选项;
(Top) → Drivers→ MISC OneOS Configuration [*] Using push button device drivers [*] Using led device drivers [ ] Using buzzer device drivers [*] Using ADC device drivers [ ] Using DAC device drivers [ ] Using PWM device drivers [ ] Using Input Capture device drivers [ ] Using Pulse Encoder device drivers
3.通过 Esc 键退出配置界面,退出时选择保存;
4.在命令行输入 oos init -i keil 命令,构建工程。
2.4 工程编译及实现
1.打开对应的 OneOS\projects\xxxxx(project文件夹) 目录下的 project.uvprojx 工程文件;
2.将测试代码 OneOS\demos\driver\adc test.c(详细代码见末尾)添加到工程中;
3.编译并下载工程,运行程序;
4.打开串口工具如 xshell 等,通信成功后,输入对应的测试指令;
5.通过硬件调节电压,即可观察到不断回读 ADC 采样电压值(电压值单位 mv)。 测试如下:
sh />adc_sample adc1 1 adc1 channle 1 voltage value: 514 adc1 channle 1 voltage value: 1010
更详细的API介绍欢迎前往OneOS官网文档中心查看。
OneOS源码仓库:https://gitee.com/cmcc-oneos/OneOS

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
K2 编译器将在 Kotlin 2.0 中进入稳定状态
我们一直在为 Kotlin 编译器(代号K2)开发新的前端。前端是编译器的一部分,负责解析代码和执行语义分析、数据流分析、调用解析和类型推断。这是开发者与编译器交互最多的部分。编译器也通过它在 IDE 中持续运行、报告所有错误和警告消息,帮助完成自动补全、语义感知检查、意图和重构等任务。新前端已经可供预览 – 我们将继续进行完善和稳定工作,计划在未来 Kotlin 版本中将其设为默认编译器前端。我们已经决定将这个未来版本命名为Kotlin 2.0。下文将详细描述 Kotlin 2.0 版本的路线图、我们的动力以及对它的期望。 Kotlin 2.0 发布路线图是什么? 我们计划再发布一个按照传统方式进行版本控制的版本,Kotlin 1.9,其中还将包括来自 K2 编译器前端的持续开发的更新,因为它已经接近稳定。未来不会有 Kotlin 1.10。 Kotlin 1.9 后的下一个主要版本将是 Kotlin 2.0。 为什么选择 Kotlin 2.0? 前端是编译器的主要部分。K2 编译器前端不仅仅是对旧编译器前端的重构,而是基于新架构从头开始的完全重写。我们一直在各种博客、视频和会议演讲...
- 下一篇
为什么95%的Java程序员,都是用不好Synchronized?
Synchronized锁优化 jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 锁主要存在四中状态,依次是:无锁-> 偏向锁 -> 轻量级锁 -> 重量级锁,他们会随着竞争的激烈而逐渐升级。注意锁可以升级不可降级,这种策略是为了提高获得锁和释放锁的效率。 锁优化 偏向锁 偏向锁是Java 6之后加入的新锁,它是一种针对加锁操作的优化手段,经过研究发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,因此为了减少同一线程获取锁(会涉及到一些CAS操作,耗时)的代价而引入偏向锁。 偏向锁的核心思想是,如果一个线程获得了锁,那么锁就进入偏向模式,此时Mark Word 的结构也变为偏向锁结构,当这个线程再次请求锁时,无需再做任何同步操作,即获取锁的过程,这样就省去了大量有关锁申请的操作,从而也就提供程序的性能。 所以,对于没有锁竞争的场合,偏向锁有很好的优化效果,毕竟极有可能连续多次是同一个线程申请相同的锁。但是对于锁竞争比较激烈的场合,偏向锁就失效了, 因为这样场合极有可能每次...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6