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

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

5.8.1 ARM微控制器外设:ADC简介在线视频

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

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

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

5.8.1 ARM微控制器外设:ADC简介课程教案、知识点、字幕

各位同学大家好

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

欢迎大家继续回到我们

ARM微控制器与嵌入式系统MOOC课堂

那么我们继续进行

ARM微控制器的外设的学习

在这个单元里呢

我们要开始学习

应该是微控制器里头最最最重要的一类外设

应该我没有用别的词汇形容过

我们之前所学习的包括通讯 时钟

其他的那些外设

为什么呢

因为在这个单元里

我们要学习的是数据转换器

包括模拟到数字的ADC和数字到模拟的

DAC这样一些基本概念

那么我们做一个微控制器

我们可以通过转换的接口跟外围通讯

我们可以是通讯协议

可以是串行的 并行的

可以是IO

但是我们实际上作为一个微控制器

总要跟我们所生活的物理世界发生关联

我们有时候可能想知道温度

有时候可能想知道光强

然后有时候我们想反过来控制一个加热器

有时候可能想要控制一个音量

控制一个旋钮

那么等等

所有这些对于物理世界之间的关联

都涉及到了这个单元所要学习的

数据转换器的概念

那么我们回忆一下计算机系统

怎么来跟物理世界发生关联

或者数据转换器究竟干的什么事呢

我们从最基本我们人做的操作想起

比如说我们呆在一个屋子里

这个屋子里就会有温度

那么绝大多数的物理量包括温度

它都是一个模拟量

或者说是一个连续变化的量

这个屋子里的温度不会骤冷骤热

它一定是从一个温度值

到另外一个温度值

在数学上 是一个连续平滑的曲线

发生变化的

所以如果我们把真实的温度值

连续的画在一张图表上

它就可能像这样以时间为横轴

以温度为纵轴

是一条看上去很平滑的曲线

无论它的波动幅度有多么大

那么如果我们是一个人的角度想了解

房间的温度的变化和温度的当前的值

过去的值 乃至趋势怎么办呢

我们要对它进行测量

把这些值记录下来

如果我们想知道这些趋势

和变化的规律的时候

我们可能要定时的测量

于是我们会得到间隔一定时间间隔点的

很多个测量值

于是这些值会在图表上就会构成若干个隔点

如果我们人通过脑补的方法

把这些点用平滑的曲线连起来

我们就再现了这个温度的变化趋势

那么就是这么一个过程

那么大家想想我们做了一个微控制器

做了一个嵌入式系统

它很重要的事情是替代人

去做很多自动控制的智能的事情

如何让一个计算机系统

做完我刚才说的人做的这件事

对于身边的物理量加以了解

从而进行控制呢

这就涉及到了我们这个单元要学习的

Data Converter也就数据转换器的概念

那么其实Data Converter

一般来讲会有两个主要的相反的方向的概念

一个是从我们的连续变换的模拟量

变成01组成的数字量的ADC

就是模数变换器

也有从我们运算得到的数字量01的序列

变成连续变化的模拟量的DAC

也就是数模变化器

那么我们建立的一个基本概念

是要有某种电路的设计

某种电路的时限使我们的计算机系统

能够拿到像人测量以后的量测结果那样的

在时间上间隔离散化

在幅度上根据resolution 根据分辨率

量化以后的一个一个点的值

而不再是一个波动的这个电信号

或者是物理量

这样计算机才能更加有效率地

进行存储 传输

特别是运算

我们可以使用各种各样的数字信号的方法

来对这些物理量加以运算

获得比以前更好的性能或者更高的效能

那么回忆一下我们刚才

所讲过的这样一个概念

我们生活的物理世界里头的物理量

都是连续的模拟的

我们称为analog signal

不管是温度 压力 湿度

一个管道里的流量

一些这个射线 光线的剂量 能量

还有我们要测量的一些

包括速度这样的间接物理量

它都是连续的

我们的微控制器是一个离散的数字系统

它能够处理一个一个由0和1组成的数字

这两者如何关联起来呢

其实是两个步骤

从测量的角度

我们总会有各种各样的传感器

帮助我们把不同的物理量模拟信号

变成模拟的电信号

比如我们有一个麦克风

它会把此时此刻老师说话的声音的

声波的震动的机械能变成电能

于是大家可以看到一个表现为

波动电压的电信号

这个信号是对我的声音信号的一个模拟

它用它同样的频率

和可以量化对应的幅度

来记录了我的声音信号

而对这些信号原始的加以放大

乃至我们模拟电路后面学的进行运算

复杂的运算

乃至积分 乃至对数

这些模拟的手段

都在模拟电路的这一类里头进行学习

而在微控制器这样一个数字系统领域

我们第二个要素就是通过模数转换器ADC

把一定的时间间隔 一定的速度

把这样的电压的波动信号上面

一个一个点的值测出来

存成一个数据的序列

给我们的微控制器

给我们的嵌入式系统

来进行处理

那么很多时候

我们看到的嵌入式系统高度抽象以后

都会跟这张图上的系统有点类似

我有个sensor

这个sensor有点像个温度计的作用

把温度变成电信号

而这个电信号我们通过ADC采样

以一定的时间间隔

把上面一个一个点的电压值存成数值

存成0和1的序列

而微控制器作为一个微小的计算机系统

对这些数据进行运算和处理做出决策

反过来可能要通过一个DAC数模变化系统

再还原成对物理量的控制

比如说我们控制一个暖厅一个加热器

然后我们来实现对我们所处的

这样一个环境比如冬天的保温

这个简单的功能可能很多人都体验过

比如说空调 比如加热器

我设定一个温度

那么于是我的控制器

就要在不停测量温度的基础上

温度高了降一降

温度低了升一升

把屋子调在一个适宜的温度上

这就是一个典型的自动控制系统

那么在这个控制系统当中

我们就会体会到

ADC、DAC这样的数据转化器

它是我们的嵌入式系统与物理世界

发生关联的两个桥梁

好 那么我们回顾一下

数据转化器是发挥这样的作用

它如何实现呢

如果我们抛开计算机嵌入式系统

这样一个大背景

冷静下来想一想

其实数据转化器的本质是Data Converter

就是数据转化

把我们不知道是多少的量

把我们想要的不知道如何称量的量

以一种数据的方法表达出来

这样一种方式

其实在我们生活当中非常的常见

大家都很熟

就是测量 对吧

我们看到一个盒子

用大小 比较大来形容是形容不清楚的

我们要拿一把尺子去量它

而在我们的世界当中

有大量大量的系统

在我们知觉不知觉的时候

完成量测的技术

比如说Data Converter

实际上是讲ADC、DAC

那么美国的AD公司就有一本非常厚的书

像这个封面这样

我们今天这个课件里有很多图

是从这本书里头找出来的都非常经典

那么这本书里当时举了一个最早的例子

就是古代的伊斯坦布尔的取水器

比如大家购买水或者要取水

那么这个水我要称量不同的量给要水的人

那么我始终使用同样的管道来放不同的量

这个效率就很低下

那么他们聪明的古代人的解决方法是什么呢

是用8倍、4倍、2倍、1倍不同粗细的管子

在一个同样深度的池子上凿开了很多眼

然后当要取水的时候

把要的水量转换成这个数据

然后堵上一些管子 留下一些管子

放指定长的时间

就得到了一定份数的水

那么这就是一个最最简单的数模转换器

要多少水

把数字变成模拟量

这个水量

于是大家可以想象

给水的精度其实就是最细的那个管子

放单位时间的水量

比这更小的量就不在考虑范围内了

也就是说在给水的时候

小于这个的量就忽略当作误差了

那么这样的生活中无处不在的数字转换器

包括尺子 包括取水

到了电子学的时代

比我们电子计算机出现更早的时候

人们已经开始想能够用电子学的方法

帮助我们测量很多量吗

其实是可以的

比如这里还有一个例子

那么我们都知道在计算机出现之前

我们会有显示屏

会有电子束

那么电子打成束以后

在一个电场当中它会发生偏转

那么如果我们把我们要测量的物理量

转换成电信号

叠加在一个电子束方向的平行板上

那么这个板上

就会加上不同幅度的电压值

使这个电子束

发生不同程度不同角度的偏转

而如果像这张图所示

这样一个窄窄扁平的电子束

因为平行板上加的电压值不一样

使它最终打到屏幕上的位置不一样

而我们对这个屏幕进行了这样的编码孔

于是打到最上面的时候

四个孔都有 得到了1111

打到最下面的时候

四个孔都挡住 我们得到了0000

实际上它是一个借助电子偏转的

最简单的ADC

模拟到数字的转换器

于是一个电压值是大是小

我们没有办法量化

加到电场上

看看被它偏转以后电子打到哪

我们就可以在四个比特

也就是十六分之一的精度上

对于这个电压的大小进行量测

那么这就是早期的用电学方法

进行度量或者来做这把尺子的方法

那么到了我们的微控制器里头

到了我们现在用电子学里头

大家想想我们怎么实现一个ADC

能让我们的微控制器用起来呢

那么我们想一个特别极端的例子

说这个

我们就有一个一比特的ADC

也就是说我们进来一个电压值

我只需要一比特的区分信号

或者说就是定个量定个性

说这个电压是高还是低

那我们实际上

一比特ADC的最简单实验方法

我不知道大家学过模拟电路没有

其实就是比较器

比较器是这样一种电子器件

它可以在同向和反向两个输入端

给出不同的电压

那么当你高我低

或者我低你高的时候

它的输出端可以给出一个逻辑的1

或者逻辑的0信号

也就是我们电平标准

比如3.3伏的逻辑1或者0伏的逻辑0

所以它对输入的两个电压进行比较

输出1比特的0或者1

那么我们把它当电压比较器的时候

它是电压进行比较

但是我们把它当ADC的时候大家想一想

它是不是实际上就是一个比特的ADC

我给你一个参考电压

我给你个待测量的电压

于是用参考电压

对这个待测量的电压进行了量化

比它高就是1

比它低就是0

那比如说我的动态范围是3.3伏

我给了个参考电压是1.65伏

那么一个未知电压进来跟参考电压一比

在上半节那得到逻辑1

在下半节得到逻辑0

是不是我们就拥有了一个比特的ADC

那么如果有了这个思路

我再来问如果我们

就接着用比较器这个思路

来做ADC

让我们的单片机让我们的微控制器

能够对于输入电压知道它的值是多少

我要做两比特的ADC该怎么做呢

这个时候你会发现两比特的ADC

需要对于一个未知电压信号

当然这个电压信号

可能代表是温度是湿度

来自于传感器 对吧

进行分类

两比特意味着00到11

我们要把它分成四个档

所以我们至少需要三个比较器

来对这个电压的值进行判断

那么我们把输入的电压值

同时给到三个比较器的比较端

而这三个比较器

分别用三个不同的参考电压来当做阈值

于是我们就可以判断这个输入电压

究竟是在这三个不同阈值的

最下面的那个下面

还是最上面的那个上面

还是它们之间

于是得到了四个区间

那么这四个区间我们相应的

把它识别为00到11的两比特信号

于是我们就得到了两比特的ADC

那么多问一个问题

如果一个输入电压值要在这个rank2

第二个区间这个位置

那么我们三个比较器的实际输出是什么呢

大家想一想

那么我们会发现这三个比较器的输出值

从上往下是011

也就是我们的输入电压

比下面两个比较器的参考电压高

仅小于最上面那个比较器的参考电压

于是比较器的输出是011

而我们实际上拿到的两比特信息

是对于这四个电压区间是00到11的编码

所以一个完整的两比特ADC

应该是由三个比较器

加上一个编码电路来组成的

也就是把001100这样三个比较器的输出值

编码成对应的00到11的二比特的二进制信号

那么这个编码电路怎么设计

可以大家回忆一下我们这门课

第二个章节给大家讲的数字电路基础

我们知道用逻辑门电路

用74逻辑门电路用与门或门

是一定可以实现的

所以一个简单的两比特的ADC

就如这张图所示

我们把一个动态范围的参考电压

用电阻分压成了四个等份

其中三个值用来给比较器当参考电压

这样对于任意未知的输入电压

我们都可以跟它比一比

最后得到的

两比特 四个区间的区分度的量化

于是计算机系统拿到这两个比特的00到11

就对这个输入电压值的幅值是多少

有了一个初步的估计

这样就完成了一个简单的模数变化

我们的计算机就可以拿着

这个电压值的伏值的大小的信息

来进行进一步的处理了

那么问题来了

如果我们按照这个结构

要做一个分辨率更高

对于电压的测量精度

测量能力更强的ADC

我们应该怎么做呢

那么这样一类方法特别简单的ADC

我们称为flashADC

那么或者叫flash Converter ADC

也就是快闪结构的这种ADC

那么它都是用比较器

来对电压直接进行比较

得到我们要的结果

那么聪明同学马上会想一想说

两个比特意味着2的2次方有四个区间

所以至少需要三个比较器

那么需要N比特的这个分辨能力的ADC

就意味着我们这个电路

需要2的N次方减1个比较器

多吗

有同学说不多

仔细想一想

如果我们要十比特精度

就是千分之一的精度去测量一个物理量

那我们就需要2的10次方也就是1024减1

1023个电压比较器放在一起来工作

就算每个比较器需要占用的面积很小

那么这样一个芯片的功耗

以及它所要的面积

可能比我们的微控制器本身还大

所以我们flash ADC

是最快的一类ADC

但是它的缺点就是会非常的复杂

有同学说老师

你一会儿说简单 一会儿说复杂

到底为什么呢

你们想一想我们的flashADC的

结构和原理非常的简单

但是当有几千上万个比较器

要堆在一起的时候它的电路连接

电路关系非常的复杂

所以在工程科学我们会经常发现

想法简单的东西会在实现上很复杂

实现起来简单东西可能意味着

你在想法上要多费些脑筋

那么给大家举这个例子

我要告诉大家的是

人类发展到今天

如何把一个不知道的电压值

想办法变成0和1的序列

拿个尺子对它量一量这样的ADC

有很多很多种方法

那么除了结构原理方法最简单的flashADC

实际上ADC还有很多很多种实现方法

比如说我们再来看一看计数型的ADC

这样一种思路

这样一种ADC提出在1940年代

甚至比我们计算机出现还要早

它是电子学技术蓬勃发展时代的人们

用各种脑洞来想我们怎么测量物理量

提出的一类方法

那么这个图的左上角

有个大家熟悉的单元

我们叫做PWM模块

那么简单地讲讲它的方法

就是把我们要测量的模拟电压值的幅度

换成跟它成比例的一定脉宽的信号

然后我们用一个600K赫兹的时钟

就在这个与门下面一个更高频率的时钟

与这个脉宽信号与

于是这个时钟信号

仅当这个脉宽为逻辑1的区间内

时钟信号可以产生在与门的输出端

于是后面有个计数器

数一数在这个时间宽度内这个时钟信号

一共震动了多少次

也就数到了多少个窄脉冲

那这个计数值是不是就是量化了

这个脉冲信号的宽度

而脉冲信号的宽度

又与输入电压的幅度是成比例的

所以我们发现

我们用这样一种巧妙的时序电路

时序的数字电路

实现了对一个输入模拟电压值的数据量化

那么这个600K赫兹的时钟

分成了一个1%的频率

6K的赫兹去控制PWM模块采样

于是在一个PWM模块能够采样的范围内

600K赫兹的时钟最多能数出100这个数来

所以这个计数器最多能从00一直计到100

换成二进制就是不超过5个比特

所以这样一个电路

实现了一个对于输入电压值

不超过5个比特1%精度的量化

也就说把电压幅度变成脉冲宽度

再用一个很高的时钟频率

去数这个脉冲有多宽

数了多少个

然后再把这个数出来的计数值

变成一个0和1的序列

那么当我们的微控制器计算机

要处理这个序列的时候

只有拿到这些0和1

是不是就可以进行C语言的计算

进行寄存器的设置了

这也是一类ADC

那么很显然它比刚才的FlashADC

要慢一些

要花掉一些时间来完成这个时序的数数

所以比这张图为例设计于1940年代

只能实现6K的采样率

5个比特的精度

那么我们今天使用的微控制器

特别我们用的这个

ARM的微控制器里头的ADC

它是用什么样的方法呢

大家会发现ADC很好玩对不对

我们要把未知的模拟量

变成已知的0和1的序列

其实这个电路

就跟我们编程一样非常的灵活

会有很多很多聪明的先贤

想各种巧妙的方法来设计电路

能够实现这个功能

那么我们在微控制器里头

刚才说用的那一类ADC

我们称为逐次渐进型的ADC

或者称为SAR型的ADC

它的思路非常的简单

就像这张图所示

那么这张图大家看的时候

还觉得不太明白这是结构图啊

曾老师虽然说我们要看懂啊

看不懂 没关系

大家都做过我们的某一次的实验

有一个猜数字的游戏对不对

微控制器自己有个数

你不知道

你来猜

是不是跟我们有一个模拟电压输进来

对于计算机系统 电子学系统现在不知道

我要知道它是多少怎么办

我们说这个数在0到10之间

你猜一猜 我先猜个8

然后到时候大了

我再猜个6 你说小了

然后我说7 对了

那么逐次渐进型的ADC

就是用了类似于这样一个思路

我先猜一个数

这个数我用一个DAC还原成一个模拟电压

与数电压比一比

比较器告诉我是大了还是小了

根据大了还是小了

我再猜一个数

然后我再产生一个电压

跟输入电压比一比是大了还是小了

我猜的次数越多

我就越逼近这个真实值

所以这样一种过程在

我们刚才提到这本书的图里

就画成了称天平的一个比喻

说有个东西不知道多重

但是重量在0到64之间

那我们最有效率的比法是什么呢

先跟32比一比

比32大还是比32小

比32大或者比32小

我在它比出来的结果上再加个16

16比完了再加个8

8比完了再加个4

实际上我们这样子以2的N次幂往下比

每次就能确定二进制数里的一位

然后比多少次

就能获得几个比特的精度 对不对

所以画成一个电路

就是这样一个结构框图

但它在本质上

比我们刚才上一页看到的

一个反馈回来DAC变成模拟电压再来比较

思路上是一样的

所以我们如果放在一张图里来看

就会发现

我们使用逐次渐进型的ADC

对于一个模拟电压值进行测量

进行量测 进行估算

它的值是逐渐逼近真实值的

就像这张图所示

第一次猜

猜出个大概范围

第二次猜加上个小量更接近

实际上我们每猜一次

我们对于这个数据结果的二进制数

就多确定了一个比特

猜四次我就得到了四比特的二进制数的精度

那么有了这样一种思想

逐次渐进型的ADC设计起来

就比刚才的Flash ADC要麻烦

我们要有一个电路

想办法把数字量先DAC变成模拟电压

还要有个比较器

让它跟数据电压能够比

还要有一个控制逻辑

让这些周而复始地进行工作

最终得到一个结果

那么在这里不展开讲

大家在相关的资料上可以看得到

比如说我们要得到一个电压值

要把一堆0或者1的数字量变成模拟量

我们往往会用电阻网络

这是一个很有意思的高中的物理题

大家可能解过

说2倍的R

跟2倍的R跟1倍的R串联

这个电阻网络大家会发现

从下往上的每一个节点

对于输出电压的权重

刚好是二分之一 四分之一 八分之一

所以我们将一个数

二进制数

转换成它对应的电压3.3伏代表逻辑1

加在这四个输入端

我们就会得到

根据这个二进制数量化以后的模拟电压

而在芯片设计或者在DAC设计领域呢

更多的是使用权重的电流网络

流过一份电流

流过两份电流还是流过四份电流

然后通过这些开关的控制

来把01序列的每一位的数字

转换成跟它的位数对应的

8倍、4倍、2倍、1倍的电流流过

而这个流过的电流值

跨到了一个运放的反馈电阻上

我们就得到了一个与数字量成比例的

模拟电压值

那么这样一个电路

构成了一个逐次渐进型ADC的核心部件

形成了一个反馈网络

于是我们在一个时序逻辑的工作下

可以不断地产生这个电路猜出来的数字值

与输入电压值进行比较

周而复始

通过N个时序的比较

得到N个比特精度的ADC结果

所以最早大家看到的一些ADC的器件

不是大家想象中一个芯片

或者微控制器一个模块

而是这样一个巴掌大的板卡

就像这张图所示

左下角小小的是一个权重的电流网络

帮助我们进行DAC把数字变回成模拟

而上面有一个比较器

而那些看到的黑色芯片

全部是数字门电路

来帮助我们完成这个

周而复始比较猜数字的过程

所以这样一种逐次渐进型的ADC

在早期是个板卡

随着技术的不断发展

ADC、DAC慢慢变成一个硅片上的

若干个小芯片

变成一个单独的硅晶

变成一个陶瓷封装芯片

再到我们今天买到的单芯片的DAC、ADC

人类的电子学技术在不断集成化的过程当中

它从板卡变成了一个芯片

变成了一个微控制器里头的一个外设模块

那我们看看逐次渐进型的ADC

大家会发现我们对它的优缺点加以形容的话

它是quite fast比较快 对吧

然后相对来讲有点复杂

那么它的好处就是在我们的微控制器里头

绝大多数微控制器内置的ADC

都是这样一种思路

那么它们的精度

一般到8个比特到12比特之间

那么像这样的一类ADC

用SAR这样一种

逐次渐进的方法比较的ADC

用一个形象的方式来说

跟那个flashADC比

它是用时间换精度

或者用时间换空间

它通过逐次的比较来逼近一个精度

而不需要堆积那么多的电压比较器

所以时间持续的长

它的精度就可以相对得高

但是牺牲的就是它的速度

所以它只是quite fast

那么有了这样一些概念

我们就知道在我们的微控制器里

所工作的ADC它是怎样一种工作原理

那么这样我们就讲完了SA

这样一类ADC的基本原理

那么在我们的微控制器

待会要学习的那些模块里

基本上都是这一类的ADC

那么有的同学可能会说一句题外话

说老师

这个ADC看起来要这个不停的来回比较

但是在比较的过程当中输入的电压值

自己变了怎么办呢

这是一个非常好的问题

所以我们的ADC它的采样速度

应该快于我们的物理信号的变化速度

而如果物理信号本身

会发生较快速变化的时候

我们无法对它进行连续的测量

那么我们就需要一个比如说像电容

比如说像开关电容一样的结构

来进行采样和保持

使我们这样转化器在一个转化过程当中

输入端的电压值被hold住

方便我们稳定的完成后续的转化

那么讲完了前面这一个单元

在后面我们会学具体的编程

但我更想给大家讲的是ADC

是一个博大精深的领域

它可以写成一本书

可以讲成一门课

而我们作为微控制器的课程

建立一个基本的概念是

ADC就像是电子学系统

计算机系统的一把尺子

帮助我们去测量

转换成电学量以后的各种物理量

从温度到湿度

从速度到压力

而它的实现方法在过去的几十年

乃至上百年的时间里

无数先贤想出了各种各样巧妙的电路

把这些电压值一次性地比较

把这些电压值变成脉宽来数数

把这些电压值通过参数的方法循环地比较

甚至加上数字信号的系统方法

压缩噪声再加以测量

所以我们会发现

如果我们看微控制器片内是SA型的ADC

但如果我们看广泛的电子学世界

从Σ-Δ型的ADC到PIPELINE的ADC

不同速度 不同工艺方法的ADC

在今天的电子学的领域有广泛的使用

就如右边的这两张图所示

不同类型的ADC排列在这张图上

它们各自有各自的优点

有的精度特别高

有的速度特别快

但是基本上这样一个斜线的趋势

采样速度越快的ADC

它能够实现的精度

或者我们叫分辨率相对的就低

于是我们会根据我们所要测量的物理量

来加以适宜的选择

好 我们了解了ADC的世界

可能如何针对

你要测量的物理量和物理系统

去选择合适的精度 合适的速度

是一门博大精深的学问

在这门课里还无法充分给大家展开

但是我们建立了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.1 ARM微控制器外设:ADC简介笔记与讨论

也许你还感兴趣的课程:

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