07实验七 Linux环境下的串行通信实验

合集下载

(完整word版)linux下的串口通信程序详解

(完整word版)linux下的串口通信程序详解

linux下的串口通信程序详解
2009-07-19 12:37
为了说明问题,下面给出测试程序来理解linux下的串口操作流程,例程receive.c用来接收从串口发来的数据,而例程send.c用来发送数据到串口。

二者成功建立串口连接后,串口接收端会收到串口发送端发来的字符串数据“Hello,this is a Serial Port test!”。

1. receive.c程序清单:
2.send.c程序清单
分别将上面的俩个程序编译之后就可以运行了,如果是在两个不同的平台上运行,比如,在开发板上运行数据发送程序write(write.c编译后得到),在宿主机上运行结收数据程序read(read.c编译得到),采用串口线将二者正确连接之后,就可以运行来看实际的效果了:
首先在宿主机端运行数据接收程序receive:
[zhang@localhost]# ./receive
[zhang@localhost]#open /dev/ttyS0:Success
ready for receiving data...
The data received is:
Hello,this is a Serial_Port test!
[zhang@localhost]#
在接收端运行完程序之后再到发送端运行数据发送程序send:
#./send
ready for sending data...
the number of char sent is 35
#
运行完发送程序之后就可以在接收端看到接收的数据了。

也可以在一台PC机上来运行这两个程序,这时需要将串口线的2、3脚短路连接即可(自发自收),实际运行的步骤与上面相同。

07实验七 Linux环境下的串行通信实验

07实验七 Linux环境下的串行通信实验

连接驱动器的使能端,使得当RTS设置成高(逻辑1)时,有效RS485驱动器;设置RTS为低 时,使驱动器处于三态,这时候实际上从总线上断开了驱动器,从而允许其他节点可以使 用同一传输线。当使用RTS时,必须确保发送数据前将RTS设置成高,在发送完数据的最 后一位后,将RTS线设成低。。另一种可选方法是自动发送数据控制。这种方法要求特殊 的电路,当数据传输时自动使能或无效驱动器。它减少了软件开销和程序员的潜在错误。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用

linux串口命令交互实例

linux串口命令交互实例

linux串口命令交互实例Linux系统是一种开源的操作系统,拥有强大的命令行工具,方便用户进行各种操作和交互。

其中,串口命令是一种通过串口与外部设备进行通信的方式。

本文将以"linux串口命令交互实例"为主题,详细介绍如何在Linux 系统中使用串口命令进行交互。

1. 什么是串口命令?在计算机中,串行通信接口(Serial Communication Interface)简称串口,是一种通过串行方式进行数据传输的接口。

而串口命令就是通过串口与外部设备进行通信的命令。

在Linux系统中,通过串口命令可以实现与各种外部设备(如串口打印机、串口摄像头、串口调试工具等)进行交互。

2. 如何查看可用串口?在Linux系统中,可以通过以下命令查看可用的串口:ls /dev/ttyS*ls /dev/ttyUSB*其中,`/dev/ttyS*`和`/dev/ttyUSB*`分别表示串口和USB串口的设备文件。

通过这两个命令,可以列出系统中所有的串口设备文件。

3. 如何通过串口发送数据?在Linux系统中,可以使用`echo`命令通过串口发送数据。

以下是一个发送数据的示例:echo "Hello, World!" > /dev/ttyS0上述命令将"Hello, World!"字符串发送到`/dev/ttyS0`串口。

在实际应用中,你需要根据自己的情况修改串口设备文件,如`/dev/ttyS1`等。

4. 如何通过串口接收数据?与发送数据类似,通过串口接收数据也是使用`echo`命令。

不同的是,需要在命令中指定串口设备文件,并使用`>`符号将数据输出到文件中。

以下是一个接收数据的示例:echo "Receive data" > /dev/ttyS0cat /dev/ttyS0 > received_data.txt上述命令将"Receive data"字符串发送到`/dev/ttyS0`串口,并将通过这个串口接收到的所有数据保存到`received_data.txt`文件中。

Linux下串口通信编程

Linux下串口通信编程

Linux下串口通信编程一、什么是串口通信?串口通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。

使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。

二、串口通信的分类串口通信可以分为同步通信和异步通信两类。

同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。

2.1 同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。

这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。

它们均由同步字符、数据字符和校验字符(CRC)组成。

其中同步字符位于帧开头,用于确认数据字符的开始。

数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。

同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。

2.2 异步通信异步通信中,数据通常以字符或者字节为单位组成字符帧传送。

字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。

发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。

接收端检测到传输线上发送过来的低电平逻辑"0"(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。

在异步通行中有两个比较重要的指标:字符帧格式和波特率。

(1)字符帧,由起始位、数据位、奇偶校验位和停止位组成。

1.起始位:位于字符帧开头,占1位,始终为逻辑0电平,用于向接收设备表示发送端开始发送一帧信息。

2.数据位:紧跟在起始位之后,可以设置为5位、6位、7位、8位,低位在前高位在后。

3.奇偶校验位:位于数据位之后,仅占一位,用于表示串行通信中采用奇校验还是偶校验。

(2)波特率,波特率是每秒钟传送二进制数码的位数,单位是b/s。

异步通信的优点是不需要传送同步脉冲,字符帧长度也不受到限制。

《Linux程序设计》项目报告Linux下的串口和网络通信

《Linux程序设计》项目报告Linux下的串口和网络通信

成都信息工程大学项目报告课程名称:Linux程序设计题目: Linux下的串口和网络通信学院:电子工程学院班级:电科189*名:**学号:你猜教师: 提交日期:2020-12-28《Linux程序设计》答辩记录和总结报告评分栏摘要Linux操作系统从一开始就对串行口提供了很好的支持,在数据传输过程中,串口网络通信是一个重要的数据传输的方法,Linux内含了TCP/IP 网络协议,很适合在服务器领域使用,而服务器主要用途之一就是进行网络通信。

在Linux下开发高性能的网络通信程序,是充分发挥Linux网络特性的一个关键因素。

串口通信和网络通信有利于数据的传输以及储存,效率将会得到大幅度提升。

根据已经学习过的Linux知识和相关的文献与资料我们可以在虚拟机Ubuntu操作系统实现这个功能。

关键词:Linux;串口通信,网络通信目录1 绪论 ............................................................................................................................................ 12 系统总体设计............................................................................................................................. 12.1 系统功能需求................................................................................................................. 12.2开发环境与工具介绍...................................................................................................... 12.3 系统总体功能设计......................................................................................................... 13 系统设计与实现......................................................................................................................... 23.1 串口收发功能的实现..................................................................................................... 23.2 进程间通信功能的实现................................................................................................. 53.3 网络收发功能的实现..................................................................................................... 74 系统测试................................................................................................................................. 105 结论 ........................................................................................................................................ 11参考文献..................................................................................................................................... 13附录 ........................................................................................................................................ 141 绪论Linux的开源性与稳定性使其普及度越来越高,无论是用Linux构建服务器还是作为应用平台,都离不开数据之间的传输,而编程更是其核心所在。

Linux下串口通信详解(上)打开串口和串口初始化详解

Linux下串口通信详解(上)打开串口和串口初始化详解

Linux下串口通信详解(上)打开串口和串口初始化详解Linux下串口通信主要有下面几个步骤串口通信流程图下面我会一一介绍这几个步骤。

1.打开串口代码(串口为ttyUSB0)[java] view plain copy1.//打开串口2.int open_port(void)3.{4.int fd;5.6.fd=open("/dev/ttyUSB0",O_RDWR | O_NOCTTY | O_NON BLOCK);//O_NONBLOCK设置为非阻塞模式,在read时不会阻塞住,在读的时候将read放在while循环中,下一节篇文档将详细讲解阻塞和非阻塞7.// printf("fd=%d\n",fd);8.9.if(fd==-1)10.{11.perror("Can't Open SerialPort");12.}13.14.return fd;15.}打开串口时也可以多加一些内容,比如判断串口为阻塞状态、测试是否为终端设备等,这些是必要的,所以较上面的基本的打开串口的代码,更加完整健壮一些的代码流程如下所示:打开串口较完整流程图代码:[cpp] view plain copy1./**2.* open port3.* @param fd4.* @param comport 想要打开的串口号5.* @return 返回-1为打开失败6.*/7.int open_port(int fd,int comport)8.{9.char *dev[]={"/dev/ttyUSB0","/dev/ttyS1","/dev/ttyS2"};10.11.if (comport==1)//串口112.{13.fd = open( "/dev/ttyUSB0", O_RDWR|O_NOCTTY|O_N DELAY);14.if (-1 == fd)15.{16.perror("Can't Open Serial Port");17.return(-1);18.}19.}20.else if(comport==2)//串口221.{22.fd = open( "/dev/ttyS1", O_RDWR|O_NOCTTY|O_NDEL AY); //没有设置<span style="font-family: Arial, Helvetica, sans-serif;">O_NONBLOCK非阻塞模式,也可以设置为非阻塞模式,两个模式在下一篇博客中具体说明</span>23.24.if (-1 == fd)25.{26.perror("Can't Open Serial Port");27.return(-1);28.}29.}30.else if (comport==3)//串口331.{32.fd = open( "/dev/ttyS2", O_RDWR|O_NOCTTY|O_NDEL AY);33.if (-1 == fd)34.{35.perror("Can't Open Serial Port");36.return(-1);37.}38.}39./*恢复串口为阻塞状态*/40.if(fcntl(fd, F_SETFL, 0)<0)41.printf("fcntl failed!\n");42.else43.printf("fcntl=%d\n",fcntl(fd, F_SETFL,0));44./*测试是否为终端设备*/45.if(isatty(STDIN_FILENO)==0)46.printf("standard input is not a terminal device\n");47.else48.printf("isatty success!\n");49.printf("fd-open=%d\n",fd);50.return fd;51.}关键函数解释:功能描述:用于打开或创建文件,成功则返回文件描述符,否则返回-1,open返回的文件描述符一定是最小的未被使用的描述符[cpp] view plain copy1.#include<fcntl.h>2.int open(const char *pathname, int oflag, ... );参数解释:pathname:文件路径名,串口在linux中被看做是一个文件oflag:一些文件模式选择,有如下几个参数可以设置•O_RDONLY只读模式•O_WRONLY只写模式•O_RDWR读写模式上面三个参数在设置的时候必须选择其中一个下面的是可选的•O_APPEND每次写操作都写入文件的末尾•O_CREAT如果指定文件不存在,则创建这个文件•O_EXCL如果要创建的文件已存在,则返回 -1,并且修改 errno 的值•O_TRUNC如果文件存在,并且以只写/读写方式打开,则清空文件全部内容•O_NOCTTY如果路径名指向终端设备,不要把这个设备用作控制终端。

linux下的串口通信原理及编程实例

linux下的串口通信原理及编程实例

linux下的串⼝通信原理及编程实例linux下的串⼝通信原理及编程实例⼀、串⼝的基本原理1 串⼝通讯串⼝通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进⾏传输数据的⼀种通讯⽅式。

串⼝是⼀种接⼝标准,它规定了接⼝的电⽓标准,没有规定接⼝插件电缆以及使⽤的协议。

2 串⼝通讯的数据格式 ⼀个字符⼀个字符地传输,每个字符⼀位⼀位地传输,并且传输⼀个字符时,总是以“起始位”开始,以“停⽌位”结束,字符之间没有固定的时间间隔要求。

每⼀个字符的前⾯都有⼀位起始位(低电平),字符本⾝由7位数据位组成,接着字符后⾯是⼀位校验位(检验位可以是奇校验、偶校验或⽆校验位),最后是⼀位或⼀位半或⼆位停⽌位,停⽌位后⾯是不定长的空闲位,停⽌位和空闲位都规定为⾼电平。

实际传输时每⼀位的信号宽度与波特率有关,波特率越⾼,宽度越⼩,在进⾏传输之前,双⽅⼀定要使⽤同⼀个波特率设置。

3 通讯⽅式单⼯模式(Simplex Communication)的数据传输是单向的。

通信双⽅中,⼀⽅固定为发送端,⼀⽅则固定为接收端。

信息只能沿⼀个⽅向传输,使⽤⼀根传输线。

半双⼯模式(Half Duplex)通信使⽤同⼀根传输线,既可以发送数据⼜可以接收数据,但不能同时进⾏发送和接收。

数据传输允许数据在两个⽅向上传输,但是,在任何时刻只能由其中的⼀⽅发送数据,另⼀⽅接收数据。

因此半双⼯模式既可以使⽤⼀条数据线,也可以使⽤两条数据线。

半双⼯通信中每端需有⼀个收发切换电⼦开关,通过切换来决定数据向哪个⽅向传输。

因为有切换,所以会产⽣时间延迟,信息传输效率低些。

全双⼯模式(Full Duplex)通信允许数据同时在两个⽅向上传输。

因此,全双⼯通信是两个单⼯通信⽅式的结合,它要求发送设备和接收设备都有独⽴的接收和发送能⼒。

在全双⼯模式中,每⼀端都有发送器和接收器,有两条传输线,信息传输效率⾼。

显然,在其它参数都⼀样的情况下,全双⼯⽐半双⼯传输速度要快,效率要⾼。

Linux下串口和Socket通讯及应用

Linux下串口和Socket通讯及应用

XXXX学校实习报告书专业计算机科学与技术系别信息工程系报告题目 Linux下串口和Socket通讯及应用报告人班级指导教师带队教师实习时间2011.7.4-2011.7.18 实习单位教务处监制目录1、实习题目 (3)2、实习目的 (3)3、实习内容 (4)4、实习步骤 (5)4.1系统需求分析 (5)4.1.1 问题定义 (5)4.1.2 可行性研究 (5)4.1.3 需求分析 (5)4.1.4 项目开发计划 (6)4.2 系统设计 (6)4.2.1 系统架构 (6)4.2.2 结构设计 (7)4.2.2.1 上层结构设计 (7)4.2.2.2 中层结构设计 (9)4.2.2.3 物理层结构设计 (9)4.2.3功能模块设计 (10)4.3 系统实现 (12)4.3.1 系统硬件环境 (12)4.3.2 系统软件环境 (12)4.3.3 开发工具 (12)4.3.4 系统功能模块设计与实现 (13)4.3.4.1 界面 (13)4.3.4.2 其他功能 (14)4.4 关键技术 (14)4.5系统测试 (15)4.6系统部署 (17)5、实习参考资料 (17)1、实习题目Linux下串口和Socket通信及其应用串口通信(Serial Communication),串口按位(bit)发送和接收字节。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。

套接口(Socket)通信为目前Linux上最为广泛使用的一种的进程间通信机制,与其他的Linux通信机制不同之处在于除了它可用于单机内的进程间通信以外,还可用于不同机器之间的进程间通信。

简单应用设计为温度仪协议转换软件设计和模拟打印机。

对于温度仪协议转换软件一共有三个设备,Server端为PC机,Client端为Linux机(或嵌入式系统机),末端为串口的温度仪。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上图a中将这一对信号以“自握手”方式短接。 ⑦R1: 原意是在MODEM 接收到电话交换机有效的拨号时,使RI 有效,通知数据终端准备
传送。在无MODEM 时也可和DTR 相接。 上图b给出了无MODEM 情况下,DTE 对DTE 异步串行通信线路的完整连接,它不仅适用于微型机和微型机之间的通信,还适用于微型 机和异步串行外部设备(如终端机、绘图仪、数字化仪等)的连接。
的电平及负逻辑不兼容,需在接口电路中进行转换。 串行通信可以分为两种类型:同步 通信、异步通信。微机中大量使用异步通信,下面就详细介绍异步串行I/O。
3、异步串行I/O原理 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数 据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对 线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字 符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O 方 式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由 于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有 长度不定的空闲时间,因此效率较低。
图7-2 接线方式 ④RTS/CTS: 请求发送值号RTS是发送器输出的准备好信号。接收方准备好后送回清除发送信号 CTS 后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准被好即 可发送。 ⑤DCD: 载波检测(又称接收线路信号检测)。本意是MODEM 检测到线路中的载波信号后,通 知终端准备接收数据的信号,在没有接MODEM 的情况下,也可以和RTS、CTS短接。 相 对于MODEM 而言,微型机和终端机一样被称为数据终端DTE(Data TerminalEquipment) 而MODEM 被称为数据通信装置DCE(Data Communications Equipment),DTE 和DCE 之 间的连接不能像上图中有“扭接”现象,而应该是按接插件芯号,同名端对应相接。 此 处介绍的RS—232C 的信号名称及信号流向都是对DTE 而言的。 ⑥DTR/DSR: 数据终端准备好时发DTR 信号,在收到数据通信装置装备好DSR 信号后,方可通信。
三、实验设备
1、硬件: PC 机; DM2410 实验系统; 串口线; 机对机网线;
2、软件: PC 机操作系统(WINDOWS2000,REDHAT Linux); Linux 下 ARM GCC 交叉编译环境; 实验系统附带文件;
四、预备知识
1、了解 Linux 操作系统的原理; 2、掌握 Linux 操作系统的使用; 3、掌握实验一和实验二的内容。
驱动器和接收器可以接受的正常模式电压为-7 ~ +12V。注意的是,传输线在线的两 端有终端,但是在线中间的交点处并没有终端。应该只在高数据传输率和传输线很长时才 用终端。推荐RS485中用信号地,保证接收器必须接收的电压保持在-7 ~ +12V。
RS485标准允许工作在一对驱动/接收线或者多节点共享模式,最多可达32对。因为 RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传 输。 RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔), 与键盘连接的键盘接口RS485采用DB-9(针)。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用
实验七 Linux 环境下的串行通信实验
一、实验目的
1、了解 Linux 下串行端口程序设计的基本原理; 2、掌握终端的主要属性和设置方法,熟悉终端 IO 函数的使用。掌握 CPU 利用串口 进行通讯的方法。
二、实验内容
1、编写 serial 应用程序; 2、编写 Makefile 文件; 3、验证 Linux 下的串行通信。
图 7-1 异步串行通信中一个字符的传送格式 上图给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连 续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编 码数据。每个字符的数据位长可以约定为5位、6位、7 位或8 位,一般采用ASCII 编码。 后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶 数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号, 这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路 又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。 每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为300, 600,1200,2400,4800,9600,19200,57600,115200等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: (1) 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 (2) 帧格式错:一个字符从起始位到停止位的总位数不对。 (3) 溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出 错。 每一种错误都会给出相应的出错信息,提示用户处理。 4、串行接口的物理层标准 通用的串行I/O 接口有许多种,现仅就最常见的两种标准作简单介绍。 EIA RS—232C 这 是 美 国 电 子 工 业 协 会 推 荐 的 一 种 标 准 (Electronic industries Association Recoil-mended Standard)。它在一种25 针接插件(DB—25)上定义了串行通信的有关信号。 这个标准后来被世界各国所接受并使用到计算机的I/O 接口中 1)信号连线 在实际异步串行通信中,并不要求用全部的RS—232C 信号,许多PC/XT 兼容机仅用15 针接插件(DB—15)来引出其异步串行I/O 信号,而PC 中更是大量采用9 针接插件(DB— 9)来担当此任,因此这里也不打算就RS—232C 的全部信号作详细解释。图3-2 给出两台
2)接口的电气特性 在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1”,-5~ -15V; 逻辑“0” +5~+15V 。噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”, 高到-3V的信号 作为逻辑“1”。 3)接口的物理结构 RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插 头在DCE端,插座在DTE端. 一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送 控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB-9 的9芯插头座,传输线采用屏蔽双绞线。 RS—485C 由于RS-232-C接口标准出现较早,难免有不足之处,主要有以下四点: (1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需 使用电平转换电路方能与TTL电路连接。 (2) 传输速率较低,在异步传输时,波特率为20Kbps。 (3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输 容易产生共模干扰,所以抗噪声干扰性弱。 (4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能 用在50米左右。 针对RS-232-C的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一, 它具有以下特点: (1) RS-485的电气特性:逻辑“1”以两线间的电压差为+(2~6) V表示;逻辑“0” 以两线间的电压差为-(2~6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口 电路的芯片, 且该电平与TTL电平兼容,可方便与TTL 电路连接。 (2) RS-485的数据最高传输速率为10Mbps。 (3) RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰力增强,即抗噪 声干扰性好。 (4) RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外 RS-232-C接口在总线上只允许连接1个收发器, 即单站能力。而RS-485接口在总线上是 允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地 建立起设备网络。 RS-485驱动器使用平衡差分信号。由驱动器产生的电压显示在一对号线上,仅仅传 输一个信号。平衡线性驱动器将通过它的A和B输出线产生一个2~6V的电压,同时也连 接一个信号线。尽管信号地的连接重要,但是它并不用来决定数据线的逻辑状态。 线路 的两个信号状态定义如下; (1) 当驱动器的A端相对于B端为负时,线路处于状态1(MARK或者OFF) (2) 当驱动器的A端相对于B端为正时,线路处于状态0(SPACE或者ON) 一般A,B端分别对应于很多装置的-,+端。 Rs485驱动器必须有一个“Enable”的输入控制信号,用于连接到输出端A和B。如果 该信号处于OFF,那么驱动器从线路断开,一般认为是驱动器除了1,0信号状态外的第三 状态。有两种方法使得驱动器处于三态:一种是使用控制线,一般是RTS握手线。RTS线
相关文档
最新文档