第4章 异步串行通信
嵌入式编程中的异步串口通信

嵌入式编程中的异步串口通信第一章前言嵌入式编程是指在微控制器、单片机、嵌入式处理器等嵌入式系统中开发应用程序的一种软件开发方式。
在嵌入式系统中,串口通信是一种非常常见的通信方式。
而异步串口通信则是一种常用的串口通信方式,并且其在嵌入式系统中应用非常广泛,因此本文将就嵌入式编程中的异步串口通信进行详细的探讨。
第二章异步串口通信的基础知识异步串口通信是指每个字节之间没有固定的时间间隔,而是通过起始位、数据位、校验位、停止位四个元素来标识一个数据帧的开端和结尾,并且每个数据帧之间都是独立的。
异步串口通信相较同步串口通信而言,这种通信方式的实现成本较低,因此应用广泛。
异步串口通信这这四个元素的意义:1. 起始位:表示数据帧的开始,通常为逻辑低电平;2. 数据位:表示每一个字符的长度,一般可以是5、6、7、8位;3. 校验位:用于检测数据传输过程中是否发生错误;4. 停止位:表示数据帧的结束,通常为逻辑高电平。
需要注意的是,异步串口通信不能在两台计算机之间进行通信,因为两台计算机的时钟不同,会产生较多的误差,导致信号解析不准确。
第三章异步串口通信的实现方法在嵌入式编程中要实现异步串口通信,通常需要使用到中断、轮询两种方式,本文将就这两种方式进行详细的介绍。
3.1 中断方式中断方式是指当接收到一个字符之后,CPU会暂停当前正在运行的程序,转而执行中断服务程序。
中断服务程序就是在接收到字符之后,在中断中处理接收到字符的操作。
使用中断方式实现异步串口通信可以大大提升程序的效率,而且还可以减少程序的耦合度。
使用中断方式实现异步串口通信需要调用中断服务函数,并将其注册到对应的中断向量上,以实现中断函数的执行。
3.2 轮询方式轮询方式是指程序通过不断地查询串口缓冲区是否有数据,来实现数据的接收和发送。
这种方式比较容易实现,但是由于需要不断地查询缓冲区,因此会占用较大的CPU时间。
在实时性要求较高的系统中,轮询方式并不适用。
简要说明异步串行通信的帧格式。

简要说明异步串行通信的帧格式。
异步串行通信是通过一条串联的线路来传输数据的方式。
因为串口通信传输的信号线只有一个,所以异步串行通信需要通过传输的数据的特定格式来区分数据的传输。
这种方式是非常常见的,例如现在手机、电脑、家电等设备都使用这种通信方式。
异步串行通信的帧格式包括起始位、数据位、校验位和停止位四个部分。
1.起始位:异步串行通信每次数据传输都需要有一个起始位,通常情况下为1个低电平信号。
起始位是为了让接收端分辨传输的数据的开头位置。
2.数据位:数据位是该帧所传着的实际数据内容。
在异步串行通信方式中,每个数据位通过二进制的方式来传输,通常为8位或9位。
当数据位是9位时,最高位为奇偶校验位。
3.校验位:数据传输过程中,由于一些不可预知的原因,有可能会出现传输错误。
为了避免这种情况的发生,异步串行通信方式通常设置了奇偶校验或循环冗余校验等校验方式。
奇偶校验位是指每个数据帧中最高位为0或1,使数据帧中1的数量为偶数或奇数。
通过奇偶校验位的方式,可以检查是否出现了误码。
4.停止位:停止位是指数据帧最后一位信号。
在异步串行通信中,通常为1个高电平信号。
停止位的作用是为了告诉接收端,此数据帧已结束。
例如,一个常用的异步串行通信帧格式为8N1,即该帧由8位数据位、无奇偶校验位、1位停止位所组成。
因此,每个数据帧在传输过程中,都包含了起始位、8位数据位、无校验位、1位停止位,总共10位数据内容。
这种帧格式可以支持传输大多数的串行通信数据内容。
异步串行通信帧格式是一种通信方式,它在很多设备或系统中得到广泛的应用。
了解异步串行通信帧格式的基础知识,可以为大家更好地理解串口通信、网络通信、蓝牙通信等数据传输技术,有助于更好地使用和开发各种通信设备或协议。
异步串行通信

串口通讯—异步通信方式串行通信可以分为两种类型:同步通信、异步通信。
1.异步通信的特点及信息帧格式:以起止式异步协议为例,下列图显示的是起止式一帧数据的格式:图1起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
每一个字符的前面都有一位起始位〔低电平,逻辑值〕,字符本身由5-7位数据位组成,接着字符后面是一位校验位〔也可以没有校验位〕,最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。
停止位和空闲位都规定为高电平〔逻辑值1〕,这样就保证起始位开始处一定有一个下跳沿。
从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示:注:表中位数的本质含义是信号出现的时间,故可有分数位,如1.5。
例:传送8位数据45H〔0100,0101B〕,奇校验,1个停止位,则信号线上的波形象图2所示那样:异步通信的速率:假设9600bps,每字符8位,1起始,1停止,无奇偶,则实际每字符传送10位,则960字符/秒。
图22.异步通信的接收过程接收端以“接收时钟”和“波特率因子”决定一位的时间长度。
下面以波特率因子等于16〔接收时钟每16个时钟周期,使接收移位寄存器移位一次〕、正逻辑为例说明,如图3所示。
图3〔1〕开始通信时,信号线为空闲〔逻辑1〕,当检测到由1到0的跳变时,开始对“接收时钟”计数。
〔2〕当计到8个时钟时,对输入信号进行检测,假设仍为低电平,则确认这是“起始位”B,而不是干扰信号。
〔3〕接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。
假设为逻辑1, 作为数据位1;假设为逻辑0,作为数据位0。
〔4〕再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。
第4章 异步串行通信

第4章异步串行通信本章导读:目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM 口.由于历史的原因,通常所说的串行通信就是指异步串行通信。
USB、以太网等也用串行方式通信,但与这里所说的异步串行通信物理机制不同。
有的台式电脑带有两个串行口: COM1 口和COM2 口,部分笔记本电脑也带有串行口。
随着 USB接口的普及,串行口的地位逐渐降低,但是作为设备间简便的通信方式,在相当长的时间内,串行口还不会消失,在市场上也可很容易购买到USB到串行口的转接器因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以串行通信仍然是MCU与外界通信的简便方式之一。
实现异步串行通信功能的模块在一部分MCU中被称为通用异步收发器(Universal Asynch¬ronous Receiver/Transmitters, UART ),在另一些 MCU 中被称为串行通信接口( Serial Communication Interface, SCI)。
串行通信接口可以将终端或个人计算机连接到MCU,也可将几个分散的 MCU连接成通信网络,本章的主要知识点有①阐述了串口相关的基础知识;②描述了K60串口糢块的功能概要;③介绍了串口模块驱动构件编程时涉及的相关寄存器;④设计并封装了串行通信的驱动构件;⑤给出第一个中断例程的执行过程和设计流程。
本章介绍的K60UART模块的工作原理以及编程实例,这些编程实例都使用了基于构件的编程思想,读者在阅读时可以仔细体会,以求得对编程方法有更深刻的理解本章所出现的UART 字眼,在没有其他说明的情况下,都是特指K60的UART模块,本章串口驱动编程涉及的寄存器全部给出其详细介绍,目的是让读者对嵌入式底层驱动编程设计的寄存器有个直观的了解,以后各章节将不再给出相关寄存器的详细介绍。
4.1异步串行通信的基础知识本节简要概括了串行通信中常用的基本概念,为学习MCU的串行接口编程做准备。
异步串行通信的点对点型

异步串行通信的点对点型点对点型通信方式是DNC系统中最早采用的通信方式,它是基于RS232C/RS422串口来实现的,拓扑构造为星形,通信速率一般在IlO〜960Obit/s之间。
这种接口的通信协议通常分为三层,即物理层、链路层和应用层。
物理层相当于实际的物理联接,它实现通信介质上的比特流的传输。
链路层采用异步通信协议,它将数据开展帧格式的转换,提交物理层开展服务,或对物理层送到的帧开展检错处理,交给上层。
异步协议的特征是字符间的异步定时。
它将8位的字符看作一个独立信息,字符在传送的数据流中出现的相对时间是任意的。
但每一字符中的各位却以预定的时钟频率传送,即字符内部是同步的,字符间是异步的。
异步协议的检错主要利用字符中的奇偶校验位。
应用层就是具体的报文应答信号,往往由控制器厂家自行制定。
点对点的连接简单,成本低。
由于大部分计算机和数控机床都具有串行通信接口,所以实现起来比较方便。
但这种连接也有以下缺点:(1)传输距离短。
如RS232C的传输距离不超过50m,20mA 电流环和RS422/RS423的传输距离为IOOOnI左右。
(2)传输不够可靠。
这些接口和连接电缆的抗干扰能力较差,而且其传输过程的检错功能较弱。
(3)传输速率低,实时性差,响应速度慢。
(4)由于一台计算机不可能提供很多串行接口,所连设备数量有限,因此整个系统的规模就不可能很大。
(5)每台设备都需一条来自DNC主机的通信电缆,因此整个系统的电缆费用很大,而且导致系统环境的复杂性也大大增加。
(6)系统扩展不容易。
当系统需扩大时,不但要修改系统软件,而且也要更改硬件。
为了克服上述缺陷,人们提出了多种技术手段来满足DNC技术的发展需求。
早期主要采用的两种方式如图1所示。
第一种是DNC主机通过多路串口转换器实现与多台CNC机床的通信(图1(a)),但存在构造复杂、成本高、可靠性低等不利因素。
第二种是DNC主机通过智能多串口卡分别连结多台CNC机床(图1(b)),其构造连结虽然简单,但需开发智能通信软件,提高了成本。
异步串行通信的工作方式

异步串行通信的工作方式异步串行通信的工作方式,然后给出了VB MSComm控件下异步串行通信在电子衡器中的应用实例,包括硬件接口及软件设计。
关键词:RS-232 异步串行通信Visual Basic 电子衡器控件计算机一般提供了2个25针或9针的RS-232标准串行口,简称为COM1和COM2。
在某些应用中,我们还可以通过插通信卡来获得额外的RS-232标准串行口。
利用这些串行口可以与其它数字设备进行一般的数据通信,计算机的串行接口主要用于远程通信和低速输入输出设备。
由于串行数据通信传输线条数最少,而且有许多较便宜的专用芯片可实现它,发送和接受器也简单,因而对数据传输速度要求不高的计算机和数字设备间的近程通信,多采用串行通信实现。
而目前各个厂家生产的电子衡器的称重仪表多配有与上位机通信的RS—232C串行接口,因而计算机与称重仪表之间的数据通信用串口很容易实现,只需要制作一条2芯或3芯的数据线编写相应的接口程序即可实现,不需要增加其他硬件设备。
采用这种方式组成的微机电子衡器有许多优点:称重仪表经过多年的发展,在数据采集、抗干扰、可靠性等方面技术成熟,质量稳定;而计算机在存储容量、数据处理、查询、统计报表等数据管理方面有明显优势。
正是两者的完美结合,才使计算机与称重仪表组成的在线式称重管理系统得到了广泛的应用。
1串行通信的工作方式串行通信,可分为同步和异步两种方式。
异步方式是指在约定的波特率下,传送和接受的数据不需要严格的保持同步,允许有相对的延迟,虽然速度较慢,但经济实用,所以异步串行通信现大量应用于计算机接口技术中。
计算机与称重仪表就采用异步通信的方式传送数据。
1.1异步串行通信的数据格式在这种通信方式中,一般以一个字符为一帧。
一帧最少由三部分组成:起始位、数据位、停止位,开始是一位起始位以发送一个逻辑“0”表示,接着是表示这个数据的数据位,数据位可以是5位、6位、7位或8位,再加一位奇偶校验位,然后是一个、一个半或二个停止位,停止位以逻辑“1”表示。
异步串行通信设计综述

******************实践教学摘要在计算机技术迅速发展及其广泛应用的今天,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。
本次课程设计主要是系统中上位PC机与下位单片机之间进行异步串行通信的解决方案,实现了上位机向下位机发送信息以及下位机接收上位机的数据并能够向上位机发送数据的功能。
在此系统中,上、下位机分工明确,作为下位机核心器件的单片机只负责数据的采集和通信,而上位机以基于图形界面的Windows系统为操作平台。
在软件设计中,采用VC++6.0设计异步串口通信程序。
关键词:串行通信;异步通信;单片机目录前言 ------------------------------------------------------------------------------------------------------------ 3第一章异步串行通信系统组成原理 --------------------------------------------------------------------- 4 1.1 串行通信原理 --------------------------------------------------------------------------------------------- 4 1.2 串行通信的传输方式 ------------------------------------------------------------------------------------ 4 1.3 通信协议的使用 ------------------------------------------------------------------------------------------ 5 1.4 51单片机概述 --------------------------------------------------------------------------------------------- 5 1.5 51单片机串行接口结构--------------------------------------------------------------------------------- 6第二章系统设计 ---------------------------------------------------------------------------------------------- 8 2.1 系统设计思路 --------------------------------------------------------------------------------------------- 8 2.2 模块组成---------------------------------------------------------------------------------------------------- 9 2.3 系统组成---------------------------------------------------------------------------------------------------- 9第三章硬件电路设计--------------------------------------------------------------------------------------- 11 3.1 RS-232接口电路设计----------------------------------------------------------------------------------- 11 3.2 MAX232接口电路--------------------------------------------------------------------------------------- 12 3.3 异步串行通信总体电路-------------------------------------------------------------------------------- 13第四章软件设计 --------------------------------------------------------------------------------------------- 15第五章调试 --------------------------------------------------------------------------------------------------- 17 5.1 调试过程--------------------------------------------------------------------------------------------------- 19 5.2 调试结果--------------------------------------------------------------------------------------------------- 19设计总结 -------------------------------------------------------------------------------------------------------- 21参考文献 -------------------------------------------------------------------------------------------------------- 22致谢------------------------------------------------------------------------------------------------------------- 23附录 --------------------------------------------------------------------------------------- 错误!未定义书签。
异步串行通信原理

异步串行通信原理最近在研究异步串行通信原理,发现了一些有趣的东西,今天来聊聊它的原理。
你知道吗?我们生活中有很多类似异步串行通信的事情呢。
比如说,我们在排队的时候,一个个人依次去做一件事情,就有点像异步串行通信里数据一个个地传输。
想象有一条长长的队伍,每个人就是一个数据帧,按照先后顺序去完成某个任务(对应数据传输中的接收或者处理)。
打个比方吧,异步串行通信就像是一条只允许一个人走的小路。
这个小路上有起点(发送端)和终点(接收端)。
发送端会把要传输的信息分成一个一个小部分(就像一个个人),每次只送一个小部分,这就是异步传输里数据按帧发送的感觉。
这些小部分中间有一点时间间隔(就像排队的时候人与人之间保持一点距离),而且每一个小部分在发送的时候都会自带一些“标识”(如同一个人穿着表明自己身份或者任务的衣服),像起始位和停止位,接收端就靠着这些标识来判断一个数据帧从哪里开始到哪里结束。
老实说,我一开始也不明白为什么要这么麻烦,数据不能一股脑儿全发过去吗?后来发现这里面学问可大了。
这里面涉及到一些技术上的限制,就好比小路上要是一群人乱哄哄一起走就会出问题一样。
而且这个原理在很多地方有实际的应用,比如说电脑和外界的一些老设备通信,像早期的打印机那种。
电脑会按照这个异步串行通信的方式把要打印的内容一点点发给打印机。
说到这里,你可能会问,那数据出错了怎么办呢?这就说到异步串行通信里还包括了校验位这样的设计。
就像我们送东西,附了个小纸条,核对一下内容有没有错。
它这个校验位就是用来保证数据在传输过程中的准确性的。
不过呢,这个异步串行通信也有它的局限性,传输速度相比其他通信方式(像同步通讯)会慢一些。
延伸思考一下,随着科技发展,现在这种传统的异步串行通信的地位逐渐在有些地方被新的技术取代,但是在一些对可靠性要求特别高、数据量不大、并且通信速度不太要求特别快的地方还是用得很广泛的。
也不知道大家有没有接触到这种通信方式的实际例子呢?欢迎大家一起讨论啊。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章异步串行通信本章导读:目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM 口.由于历史的原因,通常所说的串行通信就是指异步串行通信。
USB、以太网等也用串行方式通信,但与这里所说的异步串行通信物理机制不同。
有的台式电脑带有两个串行口: COM1 口和COM2 口,部分笔记本电脑也带有串行口。
随着 USB接口的普及,串行口的地位逐渐降低,但是作为设备间简便的通信方式,在相当长的时间内,串行口还不会消失,在市场上也可很容易购买到USB到串行口的转接器因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以串行通信仍然是MCU与外界通信的简便方式之一。
实现异步串行通信功能的模块在一部分MCU中被称为通用异步收发器(Universal Asynch¬ronous Receiver/Transmitters, UART ),在另一些 MCU 中被称为串行通信接口( Serial Communication Interface, SCI)。
串行通信接口可以将终端或个人计算机连接到MCU,也可将几个分散的 MCU连接成通信网络,本章的主要知识点有①阐述了串口相关的基础知识;②描述了K60串口糢块的功能概要;③介绍了串口模块驱动构件编程时涉及的相关寄存器;④设计并封装了串行通信的驱动构件;⑤给出第一个中断例程的执行过程和设计流程。
本章介绍的K60UART模块的工作原理以及编程实例,这些编程实例都使用了基于构件的编程思想,读者在阅读时可以仔细体会,以求得对编程方法有更深刻的理解本章所出现的UART 字眼,在没有其他说明的情况下,都是特指K60的UART模块,本章串口驱动编程涉及的寄存器全部给出其详细介绍,目的是让读者对嵌入式底层驱动编程设计的寄存器有个直观的了解,以后各章节将不再给出相关寄存器的详细介绍。
4.1异步串行通信的基础知识本节简要概括了串行通信中常用的基本概念,为学习MCU的串行接口编程做准备。
对于己经了解这方面知识的读者,可以略读本节。
4.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0” 和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(Byte)。
串行通信的特点是:数据以字节为单位,按位的顺序(例如最高位优先)从一条传输线上发送出去。
这里至少涉及以下几个问题:第一,每个字节之间是如何区分开的?第二,发送一位的持续时间是多少?第三,怎样知道传输是正确的?第四,可以传输多远?这些问题属于串行通信的基本概念。
串行通信分为异步通信与同步通信两种方式,本节主要给出异步串行通信的一些常用概念。
正确理解这些概念,对串行通信编程是有益的。
1.异步串行通信的格式通常,异步串行通信采用的是NRZ数据格式,英文全称是:“standard non-retum-zero mark/space data format”,可以译为:“标准不归零传号/空号数据格式”。
这是一个通信术语,“不归零”的最初含义是:用负电平表示一种二进制值,正电平表示另一种二进制值,不使用零电平。
“mark/space”即“传号/空号”分别表示两种状态的物理名称,逻辑名称记为“1/0”。
对学习嵌入式应用的读者而言,只要理解这种格式只有“1”、“0”两种逻辑值就可以了。
图4-1给出了 8位数据、无校验情况的传送格式。
图4-1串行通信数据格式这种格式的空闲状态为“丨”,发送器通过发送一个“0”表示一个字节传输的开始,随后是数据位(在MCU中一般是8位或9位,可以包含校验位)。
最后,发送器发送1到2位的停止位,表示一个字节传送结束。
若继续发送下一字节,则重新发送开始位,开始一个新的字节传送。
若不发送新的字节,则维持“1”的状态,使发送数据线处于空闲。
从开始位到停止位结束的时间间隔称为一帧(Frame),所以,也称这种格式为顿格式。
每发送一个字节,都要发送“开始位”与“停止位”,这是影响异步串行通信传送速度的因素之一。
同时因为每发送一个字节,必须首先发送“开始位”,所以称之为“异步”(Asynchronous) 通信。
2.串行通信的波特率位长(Bit Length),也称为位的持续时间(Bit Duration)。
其倒数就是单位时间内传送的位数。
人们把每秒内传送的位数叫做波特率(Baud Rate),其单位是位/秒,记为bps,它是英文bit persecond的缩写,习惯上这个缩写不用大写,而用小写。
通常情况下,波特率的单位可以省略。
通常使用的波特率有 600、900、1 200、1 800、2 400、4 800、9 600、19 200、38 400、57 600、115 200等。
在包含开始位与停止位的情况下,发送一个字节需10位,很容易计算出,在各波特率下,发送1KB所需的时间。
显然,这个速度相对于目前许多通信方式而言是慢的,那么,异步串行通信的速度能否提得很高呢?答案是不能。
因为随着波特率的提高,位长变小,以致很容易受到电磁源的干扰,通信就不可靠了。
当然,还有通信距离问题,距离小,可以适当提高波特率,但这样毕竟提高的幅度非常有限,达不到大幅度提高的目的。
3.奇偶校验在异步串行通信中,我们是如何知道传输是正确的呢?最常见的方法是增加一个位(奇偶校验位),供错误检测使用。
字符奇偶校验检查(Character Parity Checking)称为垂直冗余检查(Vertical Redundancy Checking, VRC),它是为每个字符增加一个额外位使字符中“1”的个数为奇数或偶数。
奇数或偶数依据使用的是“奇校验检查”还是“偶校验检查”而定。
当使用“奇校验检查”时,如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。
当使用“偶校验检查”时,如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。
这里列举奇偶校验检查的一个实例,看看ASCII字符“R”,其位构成是1010010。
由于字符“R”中有3个位为“1”,若使用奇校验检查,则校验位为0;如果使用偶校验检查,则校验位为1。
在传输过程中,若有1位(或奇数个数据位)发生错误,使用奇偶校验检查,可以知道发生传输错误。
若有2位(或偶数个数据位)发生错误,使用奇偶校验检查,就不能知道已经发生了传输错误。
但是奇偶校验检查方法简单,使用方便,发生1位错误的概率远大于2位的概率,所以“奇偶校验”这种方法还是最为常用的校验方法。
几乎所有MCU的申行异步通信接口都提供这种功能。
4.串行通信的传输方式在串行通信中,经常用到“单工”、“双工”、“半双工”等术语。
它们是串行通信的不同传输方式。
下面简要介绍这些术语的基本含义。
(1)单工(Simplex):数据传送是单向的,一端为发送端,另一端为接收端。
这种传输方式中,除了地线之外,只要一根数据线就可以了。
有线广播就是单工的。
(2)全双工(Full-duplex):数据传送是双向的,且可以同时接收与发送数据。
这种传输方式中,除了地线之外,需要两根数据线,站在任何一端的角度看,一根为发送线,另一根为接收线。
一般情况下,MCU的异步串行通信接口均是全双工的。
(3)半双工(Half-duplex):数据传送也是双向的,但是在这种传输方式中,除地线之外,一般只有一根数据线。
任何时刻,只能由一方发送数据,另一方接收数据,不能同时收发。
4.1.2 RS-232C总线标准现在回答“可以传输多远”这个问题。
MCU引脚输入/输出一般使用TTL(Transistor Transistor Logic)电平,即晶体管-晶体管逻辑电平。
而TTL电平的“1”和“0”的特征电压分别为2.4 V 和0.4 V (目前使用3 V供电的MCU中,该特征值有所变动),即大于2.4 V则识别为“1”,小于0.4 V则识别为“0”。
它适用于板内数据传输。
若用TTL电平将数据传输到5 m之外,那么可靠性就很值得考究了。
为使信号传输得更远,美国电子工业协会(Electronic Industry Association, EIA)制订了串行物理接口标准RS-232C。
RS-232C采用负逻辑,-15 V〜-3 V为逻辑“1”,+3 V〜 + 15V为逻辑“0”。
RS-232C 的最大传输距离是30 m,通信速率一般低于20 kbps。
当然,在实际应用中,也有人用降低通信速率的方法,通过RS-232电平,将数据传送到300 m之外,这是很少见的,且稳定性很不好。
RS-232C总线标准最初是为远程数据通信制订的,但目前主要用于几米到几十米范围内的近距离通信。
有专门的书籍介绍这个标准,但对于一般的读者,不需要掌握RS-232C标准的全部内容,只要了解本节介绍的这些基本知识就可以使用RS-232。
目前一般的PC均带有1个到2个串行通信接口,人们也称之为RS-232接口,简称“串口”,它主要用于连接具有同样接口的室内设备。
早期的标准串行通信接口是25芯插头,这是RS-232C规定的标准连接器(其中,2条地线,4条数据线,11条控制线,3条定时信号,其余5条线备用或未定义)。
后来,人们发现在计算机的串行通信中,25芯线中的大部分并不使用,逐渐改为使用9芯串行接口。
一段时间内,市场上还有25芯与9芯的转接头,方便了两种不同类型之间的转换。
后来,使用25芯串行插头极少见到,25芯与9芯转接头也极少有售。
因此,目前几乎所有计算机上的串行口都是9芯接口。
图4-2给出了9芯串行接口的排列位置,相应引脚含义见表4-1。
在RS-232通信中,常常使用精简的RS-232通信,通信时仅使用3根信号线:RXD(接收线)、 TXD(发送线)和GND(地线)。
其他为进行远程传输时接调制解调器之用,有的信号也可作为硬件握手信号,初学时可以忽略这些信号的含义。
表4-1 9芯串行接口引脚含义表4.1.3电平转换电路原理在MCU中,若用RS-232C总线进行串行通信,则需外接电路实现电平转换。
在发送端,需要用驱动电路将TTL电平转换成RS-232C电平;在接收端,需要用接收电路将RS-232C电平转换为TTL电平。
电平转换器不仅可以由晶体管分元件构成,也可以直接使用集成电路。
目前使用MAX3232芯片较多,该芯片使用单一+3 V电源供电实现电平转换。
图4-3给出了 MAX3232 的引脚。
引脚含义简要说明如下。
Vcc (16脚):正电源端,一般接+5V;GND (15 脚):地;VS+ (2 脚):VS+ = 2Vcc-1.5V=4.5 V;VS- (6 脚):VS- = -2Vcc-1.5V=-7.5 V;C2+、C2- (4、5脚):一般接0.1 nF的电解电容;C1+、Cl- (1、3脚):一般接0.1 |iF的电解电容。