嵌入式硬件之ADC/DAC

写在前面

这几天在做一个寒假练项目,其中涉及到了音频的处理,ADC、DAC再次进入到了我的视野,并引起了我新的思考。

1、初次相识

记得去年七月份,本科毕业刚离校,就到研究生学校这边打杂,导师让我参与了一个小项目,那个控制器电路中有一个让我印象很深的的电路——ADC采样电路

这个电路目的很简单,就是读出P35的AD采样值,借此来估算VDD的大小,进行监测。

它的模拟信号就是电阻两端的电压,数字信号是通过P35读取到的数值,再根据相应的计算公式,就可以得出VDD的大小。

这里是对模拟信号——电压的数模转换。

其实对于AD转换来讲,大家从小都在接触,比如家家户户都有的水银温度计

利用水银的热涨冷缩原理,把人的体温以具体的数值显示出来。

再比如手机,大家用其播放音乐时,就是把比特流转化成电压信号,再通过扬声器播放出来。

再比如打电话时,不管是你这边听到声音,又或者你的声音被另一方听到,其中都离不开ADC、DAC。

2、为什么要有ADC/DAC?

万事万物的产生都是自有其道理,都有一种内在驱动力在驱动,那么是什么促成了ADC/DAC的出现呢?

大家都知道在我们的日常生活中有一种信号叫——模拟信号。比如上面提到的:温度、电压、电流、声音等。

模拟信号虽然很容易被人类接收,但有很多的缺点,比如很容易被各种“噪声”影响,又比如很难去存储和传输

而数字信号正好与其相反,不仅能大程度上隔绝外部的干扰,又便于存储。

所以把模拟信号转化为数字信号是为了更好的去处理和存储

3、ADC模数转换器

ADC——Analog to Digital Converter

只要是转换,就会有损耗,在ADC转换期间,有些模拟信号不可避免的会丢失。

举例来说0~5V的电压信号,你可以取这个范围的任意一个数值,你可以取到无数个数据,也就是说从理论上来讲,模拟信号的分辨率是无限大的。所以信号的丢失不可避免。

3.1模数转换流程

首先对模拟信号以特定的速率采样;采样之后,对其进行量化;量化后,对其进行二进制编码。

所以你会看到,在芯片技术手册上常有的一句话:我们的处理器ADC是几位几位的。

这里的分辨率用位数来表示,位数越多分辨率越高,以2的n次方倍。

举例来讲,0~1V的电压范围,如果是3位的ADC,那么1除以2的3次方等于0.125V,这就是这个ADC所能达到的精度。

上面那个0.125就表示ADC所能感受到的模拟信号输入的最小变化。

电压值每变化0.125V的数值,如上图橙色那条线,就会上升一个台阶,以此对应一个二进制的数值

以上便是ADC工作的流程:采样、量化、编码。

4、DAC数模转换器

DAC——Digital to Analog Converter

通过数字比特流来产生模拟信号。

因此对模拟信号重构的精确度取决于DAC的分辨率,12位的要好于3位的。

分辨率、基准电压和重构的时间是DAC的重要参数。

5、如何使用ADC/DAC?

如何使用ADC/DAC?其实很简单。

因为现在大多的处理器都会内置相应的片上ADC/DAC,而且都是通过外部总线与处理器相连的,故外部接口也比较简单,直接连接即可。如下图所示。

再配置好相关的寄存器使能,按照芯片技术手册的要求进行软件设计。

嵌入式硬件之ADC/DAC的更多相关文章

  1. FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译

    前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...

  2. ADC/DAC的一些参数

    1.LSB,Least Significant Bit LSB是指最低位一个bit的权值,比喻ADC是一把尺子,那LSB则是它的最小刻度.LSB=Vfs/(2^N),Vfs为full scale vo ...

  3. ADC/DAC设计常见40问

    本文章是关于ADC/DAC设计经典问答,涵盖时钟占空比.共模电压.增益误差.微分相位误差.互调失真等常见问题. 1. 什么是小信号带宽(SSBW)? 小信号带宽(Small Signal Bandwi ...

  4. 硬件相关-ADC原理(未完成)

    一.模数转换的一般步骤: 1)采样和保持 为了把模拟信号转换成对应的数字信号,必须首先将模拟量每隔一定时间抽取一次样值,使时间上连续变化的模拟量变为一个时间上断续变化的模拟量,这个过程称为采样. 为了 ...

  5. 对于adc dac使用细节

    1. 要更具内部线路图决定引脚分配,adc和dac绑定在一个线路上,所以设计的时候最好尽量间隔三个引脚以上,如果adc必须放到一起,请使用开关控制,但是dma等可能不能正常工作. 2.dac输出内部缓 ...

  6. Linux系统在嵌入式硬件上的移植

    =========================        基本常识       ========================= 一. Linux系统的基本构成: 1. loader 2.  ...

  7. 【嵌入式硬件Esp32】(1)例程Hello World Example 注释

    /* Hello World Example This example code is in the Public Domain (or CC0 licensed, at your option.) ...

  8. 【嵌入式硬件Esp32】ESP32 正确下载姿势

    程序的正确下载步骤,以8M flash为例子: 一.硬件连接 ESP32 的运行状态主要由 GPIO0 决定 二.ESP32 Flash 地址配置 ESP32 在编译时,通过 make menucon ...

  9. 【嵌入式硬件Esp32】Ubuntu 1804下ESP32交叉编译环境搭建

    一.ESP32概述EPS32是乐鑫最新推出的集成2.4GWi-Fi和蓝牙双模的单芯片方案,采用台积电(TSMC)超低功耗的40nm工艺,拥有最佳的功耗性能.射频性能.稳定性.通用性和可靠性,适用于多种 ...

随机推荐

  1. java web 404错误页面配置

    java web 404错误页面配置:注意红框的地方,在工程的web.xml文件里的最开头加入如下的内容便可,但是也有问题,针对以.action后缀名和.jsp后缀名不起作用, 因为后面配置了一些拦截 ...

  2. 解决Centos7误删Python问题

    1.前言 昨天安装Python3.6的时候.不小心把原来的Python全删了.不知道咋办了.后面参考一篇博客.重新安装了一下.相关的包全回来了.所以还是得注意root模式下.慎用rm -rf命令.(笑 ...

  3. IDEA中springboot项目添加yml格式配置文件

    1.先创建application.properties 文件,在resources文件夹,右键 new -> Resource Bundle  如下图所示,填写名称 2.生成如下图所示文件 3. ...

  4. js(jQuery)获取自定义data属性的值

    有时候因为需要在标签上设置自定义data属性值, <div class="col-sm-6 col-md-4" id="get_id" data-c_id ...

  5. SpringBoot项目存放微信的验证文件,把微信的验证文件放在根目录下

    我们做微信开发的时候,有时候会有如下要求 用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠. 下载文件 将以下文件上传至填写域名或路径指向的w ...

  6. 【LeetCode】1064. Fixed Point 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力求解 日期 题目地址:https://leetco ...

  7. 【LeetCode】1023. Binary String With Substrings Representing 1 To N 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  8. 【LeetCode】Longest Word in Dictionary through Deleting 解题报告

    [LeetCode]Longest Word in Dictionary through Deleting 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode. ...

  9. hud-5475 An easy problem(线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...

  10. CODEFORCEs 621E. Wet Shark and Blocks

    E. Wet Shark and Blocks time limit per test 2 seconds memory limit per test 256 megabytes input stan ...