当前课程知识点:ARM微控制器与嵌入式系统 >  第六章 嵌入式系统设计 >  6.2 嵌入式系统的实例 >  6.2 嵌入式系统的实例

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

6.2 嵌入式系统的实例在线视频

6.2 嵌入式系统的实例

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

6.2 嵌入式系统的实例课程教案、知识点、字幕

各位同学大家好

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

欢迎大家继续回到跟我一起回到我们

ARM微控制器与嵌入式系统学习的

MOOC课程的最后一个单元

那么在上个单元我们讲到

我们从最小系统到完整功能

从内部模块的使用到结合外围电路

来看待这个系统

从单纯软件的编程写那个Main函数

到我们硬件的设计乃至软硬件的协同设计

在这样一门课程的最后一个单元里

我们应该认识到嵌入式系统的学习

我们初窥门径

开始有了那么一点点感觉

那么我们在以前中小学生写作文的时候

经常会说要扣一扣题

首尾要呼应

所以在这个单元里我想带着这样一种

初窥门径的嵌入式系统设计的思想

带着大家再来看一看第一节课里

我给大家举过的那些例子

大家跟着我一起体会一下

是否感觉有点不同

比如说我在第一节课举过的

这样一个Text-to-Speech语音合成的U盘的例子

那么这个例子在第一节课讲的时候

我们说它看起来像个U盘

实际上也是个U盘

它能把文本小说拷进去

语音合成朗读出来

那除了这个功能的印象

我给大家看过这张系统设计图

我们今天再来看一看

那么这样一个系统

我们再来看一看它的框图

我们会发现它的核心部分

是一个16位的MCU

我们本学期学习的ARM

是一个32位的MUC

这个16位MCU呢

是比它前一代性能更低一点

更早一点的产品

那么大家可以想想它的学习

不会比我们这学期学习的课程更难

那么要实现这样一个语音合成的

U盘或者闪存

在系统设计时候我们再来看看

当时画过的这些功能

我们把IO用起来

实现了按键和点灯的功能

来实现一些按键的输入和信号灯的反馈提示

然后我们把一部分IO

用作了一个SPI的通讯接口

来实现了与语音合成芯片之间的一种通讯

不断的把文本文件的信息

送给语音合成芯片

再通过一点模拟电路

接到扬声器上它能够播放出来

然后我们通过一个NAND Flash的存储卡的接口

实现了对于存储设备的访问

我们通过片内内置的

USB外设模块的这个接口

实现了对计算机的USB2.0的零通讯接口

那么在这个芯片外部

当然我们还有一小部分设计的模拟电路

实现了从USB的5伏或者电池

产生系统工作所需要的3.3伏

就这么一个框图

实现了完整的系统

那么大家不知道在这个时候

有没有产生一种感觉

跟曾老师在挑战性作业里布置的任务比

这个任务并不是有难度量级上的差别

因为IO我们会

SPI我们会

存储芯片不管怎么样也是个通讯接口

USB我们学过SPI 学过I2C

照着泛本写程序写通讯协议

我们应该也能实现

大家会突然发现这件事情好像我也能做

如果你有这种感觉

那就对了

那么我们再看它的程序实现

我们会发现在这个程序实现里头

跟我们之前写过很多程序很像

我们会有一些底层对于芯片的模块的封装

封装成一个一个函数

然后我们会用一系列的C语言函数成模块的

把我们所有要涉及到的对存储器的访问

对语音合成芯片SPI的访问

对于USB的通讯

都给实现成一层一层的函数

而在顶层实现了

对于文件系统里头文件的读取

和对于语音信号的控制发送

那么整个这里头会有一个中断的机制

来调配和协调这些任务的执行

所以大家如果能够想明白

这样一个程序框架

或者说大家能够从我们的挑战性的大作业

想明白该怎么实现它

你会发现这个程序

你看起来也分外的有感觉

那再举个例子

比方说我们给大家看过我的学生的作品的

这个放射源监控仪

这样一个小嵌入式系统

我们要实现对于一个物理传感器的

物理量的计数测量

要实现坐标定位

要实现短信的提醒

要实现低功耗

它实际上它整个流程是用了一个更简单

更低功耗 更便宜的八位的MCU

来做它的核心单元

但是我们从粒子探测器

来的模拟像经过模拟电路

可以作为计数信号给我们的微控制器

我们可以对它数数

也可以用它产生中断

把这个微控制器从休眠状态唤醒

然后我们使用了I2C的通讯

来实现跟加速度传感器之间的数据采集

来获得这个板子有没有晃动

有没有运动过

如果没有被动过

可以以更低的功耗

更长的待机时间来工作

然后我们用两个串行通讯UART

来分别实现与计算机之间的人机交互

和与手机GSM短信模块

和GPS定位模块之间的这些通讯

于是这样一个系统

从硬件的接触关系上来讲

我们使用了两个串口

一个I2C以及一个脉冲计数的

这样一个信号的输入

所以我们很显然就能看出

它的程序设计的结构像这样一个流程

我们通过是否设备收到了新的物理信号

设备是否被动过

设备当前的坐标

设备当前的数据发送短信

这样一些基本功能的组合

形成了一个让它低功耗工作的程序流程

那么有了流程有了思路

我们就是如何用代码和函数

把它给编写实现出来

那么更高级一点的

比如说我们的便携这样一个

MCA多道的这个粒子能谱的

这样一个系统

这个系统看起来好像更复杂

但是如果我们冷静下来看我们会发现

从硬件上来讲

我们是一个板上的微处理器的嵌入式系统

比我们现在学的微控制要难

但是大家也不怕

仔细再来看看这张图你会发现

哦 它有一个微处理器的MCU或者MPU

然后Flash和RAM这样的存储器

因为量太大

已经变成了画在电路板上的外扩器件

然后它对外有一系列物理量的测量

包括一个可编程逻辑

对于粒子探测器的计数的测量

这样一种系统的硬件结构

也许今天大家还无法直接想清楚

像前面两个例子那样

想清楚如何设计如何做

但是已经觉得它不是不可理解的

而它的程序设计呢

也是相应的更高一级

我们现在这样一块板卡上

跑起一个基本的操作系统

这个操作系统实现了存储的管理

实现了任务的调度

然后我们在这个操作系统

提供的函数基础上来编写软件

实现我们要的更高一级的功能

于是这样我们就从一个单程序的

微控制器系统

一个简单的微控制器系统

慢慢的学习 有朝一日

变成像这样一个外扩存储器的

运行着操作系统的

相对复杂的一个嵌入式系统

那么回过头来我们再用

嵌入式系统设计的角度

看看我们的Blazar系统

或者看看我们这个学期的实验的系统

我们会发现在这个系统上

有很多很多的要素

它比大家第一节课看它的时候的感觉

又好了很多

或者感觉清晰了很多

我们有作为输入设备的按键

我们有作为输出设备的蜂鸣器 显示屏

以及多色的LED灯

然后我们有测量运动的加速度传感器

也有测量环境温度和光照的

这样的物理传感器

然后还有各种各样的通讯接口

以及我们在CPU内部运行的时钟

那么在我上一节课

给大家的挑战性的这个实验内容里头

给大家提了很多idea

大家可以用它做出很多趣味的功能

我也鼓励大家用这个板上的外扩接口

去外扩一些外围电路

设计出更加酷炫

更加复杂的功能

但是归根结底

这样一个挑战性实验的目的

是让大家能够尝试着去真刀真枪的

设计实现一个完整的嵌入式系统

用在这个单元里我带着大家

回头看出来这些嵌入式系统设计的思想

站在顶层去看一看你想做的作品

所以给大家提一个额外的要求

就大家如果尝试挑战一个

挑战性实验内容的时候

不要盲于写某一个函数

不要盲于某一个螺丝钉的设计

适当的站出来拿一张白纸

把你想做的那个酷炫的功能

拆分成一个一个单元的实现

从系统设计的角度捋清你的思路

来提升自己对于嵌入式系统设计的感觉

看能不能产生一些

跟曾老师刚才所举的例子相类似的共鸣

把你的系统 把你的程序

设计的干干净净 漂漂亮亮

那么回顾我们一个学期短短的课程

当代的数字系统设计其实有两大脉络

一路呢就是像我们现在所讲的

基于微控制器

基于微处理器的嵌入式系统

我们将一个CPU

一个微型的计算机系统跑起来

在上面跑软件 实现我们要的各种功能

当然与之并行在这门课没有涉及的

现在非常火热的

还有一类思想是使用可编程逻辑器件

比如说FPGA

直接实现我们要的数字系统的时序 逻辑

或者甚至在这个可编程逻辑上

写出一个MCU

写出一个软核再来跑软件

这两支殊途同归

它的最底层是对于数字系统的

工作方式 时序电路 组合逻辑

这些基本概念的理解

那么最终我们应该抠住嵌入式系统的精髓

我们嵌入一个具体的应用

用恰如其分的嵌入式系统

来设计实现我们所需要的功能

所以就像我刚才在一开始所讲到的

一门嵌入式系统的设计课程学到现在

好像课程快结束了

但它并不是一个结尾

它只是一个开始

特别是知识的学习是学无止境的

哪怕在我们所学习这样一个网络平台上

也有大量相关课程大家可以拓展学习

从这样一个嵌入式课程出发

基于数字系统

我们可以进一步的

去学习这些硬件的设计

比如曾老师在清华就会开一门课

教大家后续把我们这学期

玩这样一个实验板自己动手给画出来

给设计出来

而要想把这样一个系统设计更好

大家往硬件方向发展

应该有扎实的模拟电路基础

能够善于把各种各样的电学量处理好

变成方便微控制器加以处理的方式

而模拟电路的信号

又往往从传感器相关的这些基础的

电与物理交叉的学科来产生

特别是很多奇妙的新想法

非常有赖于新型传感器的发明和发现

那么数字系统往软件这边走

我们可以进一步去学习程序设计

程序设计除了把程序编好

有志的同学应该超过我

还可以再去学一学一些数据结构的知识

一些人工智能相关的算法的知识

或者去学习更加深入的操作系统的

基础原理知识

所以说学无止境的嵌入式系统

是大家进入这样一个行当

进入这样一个领域

找到你的兴趣所在一个最好的敲门砖

回顾这门课最初

我给大家介绍我们这门课

结合了Blazar这样一个开源的硬件系统

这样一个系统重在开源

它其实从技术上来讲并不复杂

从难度上来讲也并不高深

但是最重要一件事情是结合这样一门课

我想领着大家能够轻轻松松把它给玩起来

那么大家在玩的过程当中共同的分享

形成我们这样说的一个

开放 分享 有趣 收获的

为主题这样一个学习的生态圈

大家能够从网上找到这些电路图

找到这些代码

包括我们这样一门课程

放在网上方便大家学习

我也希望有朝一日

大家把它玩的更好 玩的更酷

把你的感受 把你的作品

把你的代码再分享出来

大家再来共同的进步

所以回顾最初我们说Blazar这样一个系统

我们用了人类观测宇宙中

最最明亮的天体来命名它

这好像非常的酷炫

好像取了一个高大上的名字

但是当这门课进入结尾的时候

我想跟大家说的是

实际上宇宙中最最明亮的

并不是天上的天体

而是作为我们一个老师开设这样一门MOOC

或者在学堂

站在三尺讲台上讲这样一门课时

听我课的这些人

大家所拥有的无限可能性

也许我传递的只是小小的知识

但是这些知识在各行各业

与各行各业嵌入式相结合

可能在各位的手中就会生根发芽

就会点亮我们的生活

这样无限可能的希望之光

也许才是这个宇宙中最最明亮的东西

所以这门课的结语

我只想表达我对大家无限的祝福与期望

希望大家能够玩的愉快

在嵌入式学习和应用的道路上

找到自己的一条道路

越走越深 越远

谢谢大家

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 嵌入式系统的实例

6.2 嵌入式系统的实例笔记与讨论

也许你还感兴趣的课程:

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