串口的概述

什么是串口通讯?

串行通信是用于在两个或多个设备之间通信的最常见的低级协议。通常,一个设备是一台计算机,而另一个设备可以是调制解调器,打印机,另一台计算机,或科学仪器,如示波器或函数发生器。

顾名思义,串口以串行方式发送和接收信息字节——一次一个位。这些字节使用二进制格式或文本(ASCII)格式传输。

对于许多串口应用程序,您可以与您的仪器通信,而不需要了解串口如何工作的详细知识。通过在MATLAB中创建的串口对象建立通信®工作区。

如果您的应用程序很简单,或者您已经熟悉上面提到的主题,那么您可能想要开始创建串行端口对象。如果您想了解在与您的仪器通信时可能采取的所有步骤的高级描述,请参阅开始使用仪表控制工具箱

串口接口标准

多年来,用于连接计算机外围设备的多个串行端口接口标准已经制定出来。这些标准包括RS-232,RS-422和RS-485 - 所有这些都通过支持万博1manbetx串口对象。使用最广泛的标准是RS-232。

该标准的当前版本为TIA/EIA-232C,由电信行业协会发布。然而,术语“RS-232”仍然在流行使用,并在这里用于指遵循TIA/EIA-232标准的串行通信端口。RS-232定义这些串口特征:

  • 最大比特传输速率和电缆长度

  • 信号的名称、电特性和功能

  • 机械连接和销钉配置

主要通信使用三个引脚:传输数据引脚,接收数据引脚,和地引脚。其他引脚也可用于数据流控制,但不是必需的。

请注意

本指南假设您使用的是RS-232标准。参考您的设备文档,查看您可以使用哪种接口标准。

万博1manbetx支持的平台

支持MATLAB串口接口:万博1manbetx

  • Linux®64位

  • 苹果系统64位

  • 微软®视窗®64位

用串行电缆连接两个设备

该RS-232和RS-485标准定义了两个设备的串行电缆作为数据终端设备(DTE)和数据电路端接设备(DCE)连接。该术语反映了RS-232原点作为计算机终端和调制解调器之间的通信的标准。

在本指南中,您的计算机被认为是DTE,而外围设备(如调制解调器和打印机)被认为是DCEs。请注意,许多科学仪器起着DTEs的作用。

因为RS-232主要涉及连接DTE到DCE,引脚分配定义指定直通电缆连接,其中针1被连接到销1,针2被连接到销2,依此类推。使用发送数据(TD)引脚和DTE到DCE串行连接数据(RD)引脚显示在下面的接收。请参阅串行端口信号和引脚分配有关串行端口引脚的更多信息。

如果您使用一根直的串行电缆连接两个DTEs或两个DCEs,那么每个设备上的TD pin连接到另一个设备上,而每个设备上的RD pin连接到另一个设备上。因此,要连接两个类似的设备,您必须使用a零调制解调器电缆。如下所示,零调制解调器电缆穿过电缆中的传输线和接收线。

请注意

您可以将多个RS-422或RS-485设备连接到一个串行端口。如果你有一个RS-232/RS-485适配器,那么你可以使用串口物体与这些装置。

串行端口信号和引脚分配

串口包括两种信号类型:数据信号控制信号。为了支万博1manbetx持这些信号类型,以及信号接地,RS-232标准定义了一个25针连接。然而,大多数pc和UNIX®平台使用9针连接。事实上,串口通信只需要三个引脚:一个用于接收数据,一个用于传输数据,一个用于信号地面。

下图显示了用于在DTE九针阳型连接器的销分配方案。

此表描述与九针连接器相关联的引脚和信号。请参考RS-232或用于信号和引脚分配的用于25针连接器的描述中的RS-485标准。

串口引脚和信号分配

标签

信号的名字

信号类型

1

CD

载波检测

控制

2

理查德·道金斯

接收的数据

数据

3.

道明

传输数据

数据

4

DTR

数据终端就绪

控制

5

接地

信号地

地面

6

DSR

数据准备好

控制

7

即时战略游戏

请求发送

控制

8

CTS

清除发送

控制

9

国际扶轮

振铃指示

控制

术语“数据集”是与“调制解调器”或同义的“装置”,而术语“数据终端”是等同于“计算机”。

请注意

串行端口引脚和信号分配是相对于所述DTE。例如,将数据从DTE的TD销到DCE的RD管脚传输。

信号状态

信号可以是任意一个活动状态非活动状态。活动状态对应于二进制值1,而非活动状态对应于二进制值0。主动信号状态通常被描述为逻辑1,,真正马克。非活动信号状态常被描述为逻辑0,,空间

用于数据信号中,“上”时,接收到的信号电压大于-3伏更负,而“关”的发生为电压高于3伏更积极的状态时的状态。用于控制信号的“导通”时,接收到的信号电压大于3伏更积极,而“关”的发生为电压高于-3伏更负的状态时的状态。-3伏和+3伏之间的电压被认为是过渡区域,以及信号状态是未定义的。

为了使信号“开启”状态,控制装置处于无效状态(或降低)数据引脚和的值断言(或提出了),用于控制引脚的值。相反,以使信号输出到“关”状态,控制装置用于断言数据引脚的值,并处于无效状态为控制引脚的值。

下图描述了一个数据信号和一个控制信号的“开”和“关”状态。

数据大头针

大多数串口设备的支持万博1manbetx全双工通信,这意味着它们可以发送和同时接收数据。因此,单独的引脚用于发送和接收数据。对于这些设备中,使用TD,RD,和GND管脚。然而,一些类型的串行端口的设备只支持单向或万博1manbetx半双工通信。对于这些设备,只使用TD和GND引脚。本指南假设您的设备连接了一个全双工串口。

TD pin将数据由数据终端设备传输到数据终端设备。RD pin从DCE携带被DTE接收的数据。

控制引脚

九针串口的控制针被用来确定连接的设备的存在和控制数据的流动。控制引脚包括:

RTS和CTS引脚。RTS和CTS引脚是用来信号是否设备准备发送或接收数据。这种类型的数据流控制——称为硬件握手——用于防止传输过程中的数据丢失。当同时启用DTE和DCE时,使用RTS和CTS的硬件握手遵循以下步骤:

  1. DTE断言RTS pin来指示DCE它已经准备好接收数据。

  2. DCE断言CTS pin,表明通过TD pin发送数据是明确的。如果数据不能再被发送,CTS pin是不断言的。

  3. 该数据被发送到DTE在TD销。如果数据不再被接受,RTS引脚由DTE解断言和数据传输停止。

若要启用硬件握手,请参阅控制数据流:握手

DTR和DSR引脚。许多设备使用DSR和DTR引脚信号,如果他们是连接和供电。使用DTR和DSR发出已连接设备的信号遵循以下步骤:

  1. 所述DTE断言DTR引脚请求,即DCE连接到通信线路。

  2. DCE断言DSR pin表示它是连接的。

  3. 当DCE与通信线路断开连接时,DCE将取消DSR pin的断言。

DTR和DSR引脚最初设计是为了提供一种硬件握手的替代方法。然而,RTS和CTS引脚通常是这样使用的,而不是DSR和DTR引脚。参考您的设备文档以确定其特定的pin行为。

CD和RI别针。的CD和RI销通常用于指示某些信号期间调制解调器的调制解调器连接的存在。

调制解调器使用CD发出信号,表明它已与另一个调制解调器连接,或已检测到载波音调。当DCE接收到一个合适频率的信号时,即断言CD。如果DCE没有接收到合适的信号,CD是未断言的。

RI用于指示一个可听到的振铃信号的存在。当DCE接收到一个振铃信号时,RI被断言。当DCE没有接收到振铃信号(例如,它在环之间)时,RI未被断言。

串行数据格式

串行数据格式包括一个起始位、5到8个数据位和一个停止位。一个奇偶校验位和一个额外的停止位也可能包括在格式中。这个图表说明了串行数据格式。

串口数据的格式通常用以下符号表示:

数据位的数目-奇偶校验类型-停止位的数目

例如,8-N-1被解释为八个数据位,无奇偶校验位,和一个停止位,而7-E-2被解释为7个数据位,偶校验,和两个停止位。

数据位通常被称为a字符因为这些位通常代表一个ASCII字符。剩下的位被称为成帧位因为它们构成了数据位。

字节和值

组成串行数据格式的比特的集合称为a字节。首先,这个术语似乎不太准确,因为一个字节是8位,而串行数据格式的范围可以在7位到12位之间。然而,当串行数据存储在您的计算机上时,帧位被剥离,只有数据位被保留。此外,无论为传输指定的数据位的数量有多少,8个数据位总是被使用,未使用的位被赋值为0。

当读取或写入数据时,您可能需要指定价值,可由一个或多个字节组成。例如,如果使用。从设备读取一个值int32格式,然后该值由四个字节组成。有关读取和写入值的详细信息,请参阅读写串口数据

同步和异步通信

该RS-232和RS-485标准支持两种类型的通信协议:同步和异步。万博1manbetx

使用同步协议中,所有传送的比特被同步到公共时钟信号。这两个设备的最初自己彼此同步,然后不断地发送字符保持同步。即使是不是真的被发送的实际数据,位的恒定流允许每个设备知道另一种是在任何给定的时间。即,每个被发送的位或者是实际的数据或空闲字符。同步通信允许比异步方法更快的数据传输率,因为附加比特来标记每个数据字节的不需要的开始和结束。

使用异步协议,每个设备使用自己的内部时钟,导致字节在任意时间被转移。因此,使用数据格式而不是使用时间作为同步位的方式。

特别地,该数据传输是使用字的起始位同步的,而一个或多个停止位指示字的结束。发送这些附加位的要求导致异步通信是比同步稍微慢一些。但是,它的优点是处理器不必应付额外的空闲字符。大多数串口异步操作。

请注意

在本指南中,术语“同步”和“异步”指的是是否读写操作阻塞MATLAB命令窗口的访问。

比特是如何传输的?

根据定义,串行数据一次传输一位。比特传输的顺序如下:

  1. 起始位与值0传送。

  2. 数据位被传送。第一个数据位对应于最低有效位(LSB),而最后一个数据位对应于最高有效位(MSB)。

  3. 奇偶校验位(如果定义)被传输。

  4. 传输一个或两个停止位,每个位的值为1。

每秒传输的比特数是由该给定波特率。传输位包括开始位、数据位、奇偶校验位(如果定义)和停止位。

启动和停止位

中描述的同步和异步通信大多数串口异步操作。这意味着传送字节必须通过启动和停止位进行识别。起始位表明数据字节即将开始和停止位表明数据字节已转移。识别与所述串行数据格式字节的处理步骤如下:

  1. 当串行端口引脚是空闲(未发送数据),则处于“导通”状态。

  2. 当数据即将被传输,串口pin开关到“关闭”状态由于开始位。

  3. 由于停止位(s),串口pin开关回到“开”的状态。这表示字节的结束。

数据位

通过串口传输的数据位可以表示设备命令、传感器读数、错误消息等等。数据可以以二进制数据或文本(ASCII)数据的形式传输。

大多数串口使用5到8位数据位。二进制数据通常以八比特的形式传输。基于文本的数据以七比特或八比特的形式传输。如果数据是基于ASCII字符集的,那么至少需要7位,因为有2位7或128个不同的字符。如果使用了第8位,它的值必须为0。如果数据基于扩展的ASCII字符集,那么必须使用8位,因为有2位8或者256个不同的字符。

校验位

奇偶校验位提供传输数据的简单错误(奇偶校验)检查。此表描述奇偶校验的类型。

奇偶校验类型

奇偶校验类型

描述

甚至

数据位加上奇偶校验位产生偶数的1。

马克

奇偶校验位总是1。

奇怪的

数据位加上奇偶校验位产生的奇数个1。

空间

奇偶校验位始终为0。

马克和空间奇偶校验很少使用,因为它们提供最小的错误检测。您可以选择完全不使用奇偶校验。

奇偶校验过程遵循以下步骤:

  1. 发送设备设置奇偶校验位为0或1根据数据比特值,并检查所选奇偶校验的类型。

  2. 接收设备检查奇偶校验位是否与传输的数据一致。如果是,则接受数据位。如果不是,则返回一个错误。

请注意

奇偶校验只能检测到一位错误。多位错误可以显示为有效数据。

例如,假设数据位01110001被传输到您的计算机。如果选择偶数奇偶校验,则传输设备将奇偶位设置为0以产生偶数1。如果选择奇数奇偶校验,则传输设备将奇偶校验位设置为1,以产生奇数1。

查找您的平台的串口信息

您可以使用Windows和UNIX平台提供的资源找到串口信息。

请注意

您的操作系统为所有串口设置提供默认值。但是,这些设置会被MATLAB代码覆盖,对串行端口应用程序没有影响。

你也可以使用instrhwinfo函数以编程方式返回可用的串口。

使用serialportlist函数查找可用端口

serialportlist函数返回系统上所有串口的列表,包括由USB-to-serial设备和蓝牙串口配置设备提供的虚拟串口。该函数提供了一个串口列表,您可以访问您的计算机上,并可用于串口通信。例如:

serialportlist
ans = 1 * 3字符串数组“COM1”“COM3”“COM4”

请注意

serialportlist函数显示Windows上可用的和正在使用的端口苹果系统但是在Linux上,它只显示可用的端口而不显示正在使用的端口。

视窗平台

方法可以访问串口信息装置经理

  1. 开放装置经理

  2. 扩大端口(COM和LPT)名单。

  3. 双击通信端口(COM1)项。

  4. 选择端口设置选项卡。

UNIX平台

要查找UNIX平台的串口信息,您需要知道串口的名称。这些名称可能因不同的操作系统而异。

在Linux上,串口设备通常被命名ttyS0,ttyS1,等等。你可以使用一些用于显示或配置串口信息的命令。例如,显示哪些串口是可用的:

一些-bg/dev/ttyS*
/dev/ttyS0在0x03f8 (irq = 4)处是16550A; /dev/ttyS1在0x02f8 (irq = 3)处是16550A

显示有关的详细信息ttyS0:

一些ag)/dev/ttyS0
/dev/ttyS0,行0,UART: 16550A,端口:0x03f8, IRQ: 4 Baud_base: 115200, close_delay: 50,除数:0 closing_wait: 3000, closing_wait2: infinte标志:spd_normal skip_test session_lockout

请注意

如果一些公司命令不工作,请确保您对该端口具有读写权限。

用于所有支持的U万博1manbetxNIX平台,包括苹果系统,你可以使用stty用于显示或配置串口信息的命令。例如,显示串口属性ttyS0类型:

sttyag)ydF4y2Ba</dev/ttyS0

要将波特率配置为每秒4800位,输入:

stty速度4800</dev/ttyS0>/dev/ttyS0

请注意

这个例子展示了如何设置tty参数,而不是波特率。使用MATLAB串口设置波特率,参见配置串口通信设置