当前课程知识点:ARM微控制器与嵌入式系统 >  第五章 ARM微控制器的各种外设 >  5.8.2 ARM微控制器外设:ADC基础 >  5.8.2 ARM微控制器外设:ADC基础

返回《ARM微控制器与嵌入式系统》慕课在线视频课程列表

5.8.2 ARM微控制器外设:ADC基础在线视频

5.8.2 ARM微控制器外设:ADC基础

下一节:5.8.3 ARM微控制器外设:ADC寄存器与编程

返回《ARM微控制器与嵌入式系统》慕课在线视频列表

5.8.2 ARM微控制器外设:ADC基础课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家继续回到我们的MOOC课堂

进行我们的ARM微控制器与嵌入式系统之旅

那么在这个单元里呢

我们继续进行ADC的学习

在上一个单元的学习里

我相信大家都建立了这样一种概念

ADC和DAC为代表的Data Converter

是我们嵌入式计算机系统

连接物理世界的桥梁

那么ADC的世界博大精深又丰富多彩

大家对这样一张图留下了印象

从不同的速度到不同的精度

我们有很多很多种ADC的选择

而我想说的是ADC的精彩

不仅仅在于它有很多种

而在于每一种ADC的背后

是过去几十年里人类智慧的结晶

用各种各样的巧妙方法

来设计出各种各样结构

很精妙像艺术一样的电子学

来实现高精度的物理量的测量

那么我们在微控制器里头上节课已经讲过

主要都是SA型的ADC

那么SA型的ADC

也就是说每当我们用它来对一个物理的量

一个模拟电压值进行采集的时候

微控制器在以非常快的速度

进行猜数字的游戏

猜的次数越多

获得的比特数越多

然后拿到了一个0和1的序列

给我们的微控制器

给我们C语言程序算法来进行使用

所以在我们的微控制器里头

一般来讲都会有一个模块

是ADC而且是用SA工艺实现的

往往它的精度在8到12个比特之间

而且为了设计和使用的方便

我们当代的微控制器

往往不仅带ADC

而且这个ADC往往是多通道的

可能会有多个ADC模块在微控制器片内

而每个模块又会在前头

接着多个输入引脚的Channel

可以对多个物理量

进行交替的轮次的测量和量化

那么我们在这节课里

再来学习一下更加通常意义上

我们的微控制器

我们的ARM微控制器里头

ADC是怎样的

以及ADC的一些基本概念

那么通过刚才的语言描述

我们已经隐隐约约建立了一些初步的概念

我们拎出来看一看

无论是DAC从数字变成一个模拟电压值

还是ADC从一个输入的模拟电压值

变成我们微控制器可以处理的

0和1序列的数字值

那么它都会有这样一些共同的概念

比如说我们的数字量可能是N个比特

就是N比特的DAC或者N比特的ADC

那么大家可以想如果这个N是8

比如说我们有个8比特的ADC

就意味着我们对于输入的电压值

能够转换成从0000八个0

到1111八个1的之间的二进制数

也就是16进制的00到FF

就意味着我们对于输入的电压值

实现了二百五十六分之一

这样一个精度的分辨和测量

那么对于输入或者输出的模拟电压值呢

跟这样一个数据从00到FF的

动态范围相对应的

也有一个模拟的range

或者叫span

就我们所说的动态范围

所以一个ADC工作的时候

我们其实会给它设定

不同的输入电压的动态范围

如果我们测量的物理量

传感器的输出电压范围

超过这样ADC的范围怎么办呢

我们要通过模拟电路的设计

把它调整到ADC适宜的范围内进行测量

那么这是模拟电路

此外还有很重要的参考量

就是无论是ADC系统还是DAC系统

我们涉及到跟模拟的电压值打交道的时候

量这个电压值用一把尺子量

这个尺子一定要有一个准确的刻度

那么在ADC和DAC里都会有一个参考电压

那么这个参考电压得很准

大家想想是不是

如果我们希望对一个电压

以千分之一的精度进行量化

那么我们就应该把它不停地

跟一些参考电压比

而这个基准的参考电压

无论是哪个值

它一定也要有不低于这个千分之一的精度

这个测量结果才有意义

所以说我们拿着一把尺子的时候

我们要测一个毫米

这个尺子上的刻度可能有大有小

略有误差

但这个误差应该远小于一个毫米

我们这把尺子才是准的

否则测出来的结果我们就会认为有问题

或者需要校正

那么另外一个概念

就是有了这么一个N比特的ADC、DAC的概念

我们再来回过头来看我们微控制器的

电子学系统

你会发现

除了我们熟悉的通讯

除了我们做简单IO时序中断

我们更多更多的应用

是要跟物理世界发生关联

我们可能会有一个传感器把信号变成电信号

我们通过一个N比特的ADC

把它变成0和1的序列

以一定量的时间间隔采集进来

给我们的微处理器

或者我们数字信号处理

然后把我们处理的结果

又通过一个N比特的DAC变成模拟电压值

反馈给物理世界

当然我们可能会有效应期

把这样一个模拟的电压值

变成一个加热的功率

电机的转速

舵机旋转的角度等等这样一些控制量

大家想想是不是这么一个道理

所以大家会发现一个微控制器

仅仅靠通讯和数字手段

能做的事情还是有限

有了ADC 有了DAC

我们才能在一定的精度上

一定的速度上

来与物理世界的物理量发生关联

也就是ADC和DAC很大程度上

可能决定了我们的嵌入式系统的

能力 准确度 精度等等

那么小结一下

如果我们要用起一个ADC来

我们肯定会去琢磨一下它有多少位

也就是它的resolution分辨率是多少

那么N比特的ADC

我们就说它的分辨率

resolution是2的N次方

所以8比特就意味着

我们对于一个物理量

单就ADC这个部分而言

我们的分辨能力好于1%

另外一个就是它的速度

我们的ADC能在怎样的

速度的时钟驱动下

来进行模拟电压值到数据量的转化

是一秒钟能完成一次

是一赫兹

还是一秒钟能完成一百万次

是一兆赫兹

这是有差异的对吧

比如我们的声音信号

人说话的声音从几十赫兹到两万赫兹不等

所以如果我们一秒钟才采样一次

你采到那一些电压伏值

是无法有效重建出

一个人说话或者唱歌的声音来的

那么你需要一定的速度

那么第三个就刚才提到这个动态范围

我们一个ADC是对0到5伏内的电压

能够进行量化

还是对0到3.3伏范围内的电压进行量化

这是ADC在设计

或者我们在电路设计中决定的

那么我们模拟电路要帮助我们

把不同的传感器放大调整到合适的范围

给ADC来使用

并且尽可能保持它的信噪比

那么最后呢

还会有通道的概念

那么我们一个微控制器

可能有不同的ADC模块

每个ADC模块可能有多个通道

我们会对不同通道上的信号加以转换

那么多说一点拔高的内容呢

还会有一些

比如说ADC不是理想的

我们可能要较准

即使一个ADC的每一个输出值

和每个输入电压值

严格地遵循线性

但是它也许在很多时候

不像我们想象的从00这个数字值

一直到FFF的这个数字值

跟我们的电压范围的

0伏、5伏这个动态范围一一对应

有可能输入电压的时候

我们拿到的数据量已经有了一个最小值

也许我们的电压到了最大动态范围的时候

我们得到的数字量仍然不是FFF

于是我们需要用至少两个点

在这样一个数字与模拟电压的对应关系里

进行线性的一个校准

那么当然如果我们更精密地

去考虑一个ADC的性能

还会涉及到这根线是否直

在什么程度上弯

最大弯多少

那会涉及到ADC的

积分非线性和微分非线性等等

那么一个测量系统比如测一个温度

测一个物理量

它能够实现的精度

又远远不止是取决于ADC的

这有多少个比特这个精度

还取决于我们传感器自身固有的分辨能力

我们的模拟电路的放大电路的信噪比

那么这一系列因素的约束

我们可能在一个ADC的采样系统里

会讨论它的真正的有效位是多少位

包括我们提到的参考电压

也是一门高深的学问

大家如果拿着一个尺子去量东西

比如我要测一个电压测到1%

那么用来给ADC这个参考电压

不管是5伏还是3.3伏

它如果在比一个1%精度更差的程度上

自己在波动

是不是意味着我们用来量东西这把尺子

就不停的在晃

它就不准

所以我们要的测量精度越高

我们需要的参考电压源也就越好

所以高精度的到十几比特

乃至二十几比特的参考电压源设计

绝对是一个模拟电路的挑战

比如有这么一本特别经典的书

就专门讨论各种电压电流的参考源

那么限于本门课程的范畴呢

我们只是简单地介绍了ADC

这样一个有意思的世界的全貌

和我们怎么把它用起来

而如果大家有志于设计特别棒

特别牛的电子产品

有志于设计真正的高科技的

高精度的相关电子学系统

那么一定要深入学习

传感器模拟电路的相关知识

特别是在数字领域学习信号与系统的知识

那么信号与系统的知识

是一门专门的课程

在我们这门课里给大家简单提一提的

一个一定不能错过的基本概念

就是奈奎斯特采样定理

也就是当我们采样一个固有频率最大频率

是比如说fa的一个信号的时候

我们至少要使用

是这个频率两倍的采样系统来进行采集

才能做到信号的不失真

那么这是奈奎斯特采样定理告诉我们的结论

相关的推导和原理

大家可以在信号与系统里加以学习

那么这样一个原理决定了我们为什么

听音乐的时候所谓的高保真音乐

一般是40K赫兹或者是44K赫兹 比如CD

因为我们人类发音的

声音的主要信号频率波段

在几百赫兹到两万赫兹这个范围内

所以两万赫兹再高一倍

根据奈奎斯特采样定理

对于人发出来的声音

不管是唱歌还是说话 做到不失真

或者叫我们人的耳朵

能够听到的声音范围内做到不失真

40K赫兹就够了

那就是4万赫兹 对吧

跟奈奎斯特采样定理相关的

另外一个知识呢是抗混叠

如果我们采集的这个系统里头

有信号比我们采样率频率的一半还要高

就会出现一个很有意思的混叠现象

混叠现象用电子学知识

可能用信号与系统大家很难理解

我只举两个例子

比如说我们在计算机上

特别高分辨率的字体

切换到了低分辨率显示的时候

会发现会有奇怪的模糊

这个时候是一种空间上的混叠

那么从视觉空间上的混叠一个更

大家有体验的现象

就是大家如果盯着那个自行车的轮子看

当自行车骑得非常快的时候

会有一些瞬间

你觉得这个轮子的辐条不是在向前转

而是变成了向后转

这就是一种视觉上的混叠

所以说举这些例子是告诉大家

ADC采样实际上是进入了信号的领域

如何让一个数字采样系统

对信号能够充分还原不失真

大家其实还要学的知识有很多很多

那么在我们学习这样一个ARM微控制器里头

抛开这些很高深的知识

现在学不完的知识

说老师我们还是先把它用起来吧

模拟部分

ADC、DAC有哪些呢

大家看看这张图

左下角这个咖啡色的

就都是模拟器件

ARM的微控制器特别是Freescale NXP的微控制器

我们用的这个系列

有个非常厉害的一点

就是它有非常好的数模集成

一个数字的微控制芯片里

集成了非常棒的模拟器件

它有16比特的ADC也有12比特的DAC

还有高速的比较器

这些模块都在微控制器里设计好了

所以大家在后面的实验我告诉大家

如果你要测一些简单的物理量

温度 湿度 转速等等

这个微控制器不需要设计

太复杂的外扩电路

只需要把传感器的电信号

调整到合适的动态范围

捅到微控制器上很可能就够用了

这就是高度集成的微控制器

给我们带来的好处

那么在我们这样一个电子学系统里头

我们这节课比如说举一个例子

我们要把一个ADC用起来涉及到什么呢

会用刚才讲的知识

我们在这个芯片上

是有独立的参考电压引脚

我们称为Reference Voltage

在这个芯片封装里是有的

那么在我们这电路设计里

把它比较简单的

通过一个电感电容的滤波

跟我们芯片供电的3.3伏接到了一起

那么日后大家做高精度的

电子学系统设计的时候会知道

如果你需要的测量精度很高的时候

数字系统的这个3.3伏电压

它受数字电路的干扰

对于我们的模拟电路是不够干净的

也许你需要像我刚才提到的

更高精度 更干净 更准确的电压

来给这两个引脚作为参考电压源

让你的尺子变得更准

这是大家日后记住的

然后在我们要学习的电路里

我们有很多个引脚

都可以工作为ADC模块的Channel

可以测量电压值

那么我们把PORTC的D0引脚引出来

接在了一个可调电位器

也就是一个可调电阻的分压电路上

这样我们可以通过PTC0这个引脚

也就是ADC0的单端输入第14个通道

来对我们电位器上分到的电压进行测量

那么PTC0这样一个引脚呢

是接到我们这样一个电位器

在后面我们还会学习

这样一个ADC模块还有很多别的通道

接在了比如说温度

比如说光线这样一个传感器上

我们如何让微控制器拿到

或者测量到一个片外的模拟电压值

而反映出一个外部的物理量的变化

这是在后面的章节单元学习和实验里

我会教会大家的

那么学习用ADC

我没有特别在我们这个部分

给大家展开涉及的内容

是微控制器自身的ADC它的精度是多少

它的速度是多少

那么这些信息大家在我们芯片手册里

是可以查得到的

比如说像这样一张表格

我们可以看到我们的ADC

可以工作在14比特以下的

一个低分辨率的状态

也可以工作在相对高分辨率的状态

它们各自可以配置的这个时钟信号

也就是ADC转化的时钟频率

从一兆到十几兆是有一个范围的

而在不同的时钟频率下

下面我没打红框的那一列

又给出了对应时钟下

它真正对于物理量的最快采样间隔

或者叫采样率

那么大约在几K到几百K的这个范围

所以这样一些性能就决定了我们ADC

究竟能以怎样的精度

怎样的速度去采集物理量

等学完这个章节大家如果觉得它不够用

大家可以再来学习

如何外扩更高性能的ADC

来扩充你的嵌入式系统

ARM微控制器与嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--1.1 课程概览

-1.2 如何学好嵌入式系统

--1.2 如何学好嵌入式系统

第二章 绪论

-2.1 计算机的基本概念、发展历史

--2.1 计算机的基本概念、发展历史

-2.2 从晶体管到CPU

--2.2 从晶体管到CPU

-2.3 概念CPU、微控制器MCU和嵌入式系统

--2.3 概念CPU、微控制器MCU和嵌入式系统

-2.4 八卦计算机史

--2.4 八卦计算机史与创新

-2.5 不同领域、不同系列的嵌入式系统

--2.5 不同领域、不同系列的嵌入式系统

-2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU【习题】

--2.6 ARM历史与MKL25Z128 MCU【讨论】

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--3.1 CPU的基本结构和运行机制

-3.2.1 堆栈的概念

--3.2.1 堆栈的概念

--3.2.1 堆栈的概念【习题】

-3.2.2 堆栈的概念-头脑体操

--3.2.2 头脑体操

-3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构【习题】

-3.3.2 ARM的体系结构-头脑体操

--3.3.2 ARM的体系结构-头脑体操

-3.4.1 中断的概念和机制

--3.4.1 中断的概念和机制

-3.4.2 中断子程的概念和编程

--3.4.2 中断子程的概念和编程

-3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线【习题】

-3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制【习题】

第四章 ARM微控制器的开发

-4.1 第一种外设:IO

--4.1 第一种外设:IO

-4.2 IO外设的编程实操-点亮LED

--4.2 IO外设的编程实操-点亮LED

-4.3 IO外设的进阶知识

--4.3 IO外设的进阶知识

-4.4 嵌入式开发的基本概念与工具链

--4.4 嵌入式开发的基本概念与工具链

-4.5 嵌入式开发的进阶知识

--4.5 嵌入式开发的进阶知识

-4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)【习题】

-4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)【习题】

-E0.1 实验零 开发板的初步认识与工具链的安装

--E0.1 实验零 开发板的初步认识与工具链的安装

-E0.2 实验零 体验一个例程的编译与下载

--E0.2 实验零 体验一个例程的编译与下载

-E0.3 实验零 编写第一个程序:点亮核心板LED

--E0.3 实验零 编写第一个程序:点亮核心板LED

-E1 实验一 点灯秘籍

--E1 实验一 点灯秘籍

第五章 ARM微控制器的各种外设

-5.1 ARM微控制器外设学习概述

--5.1 ARM微控制器外设学习概述

-5.2.1 ARM微控制器外设:通讯

--5.2.1 ARM微控制器外设:通讯

-5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)【习题】

-5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器的外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)【习题】

-5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

--5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

-5.2.5 ARM微控制器外设:UART的寄存器编程(上)

--5.2.5 ARM微控制器外设:UART的寄存器编程(上)

-5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)【习题】

-E2 实验二 UART编程实操

--E2 实验二 UART编程实操

-5.3.1 ARM微控制器外设:IO的中断编程(上)

--5.3.1 ARM微控制器外设:IO的中断编程(上)

-5.3.2 ARM微控制器外设:IO的中断编程(下)

--5.3.2 ARM微控制器外设:IO的中断编程(下)

-5.4.1 ARM微控制器外设:定时器的原理

--5.4.1 ARM微控制器外设:定时器的原理

-5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程【习题】

-E3 实验三 定时器中断编程实操

--E3 实验三 定时器中断编程实操

-5.5.1 ARM微控制器外设:PWM的原理

--5.5.1 ARM微控制器外设:PWM的原理

-5.5.2 ARM微控制器外设:PWM寄存器与编程

--5.5.2 ARM微控制器外设:PWM寄存器与编程

-5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

--5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

-E4 实验四 数码管显示编程实操

--E4 实验四 数码管显示编程实操

-5.6.1 ARM微控制器外设:SPI通讯简介

-- 5.6.1 ARM微控制器外设:SPI通讯简介

--5.6.1 ARM微控制器外设:SPI通讯简介【习题】

-5.6.2 ARM微控制器外设:SPI寄存器与编程

-- 5.6.2 ARM微控制器外设:SPI寄存器与编程

-5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

--5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

-5.7.1 ARM微控制器外设:I2C通讯简介

--5.7.1 ARM微控制器外设:I2C通讯简介

-5.7.2 ARM微控制器外设:I2C的通讯协议

--5.7.2 ARM微控制器外设:I2C的通讯协议

-5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程【习题】

-5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

--5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

-5.8.1 ARM微控制器外设:ADC简介

--5.8.1 ARM微控制器外设:ADC简介

-5.8.2 ARM微控制器外设:ADC基础

--5.8.2 ARM微控制器外设:ADC基础

-5.8.3 ARM微控制器外设:ADC寄存器与编程

--5.8.3 ARM微控制器外设:ADC寄存器与编程

-E5 实验五 ADC编程实操

--E5 实验五 ADC编程实操

-E6 挑战实验

--E6 挑战实验

第六章 嵌入式系统设计

-6.1 嵌入式系统的接口与设计

--6.1 嵌入式系统的接口与设计

-6.2 嵌入式系统的实例

--6.2 嵌入式系统的实例

5.8.2 ARM微控制器外设:ADC基础笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。