当前课程知识点:ARM微控制器与嵌入式系统 >  第五章 ARM微控制器的各种外设 >  5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口 >  5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

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

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

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

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

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

5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口课程教案、知识点、字幕

各位同学大家好

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

欢迎大家继续回到我们

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

特别是跟着我们继续进行外设里头

异步串行通讯UART这个章节的学习

那么在这个章节里

我们开始要认识真正计算机上使用的串口

也就是所谓RS-232串口

乃至我们做实验要用USB虚拟的串口

究竟是怎么回事

特别是理解我们真正做一个通讯

怎么让我们的计算机

我们编程的计算机跟我们这块板完成通讯

乃至我们日后如果想把这个微控制器用起来

像曾老师所说的

跟一个GPS模块通讯想知道坐标

跟一个GMS的手机模块通讯想拨打电话

想发送短信 乃至上网

我们应该怎么来使用一个真正的串行通讯接口

那么经过前面两个单元的学习

特别是上一个单元的最后

大家跟着我一起做了一个小游戏

做了个人体的UART

我相信大家首先肯定特别明白了一件事

就是那个UART的那个数据帧

究竟是怎么样一个结构

平时为1 起始位为0

然后一个比特一个比特发送乃至停止位

乃至奇偶校验位

这个大家一定清楚了

那么同时在这个游戏当中

我不知道大家有没有体会到一件事

就是前面两个单元所讲的UART这样一种标准

这个数据帧

它只定义了逻辑上的1和0以及时序

比如在一个波特率驱使下的结构

但是它并没有规定0和1用什么来表达

比如说我们做游戏的时候

人体UART我们就可以通过举手代表1

放手代表0

而我们都知道在数据系统里头

只有你定义了1和0

逻辑本质是一样的

那么换言之如果我们用的是一个微控制器

我们用5伏代表逻辑1的微控制器

那么它就是在5伏和0伏之间电压跳变

如果我们用ARM的

我们现在这门课里的微控制器

它是以3.3伏电平代表逻辑1

那么它就在3.3伏和0伏之间跳变

而实际上如果我们笼统的说

一个计算机有没有串口

或者跟计算机连接一个串口的时候

这个时候所说的serial port

它在UART这个数据帧上

因为我们前面所讲的是高度一致的

但是它的电平标准是不一样的

那么我们称为RS-232的标准

在这个单元里我要给大家展开的讲一讲

那么RS-232这个标准是

实际上我们所使用的个人电脑PC机的标准

那么这个标准是由

美国的电子工业协会EIA提出的

有很多版本

比如现在我们所说的RS-232-C

那么这一系列的标准提出于1960年代

最早在1962年

那么现在看到的标准

基本上是成形于1969年

那么大家如果回溯的时候

会发现这些标准的提出比个人电脑的诞生

比我之前第二个章节

讲八卦计算机史的年代还要早

所以实际上是我们所使用的个人电脑

不得已遵循了已经存在的通讯标准

以便于跟已经存在的各种设备进行通讯

那么因为是这样一种兼容性

它的电平就非常的奇怪

比如说我们简单的讲

我们说5伏的TTL电平

虽然我们现在用的芯片是3.3伏

大家很好理解

5伏TTL的单端电平

我们用一个接近5伏的高电压代表逻辑1

低电压代表逻辑0

发送的时候由2.4伏到5伏代表逻辑1

0.4伏到0伏代表逻辑0

对于接收端呢 放宽一点标准

只要比两伏高就认为收到了逻辑1

比0.8伏低就认为收到逻辑0

这我们大家都很好理解

那么3.3伏的电平的芯片与之类似

到了RS-232

也就是我们买到个人电脑

如果带有一个D型串行接口的时候

我们就会发现它的电平是非常奇怪的

在这个标准里头

它是一种负电平逻辑

简单的说

就是对于发送端

我们使用了负的5伏到15伏代表逻辑1

用正的5伏到15伏代表0 逻辑0

大家发现出现负电压了

而且负电压代表逻辑1

高电压代表逻辑0

这是个非常奇怪的感觉

然后对于接收端呢放宽一点

只要低于负3伏到负25伏范围内

收到了一个电压都认为是逻辑1

高于正3伏到正25伏都认为收到了逻辑0

那么这样一种电平标准就是RS-232的逻辑电平

大家会觉得这个好奇怪

但是如果大家静下心来想

就跟上个单元最后做的人体UART一样

还是那个1和0跳变的逻辑数据帧

只是在给1给0的时候

使用了不同的电压来表征本质上的逻辑和时序

是完全兼容 完全一样的

它仍然是UART

但是按照这个电压来进行通讯

就是计算机上各串口的电平标准

我们称为RS-232

那么与这样一种电平标准相类似的

如果大家仔细看

计算机上的串口或者RS-232的

它不仅细化定义了电平还定义了接插件

那么像这样一种接插件像一个梯形一样

在英语里我们比较形象的

把它称为D型的插口

因为一边宽一边窄

竖起来就是个D型

那么当一对通讯的时候

它们互相插在一起

在这个金属圈的D型里头

有的是孔 有的是针

那么构成了一对可以插在一起的接插件

称为female和male型的接插件

那在RS-232标准最早是像这样一个25针的

D型插口里头

除了我们所讲到的地线 发送接收线

这三根线以外还有大量的数据握手

和流量控制的信号

之后随着计算机技术的不断发展

对于这些信号依赖越来越弱

我们在上一代计算机里看到最多的呢

是这样九PIN的插头

那么大家左边这张图可以看到的就是

它的这个D型插头里头的

female和male型的插座

那么有的是cable有的是做在计算机的背后

今天大家如果去买一些计算机

特别是工业使用的计算机

背后都有这样的插口

我们称为带有串口的计算机

那么大家理解在这样一个接口里除了地

除了发送

除了接收还有若干个进行流量控制

和收发两端数据握手的引脚信号

这些信号我在这里不展开讲

但是大家非常好理解

比如是我要做出一个通讯

他可能需要彼此各给一个高低电平

表示我就绪你可以发送

或者说我正在处理数据

请你暂停不要给我发数据

这样一些信号我们称为流量控制或者握手

而在我们这门课

或者在我们日常当代的嵌入式系统里头

用的越来越多的呢

就是一种简化接法

虽然是九PIN的接头

但是我们只连接了中间三根线

共上地

你的发送连我的接收

你的接收连我的发送

这是不是跟我们一开始讲的UART通讯的概念

是完全一样的呢

那么这里注意两件事

第一如果是跟计算机的串行接口连接的时候

这个线上发送的数据帧

还是我们讲的UART

但是电平标准要注意

一定是负的十几到20伏代表逻辑1

正的十几到20伏代表逻辑0的

这样一种RS-232的电平标准

第二呢

就是在这样一种连接里

我们没有了刚才所说的那些握手信号

所以我们一定要在软件层面

或者是自己编程的时候

本来就使用的是比较慢的通讯

来进行流量的控制

确保接收端能够来得及接受

发送端塞过来的所有数据

能够及时的处理

这个时候我们称为没有handshake没有握手

需要通过一些类似于XON and XOFF这样的协议

来进行流量控制

那么讲了这些以后

一个新的问题

如果我们有一个ARM的微控制器

它有一个UART的通讯模块

在我们接下来课里要编程让它跑起来

比如在我们这门课的单元里

我们想让它跟我们自己的电脑的串口连

我们应该怎么办呢

很多同学会想到

它电平标准不一样

你发送逻辑1是3.3伏

计算机的串口想收到负15伏才是逻辑1

我们需要一个不改变时间结构

和逻辑结构的电平转化芯片

这个芯片非常简单

就像个翻译官

拿到3.3伏翻译成负15伏

拿到0伏翻译成正15伏

或者反过来收到了正负电压

翻译成3.3伏和0伏

它是个interface一个接口芯片

那么实际上在我们电路板里

有大量的这样的芯片存在

来帮我们做这样电平转换

最有名的比如说美信公司

Maxim公司的MAX232这个芯片

什么功能都不干

就是完成电平转化

所以我们实际使用的很多微控制器的开发板上

它有一个D型的插头

让你用一根电缆能跟计算机的串口连

本质上就是有这么一个结构

微控制器以TTL的或者CMOS的3.3伏的逻辑

给出一个UART的数据帧

经过了MAX232这样一个电平转化芯片

碰到3.3伏逻辑1就变成负多少伏的逻辑1

完成电平的转化

而不改变帧的数据结构

再通过一个标准的D-Sub的接口

放在电路板上

这样我们使用一根标准电缆一头插计算机

一头插我们的板子

就可以完成微控制器与计算机之间的串行通讯

那么随着计算机技术的发展

大多数做实验的同学

你可能电脑上根本就不再有串口了

那怎么办呢

我们串行通讯的实验仍然可以做的

在后面单元我会带着大家做

那么我们更多的使用了是我们计算机上

有的另外一个接口

在讲通讯的时候

我跟大家讲过就是USB

USB是Universal Serial Bus的缩写

它的发明就是一个总线型的串行通讯

来替代已有的串口和并口

所以我们非常容易的能在市面上

找着这样一种UART转换USB的转换芯片

就像这张图所示

它的右边可以通过三根线

以一个标准UART的方式

连到我们的微控制器上

我们微控制器发出符合UART数据帧的0或者1

而它的另外一头呢

是一个USB的接口连到我们的计算机

通过USB这个芯片CP2102为代表

这样一种芯片的自己的功能

使我们计算机装上驱动以后

识别出一个虚拟的串行通讯接口

我们只要像标准串口一样

在计算机端编程或者读写

就能按照UART的数据帧读到微控制器

发给我们的数据

也可以通过USB接口

向微控制器以UART的数据帧发送数据

那么我们实际现在大家使用的Blazar

这个实验板

使用这样一种USB虚拟UART的通讯方式

那么讲完这个单元大家知道了

我们一个理想的UART数据帧

究竟是如何跟电路连起来的

如何跟计算机连

那么换言之如果大家以后想拿这个微控制器

自己玩点酷的东西

比如说要接个GPS

接个GSM

首先你要知道它有没有UART接口

一般都是有的

其次你要知道它的数据帧格式

比如波特率是多少

这得看手册

最后呢 你要看你挑的那个模块

它的接口是什么电平标准

是5伏为逻辑1的UART

还是3.3伏为逻辑1的UART

还是那个模块上

已经做了类似这样MAX232的电平转换

是RS-232的负电压

和正电压逻辑1、0的串行通讯

你一定要以匹配的方式接

它是TTL 你就接TTL5伏

它是RS-232

你就应该也做完电平转换以后连在一起

否则有可能烧坏这些芯片和器件

但是一旦电平解决了

数据帧还是我们前两个单元所讲的

UART的数据帧

大家就可以通过编程把它玩起来了

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.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口笔记与讨论

也许你还感兴趣的课程:

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