串口通信的基本知识
串行通信基础知识
![串行通信基础知识](https://img.taocdn.com/s3/m/f09eb06825c52cc58bd6bee1.png)
串行通信基础知识本节简要概括了串行通信中的相关概念,为学习PC 机与MCU 的串行通信做准备。
1. 基本概念我们知道,“位”(bit )是二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte )。
串行通信的特点是:数据以字节为单位,按位的顺序从一条传输线上发送出去。
这里至少涉及到以下几个问题:第一,每个字节之间是如何区分的?第二,发送一位的持续时间是多少?第三,怎样知道传输是正确的?第四,可以传输多远?等等。
这些问题属于串行通信的基本概念。
串行通信分为异步通信与同步通信两种方式,本节主要给出异步串行通信的一些常用概念。
正确理解这些概念,对串行通信编程是有益的。
① 异步串行通信的格式在MCU 的英文芯片手册上,通常说SCI 采用的是NRZ 数据格式,英文全称是:“standard non-return-zero mark/space data format ”,可以译为:“标准不归零传号/空号数据格式”。
这是一个通信术语,“不归零”的最初含义是:用负电平表示一种二进制值,正电平表示另一种二进制值,不使用零电平。
“mark/space ”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。
对学习嵌入式应用的读者而言,只要理解这种格式只有“1”、“0”两种逻辑值就可以了。
图3.3.1给出了8位数据、无校验情况的传送格式。
这种格式的空闲状态为“1”,发送器通过发送一个“0”表示一个字节传输的开始,随后是数据位(在MCU 中一般是8位或9位,可以包含校验位)。
最后,发送器发送1到2位的停止位,表示一个字节传送结束。
若继续发送下一字节,则重新发送开始位,开始一个新的字节传送。
若不发送新的字节,则维持“1”的状态,使发送数据线处于空闲。
从开始位到停止位结束的时间间隔称为一帧(frame )。
所以,也称这种格式为帧格式。
串口自定义通信协议程序
![串口自定义通信协议程序](https://img.taocdn.com/s3/m/199d532af08583d049649b6648d7c1c708a10bb4.png)
串口自定义通信协议程序【原创实用版】目录一、串口通信协议的基础知识二、自定义串口通信协议的实现方法三、温度采集器与上位机串口通信协议的设计实例四、自定义串口通信协议的应用优势与局限性正文一、串口通信协议的基础知识串口通信协议是一种基于串行通信的数据传输方式。
与并行通信相比,串口通信协议具有线路简单、成本低的优点。
在电子设备之间进行数据传输时,常常使用串口通信协议。
在串口通信中,数据是逐个比特按顺序进行传输的。
发送方将数据字符从并行转换为串行,按位发送给接收方。
接收方收到串行数据后,再将其转换为并行数据。
这种通信方式在仅使用一根信号线的情况下完成数据传输,具有线路简单、成本低的优点。
但是,由于串口通信是按位进行的,因此传输速度较慢,且容易受到噪声干扰。
二、自定义串口通信协议的实现方法自定义串口通信协议的实现方法主要包括以下几个步骤:1.选择合适的硬件层通信协议。
常见的硬件层通信协议有 RS-232、RS-485 等。
选择合适的通信协议需要考虑通信距离、通信速率、抗干扰能力等因素。
2.设计数据帧格式。
数据帧格式包括起始符、地址符、数据长度、数据内容、校验和、结束符等。
起始符用于指示数据帧的开始,地址符用于指示数据帧的地址,数据长度用于指示数据帧的数据内容长度,数据内容用于存储实际的数据信息,校验和用于检验数据传输的正确性,结束符用于指示数据帧的结束。
3.编写下位机程序。
下位机程序主要负责发送和接收数据,实现硬件层通信协议。
在编写下位机程序时,需要考虑数据帧的组装、发送、接收、解析等方面。
4.编写上位机程序。
上位机程序主要负责与下位机进行通信,实现数据采集、控制等功能。
在编写上位机程序时,需要考虑数据帧的解析、数据处理、控制指令的发送等方面。
三、温度采集器与上位机串口通信协议的设计实例假设我们需要设计一个温度采集器与上位机之间的串口通信协议,用于实现温度采集数据上传和上位机控制每路温度测量通道的开启功能。
串口读写程序
![串口读写程序](https://img.taocdn.com/s3/m/42a387274531b90d6c85ec3a87c24028915f85a1.png)
串口读写程序一、概述串口是一种广泛应用于嵌入式系统中的通信方式,其具有简单、可靠、稳定等特点。
串口读写程序是指通过编程实现对串口进行数据的读写操作,从而实现与外部设备的通信。
二、串口基础知识1. 串口通信原理串口通信是通过将数据转换成电信号在串行线路上传输,接收方再将电信号转换为原始数据进行处理。
在传输过程中,需要设置一些参数来确保数据传输的正确性和稳定性。
2. 串口参数设置常见的串口参数设置包括波特率、数据位、停止位和校验位等。
波特率指每秒钟传输的比特数,数据位指每个字符所占用的比特数,停止位指每个字符结束时发送一个停止位以示结束,校验位则用于检测传输过程中出现的错误。
3. 串口读写操作在进行串口读写操作时,需要先打开对应的串口,并设置好相应的参数。
然后可以通过调用相应的函数实现数据的读取和发送。
三、Windows平台下C++实现串口读写程序1. 准备工作首先需要安装一个支持串口编程的库文件,在Windows平台下常用的库文件有WinAPI和MFC等。
这里以WinAPI为例进行说明。
2. 打开串口在WinAPI中,可以通过CreateFile函数打开串口。
具体实现代码如下:HANDLE hComm;hComm = CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);if(hComm == INVALID_HANDLE_VALUE){// 打开串口失败}其中,"COM1"表示要打开的串口号,GENERIC_READ和GENERIC_WRITE分别表示读和写的权限。
3. 配置串口参数在打开串口后,需要设置相应的参数。
可以通过DCB结构体来设置波特率、数据位、停止位和校验位等参数。
具体实现代码如下:DCB dcb;memset(&dcb, 0, sizeof(dcb));dcb.DCBlength = sizeof(dcb);GetCommState(hComm, &dcb);dcb.BaudRate = CBR_9600; // 设置波特率为9600dcb.ByteSize = 8; // 设置数据位为8dcb.StopBits = ONESTOPBIT; // 设置停止位为1个dcb.Parity = NOPARITY; // 不使用校验位SetCommState(hComm, &dcb);4. 读取数据在配置好相应的参数后,就可以开始进行数据的读取了。
串口通信握手
![串口通信握手](https://img.taocdn.com/s3/m/136fe78c84868762caaed51e.png)
串口通信及握手串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS- 232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
串口的基本原理
![串口的基本原理](https://img.taocdn.com/s3/m/3a508c52876fb84ae45c3b3567ec102de2bddf3b.png)
串口的基本原理串口是一种用于在设备之间进行数据传输的通信接口。
它是一种基于串行数据传输的通信方式,与并行通信相对。
串口使用一根线缆进行数据传输,其中包含一个发送线和一个接收线。
数据以一个位一个位地顺序传输,称为串行传输。
在串口通信中,数据从发送方通过发送线逐位发送,然后通过接收线逐位接收到接收方。
串口通信涉及以下几个基本原理:1. 通信协议:串口通信需要使用一种协议来规定数据的传输格式和通信规则。
常用的串口通信协议包括RS-232、RS-485、USB等。
协议规定了数据的起始位、数据位、校验位和停止位等信息。
2. 波特率:波特率是指每秒钟传输的位数,用来衡量串口通信的速度。
波特率越高,传输速度越快,但也需要更高的硬件要求。
发送方和接收方必须使用相同的波特率才能正常通信。
3. 校验位:校验位用于检测数据传输是否出错。
常用的校验方式包括奇偶校验、偶校验和无校验。
接收方通过校验位验证数据的准确性,并在发现错误时进行纠正或报告。
4. 数据流控制:数据流控制用于管理数据的发送和接收,以避免数据传输过程中的数据丢失或冲突。
常用的数据流控制方式包括硬件流控制和软件流控制。
5. 缓冲区:串口通信中的发送方和接收方都使用内部缓冲区来管理数据传输。
缓冲区用于临时存储待发送或接收的数据,以便在合适的时间进行数据传输。
需要注意的是,串口通信需要发送方和接收方的硬件和软件支持,如串口芯片、驱动程序等。
在编程时,可以使用特定的串口通信库或API来控制串口的打开、读取和写入操作。
总的来说,串口通信通过顺序传输数据位,结合通信协议、波特率、校验位、数据流控制等技术,实现设备之间的数据传输。
这使得串口通信在许多领域中广泛应用,如嵌入式系统、工业自动化、通信设备等。
51单片机串口通信(相关例程)
![51单片机串口通信(相关例程)](https://img.taocdn.com/s3/m/3abd742df08583d049649b6648d7c1c708a10b97.png)
51单片机串口通信(相关例程) 51单片机串口通信(相关例程)一、简介51单片机是一种常用的微控制器,它具有体积小、功耗低、易于编程等特点,被广泛应用于各种电子设备和嵌入式系统中。
串口通信是51单片机的常见应用之一,通过串口通信,可以使单片机与其他外部设备进行数据交互和通信。
本文将介绍51单片机串口通信的相关例程,并提供一些实用的编程代码。
二、串口通信基础知识1. 串口通信原理串口通信是通过串行数据传输的方式,在数据传输过程中,将信息分为一个个字节进行传输。
在51单片机中,常用的串口通信标准包括RS232、RS485等。
其中,RS232是一种常用的串口标准,具有常见的DB-9或DB-25连接器。
2. 串口通信参数在进行串口通信时,需要设置一些参数,如波特率、数据位、停止位和校验位等。
波特率表示在单位时间内传输的比特数,常见的波特率有9600、115200等。
数据位表示每个数据字节中的位数,一般为8位。
停止位表示停止数据传输的时间,常用的停止位有1位和2位。
校验位用于数据传输的错误检测和纠正。
三、串口通信例程介绍下面是几个常见的51单片机串口通信的例程,提供给读者参考和学习:1. 串口发送数据```C#include <reg51.h>void UART_Init(){TMOD = 0x20; // 设置计数器1为工作方式2(8位自动重装) TH1 = 0xFD; // 设置波特率为9600SCON = 0x50; // 设置串口工作方式1,允许串行接收TR1 = 1; // 启动计数器1}void UART_SendChar(unsigned char dat){SBUF = dat; // 发送数据while (!TI); // 等待发送完成TI = 0; // 清除发送完成标志}void main(){UART_Init(); // 初始化串口while (1){UART_SendChar('A'); // 发送字母A}}```2. 串口接收数据```C#include <reg51.h>void UART_Init(){TMOD = 0x20; // 设置计数器1为工作方式2(8位自动重装) TH1 = 0xFD; // 设置波特率为9600SCON = 0x50; // 设置串口工作方式1,允许串行接收TR1 = 1; // 启动计数器1}void UART_Recv(){unsigned char dat;if (RI) // 检测是否接收到数据{dat = SBUF; // 读取接收到的数据 RI = 0; // 清除接收中断标志// 处理接收到的数据}}void main(){UART_Init(); // 初始化串口EA = 1; // 允许中断ES = 1; // 允许串口中断while (1)// 主循环处理其他任务}}```3. 串口发送字符串```C#include <reg51.h>void UART_Init(){TMOD = 0x20; // 设置计数器1为工作方式2(8位自动重装) TH1 = 0xFD; // 设置波特率为9600SCON = 0x50; // 设置串口工作方式1,允许串行接收TR1 = 1; // 启动计数器1}void UART_SendString(unsigned char *str){while (*str != '\0')SBUF = *str; // 逐个发送字符while (!TI); // 等待发送完成TI = 0; // 清除发送完成标志str++; // 指针指向下一个字符}}void main(){UART_Init(); // 初始化串口while (1){UART_SendString("Hello, World!"); // 发送字符串}}```四、总结本文介绍了51单片机串口通信的基础知识和相关编程例程,包括串口发送数据、串口接收数据和串口发送字符串。
串口通信基础知识
![串口通信基础知识](https://img.taocdn.com/s3/m/d01dc5c0c8d376eeaeaa3160.png)
通讯基础知识1串口通讯串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。
串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。
2串口通讯的数据格式一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
为什么是7位?当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
每一个字符的前面都有一位起始位(低电平),字符本身由7位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。
3通讯方式单工模式(Simplex Communication)的数据传输是单向的。
通信双方中,一方固定为发送端,一方则固定为接收端。
信息只能沿一个方向传输,使用一根传输线。
半双工模式(Half Duplex)通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。
数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。
因此半双工模式既可以使用一条数据线,也可以使用两条数据线。
半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。
因为有切换,所以会产生时间延迟,信息传输效率低些。
51单片机串口通信
![51单片机串口通信](https://img.taocdn.com/s3/m/4838296a561252d380eb6ed7.png)
一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
2、通信协议的使用通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。
串口通信原理及操作流程
![串口通信原理及操作流程](https://img.taocdn.com/s3/m/549fccc10d22590102020740be1e650e52eacff3.png)
RXD 接收
②半双工
发
接
送
TXD / RXD
收
接
发
收
送
③全双工
发送
接收
TXD RXD
RXD TXD
接收
发送
1.4 信号的调制与解调
v 调制器(Modulator):把数字信号转换成模拟信 号,然后送到通信线路上去。
v 解调器(Demodulator):把从通信线源自上收到的 模拟信号转换成数字信号。
接线
DTE信号 TxD RxD RTS CTS DTR DSR DCD GND
典型应用: PC + 交叉电缆 + PC
❖RS-232 连接类型 II
DTE 信号
接线
DCE 信号
TxD RxD RTS CTS DTR DSR DCD GND
RxD TxD CTS RTS DSR DTR DCD GND
典型应用: PC + 直连电缆 + Modem
TXD
计 RXD 算 机 甲
TXD
RXD 计 算 机 乙
TXD RXD 计4 算5 机6 甲 20
近程通信连接
TXD
RXD 4计 5算 6机 20 乙
RS-232C接口存在的问题
1
2
3
传输距离短 ,传输速率
低
有电平偏移
抗干扰能力 差
SN75174
RS-422A接口
电平 ❖ RS-485的信号传输采用
两线间的电压来表示逻辑1和逻
辑0。由于发送方需要两根传输
线,接收方也需要两根传输线
。传输线采用差动信道,所以
它的干扰抑制性极好,又因为
串口通信基础知识
![串口通信基础知识](https://img.taocdn.com/s3/m/9e11599be53a580216fcfe22.png)
RS-232 连接类型 II
RS-232 信号
DTE 信号 TxD RxD RTS CTS DTR DSR DCD GND 接线 DCE 信号 RxD TxD CTS RTS DSR DTR DCD GND
典型应用: PC + 直连电缆 + Modem DCE 设备上的DCD信号一般用作输出信号
优点 缺点
Confidential
RS-422 & RS-485接线
RS-422可支持10个节点,RS-485可支持32 个节点 拓扑一般采用总线型结构,不支持环形或星形 网络 在构建网络时应注意以下几点: 1、采用双绞线作总线,将各个节点串接起来
如下的连接方式: a,b,c 为错误连接;d,e,f为正确连接方式. 2、注意总线阻抗匹配,否则就会发生信号的反射
RS-422 拓扑结构 I
点对点
Tx+(B) Tx-(A) Rx+(B) Moxa CI-134 Rx-(A)
Rx+(B) Rx-(A) Tx+(B) Tx-(A) PLC
Confidential
RS-485 信号
RS-422的增强方式 与 RS-422兼容
接线
• 点对点 • 2 线半双工,菊链式连接 • 4 线全双工,菊链式连接
Confidential
RS-422 vs. RS-485
RS-422
传输类型 连接类型 数据流控 可连接设备数 全双工 点对点 无 32节点 4-线RS-485 全双工 多站 RTS控制或 ADDC控制 32节点 2-线RS-485 半双工 多站
RTS控制或 ADDC 控制
32节点
Confidential
STM32串口通信学习总结
![STM32串口通信学习总结](https://img.taocdn.com/s3/m/a5162497c0c708a1284ac850ad02de80d4d806e1.png)
STM32串口通信学习总结STM32是STMicroelectronics推出的一款32位单片机系列,具有高性能、低功耗、丰富的外设等特点,广泛应用于工业控制、消费电子、汽车电子等领域。
其中,串口通信是单片机中常用的通信方式之一,本文将对STM32串口通信学习进行总结。
1.串口通信原理及基础知识在STM32中,USART(通用同步/异步收发器)是负责串口通信的外设。
USART提供了多种模式的串口通信,包括异步模式(Asynchronous)、同步模式(Synchronous)以及单线模式(Single-wire)等。
2.STM32串口通信配置步骤(1)GPIO配置:首先需要配置串口通信所涉及的GPIO引脚,通常需要配置为复用功能,使其具备USART功能。
(2)USART配置:根据需要选择USART1、USART2、USART3等串口进行配置,设置通信模式、波特率等参数。
在配置时需要注意与外部设备的通信标准和参数保持一致。
(3)中断配置(可选):可以选择中断方式来实现串口数据的收发。
通过配置中断,当接收到数据时会触发中断,从而实现接收数据的功能。
(4)发送数据:通过USART的发送寄存器将数据发送出去,可以通过查询方式或者中断方式进行发送。
(5)接收数据:通过读取USART的接收寄存器,获取接收到的数据。
同样可以通过查询方式或者中断方式进行接收。
3.常见问题及解决方法(1)波特率设置错误:在进行串口通信时,波特率设置错误可能会导致通信失败。
需要根据外设的要求,选择适当的波特率设置,并在STM32中进行配置。
(2)数据丢失:在高速通信或大量数据传输时,由于接收速度跟不上发送速度,可能会导致数据丢失。
可以通过增加接收缓冲区大小、优化接收中断处理等方式来解决该问题。
(3)数据帧错误:在数据传输过程中,可能发生数据位错误、校验错误等问题。
可以通过对USART的配置进行检查,包括校验位、停止位、数据位等的设置是否正确。
RS232_RS422基础知识
![RS232_RS422基础知识](https://img.taocdn.com/s3/m/65d964da6529647d26285227.png)
+15V
▪ 信号无效(断开,OFF状态,负电压) = -3V~-
15V
信号传输方式
▪ 在RS232中任何一条信号线的电压均为负 逻辑关系。即:逻辑“1”,为信号线对 GND电压为-5~-15V。逻辑“0”,为信号 线对GND电压为+5V~+15V。
电平数据传输方式
▪ 理论上说,当要发送“01001000”这个数 据时,在TXD信号线与GND之间应该测量 到的波形为:
奇偶校验
▪ 奇校验:所有传送的数位(含字符的各数 位和校验位)中,“1”的个数为奇数,如:
▪ 1 0110,0101 ▪ 0 0110,0001 ▪ 偶校验:所有传送的数位(含字符的各数
位和校验位)中,“1”的个数为偶数,如: ▪ 1 0100,0101 ▪ 0 0100,0001
通讯距离
▪ RS-232-C标准规定,一般情况下,最大 通信距离为15m。传输距离短的另一原因 是RS-232属单端信号传送,存在共地噪声 共模干扰等问题,因此一般用于20m以内 的通信。
▪ (2)地线 ▪ 信号地和保护地信号线,无方向。
RS232串口通信常用连接(三线制)
电气特性
▪ EIA-RS-232C对电器特性、逻辑电平和各种信号 线功能都作了规定。
▪ 在TxD和RxD上:逻辑1(MARK) =-3V~-15V
▪
逻辑0(SPACE)=+3~+15V
▪ 信号有效(接通,ON状态,正电压)=+3V~
波特率(Baud per second)
▪ 波特率(bps):计算机在串口通信时的 速率。所谓波特率(bps=bit/s),是指每 秒钟传送的位(bit)数。这就要求有双方 有相同的波特率,以便正确地识别被传输 的数据位。常见的波特率可以设为4800, 9600等等。波特率决定了通讯的速度。波 特率越小,通讯速度越慢,同时出错率也 越低。
基本串口通信程序设计
![基本串口通信程序设计](https://img.taocdn.com/s3/m/41d2f2848ad63186bceb19e8b8f67c1cfad6ee08.png)
基本串口通信程序设计串口通信是指通过串行接口进行数据传输的一种通信方式。
串口通信通常用于短距离的数据传输,具有稳定性强、传输速率低的特点。
本文将介绍串口通信的基本原理和程序设计。
一、串口通信基本原理串口通信是通过串行接口将数据一位一位地传输的通信方式。
串口通信的基本原理是使用两根信号线进行通信:一根是传输数据的信号线(TX),负责向外发送数据;另一根是接收数据的信号线(RX),负责接收外部发送过来的数据。
二、串口通信程序设计步骤1. 打开串口:首先需要通过操作系统提供的串口接口函数,打开需要使用的串口。
在Windows系统中,可以使用CreateFile函数打开串口;在Linux系统中,可以使用open函数打开串口。
3. 发送数据:使用WriteFile函数(Windows系统)或write函数(Linux系统),向串口发送需要传输的数据。
4. 接收数据:使用ReadFile函数(Windows系统)或read函数(Linux系统),从串口接收数据。
5. 关闭串口:数据传输完成后,需要关闭串口,使用CloseHandle函数(Windows系统)或close函数(Linux系统)即可关闭串口。
三、串口通信程序设计示例(Windows系统)下面是一个简单的串口通信程序设计示例,实现了从串口接收数据并将接收的数据原样返回的功能。
#include <iostream>#include <windows.h>int mainHANDLE hSerial;DCB dcbSerialParams = {0}; // 串口参数hSerial = CreateFile("COM1", GENERIC_READ , GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // 打开串口dcbSerialParams.DCBlength = sizeof(dcbSerialParams);std::cout << "Error getting serial port state\n";return 1;}dcbSerialParams.BaudRate = CBR_9600;dcbSerialParams.ByteSize = 8;dcbSerialParams.StopBits = ONESTOPBIT;dcbSerialParams.Parity = NOPARITY;std::cout << "Error setting serial port state\n";return 1;}return 1;}char buffer[100];DWORD bytesRead;while (1)if (ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL) && bytesRead > 0)std::cout << "Received data: " << buffer << std::endl;DWORD bytesWritten;if (!WriteFile(hSerial, buffer, bytesRead, &bytesWritten, NULL))std::cout << "Error writing to serial port\n";return 1;}}}CloseHandle(hSerial); // 关闭串口return 0;以上程序打开串口COM1,设置波特率为9600,数据位为8位,停止位为1位。
串口基础知识
![串口基础知识](https://img.taocdn.com/s3/m/0116b8ff4128915f804d2b160b4e767f5acf803b.png)
串口基础知识一、什么是串口?串口(Serial Port),也称为COM口(Communication Port),是一种用于数据传输的通信接口,常用于计算机与外部设备之间的数据传输。
串口采用串行传输方式,即逐位地发送和接收数据,相比并行传输方式,串口的数据传输速率较慢,但具有传输距离远、连接设备数量多的优势。
二、串口的工作原理串口的工作原理是通过发送和接收电平信号来传输数据。
串口通信使用的是两根信号线:发送线(Tx)和接收线(Rx)。
发送线上的电平变化表示发送的二进制数据,接收线上的电平变化表示接收到的二进制数据。
发送方通过发送线将数据按照一定的协议发送给接收方,接收方通过接收线接收数据并进行处理。
三、串口的通信参数串口通信需要设置一些参数,以确保通信的正确性和稳定性。
常用的串口通信参数包括:1. 波特率(Baud Rate):表示每秒钟传输的位数,常用的波特率有9600、115200等。
2. 数据位(Data Bits):表示每个字节的位数,常用的数据位有7位、8位。
3. 停止位(Stop Bits):表示停止位的个数,常用的停止位有1位、1.5位、2位。
4. 校验位(Parity Bit):用于检测数据传输过程中的错误,常用的校验位有无校验、奇校验、偶校验。
四、串口的应用领域串口广泛应用于各种设备之间的数据通信,常见的应用领域有:1. 电脑与外部设备之间的数据传输,如打印机、扫描仪、数码相机等。
2. 嵌入式系统中,用于与传感器、执行器等外部设备进行数据交互。
3. 工业自动化领域,用于控制和监控设备之间的数据传输。
4. 通信设备中,如调制解调器、路由器等。
五、串口的优缺点串口作为一种通信接口,具有以下优点:1. 传输距离远:串口的传输距离可以达到几百米,适用于远距离通信。
2. 连接设备数量多:串口可以通过串口转换器扩展连接多个设备。
3. 通信稳定可靠:串口通信采用的是同步传输方式,可以保证数据的准确传输。
串口波特率单位_解释说明以及概述
![串口波特率单位_解释说明以及概述](https://img.taocdn.com/s3/m/f66e415aa31614791711cc7931b765ce05087ac9.png)
串口波特率单位解释说明以及概述1. 引言1.1 概述串口通信是计算机与外部设备之间进行数据传输的一种常用方式。
在串口通信中,波特率单位是一个重要概念。
本文旨在解释和说明串口波特率单位的含义,介绍其基础知识,并探讨不同波特率对实际应用的影响。
1.2 文章结构本文分为五个主要部分。
首先,在引言部分我们将介绍本文的背景和目的。
然后,在第二部分中我们将解释什么是波特率以及它的作用。
接下来,第三部分将探讨不同波特率选择所适用的场景以及其在实际应用中所引发的影响。
第四部分将详细介绍调整和配置串口波特率的方法和步骤,并比较手动调整和自动配置的优缺点。
最后,在第五部分中我们将总结主要观点和发现,并对未来串口通信发展趋势进行展望。
1.3 目的本文旨在帮助读者全面了解串口波特率单位,包括其含义、解释以及比较,进而加深对不同波特率选择与应用场景之间关系的理解。
通过阅读本文,读者将了解如何调整和配置串口波特率以及如何避免波特率问题引发通信错误。
此外,本文还将对未来串口通信的发展趋势进行展望,为读者提供一些思考和参考。
2. 串口波特率单位的含义与解释2.1 串口通信基础知识在计算机领域,串口是一种常见的数据传输接口,用于设备之间进行通信。
串行端口(串口)允许数据比特按顺序依次传输,相对于并行端口而言,串口只使用一根线进行数据传输。
常见的串行接口有RS-232、RS-485等。
2.2 什么是波特率波特率是一个表示在单位时间内传输的比特数的度量单位。
它衡量了数据信号变化速率。
波特率越高,每秒钟传输的比特数就越多,通信速度也就越快。
2.3 波特率单位的解释与比较常见的波特率单位有以下几种:- bps (bits per second):bps是指每秒钟传输的比特数。
例如,一个波特率为9600 bps意味着每秒钟可以传输9600个比特。
- baud (Bd):baud是指每秒钟发送/接收信号变化(波形)的数量。
在早期使用调制解调器进行数据通信时,baud被用作描述模拟调制解调器中载波频率上升和下降(变换)的速度。
单片机第七课--串口
![单片机第七课--串口](https://img.taocdn.com/s3/m/d3acec9f6bec0975f465e2fc.png)
1、方式2和方式3发送
写入SBUF TXD TI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
发送前,先根据用户约定的通信协议由软件设置TB8的值, 然后把要发送的数据写入SBUF启动发送过程,先把起始位 0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到 TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移 一位,并由TXD引脚输出。 第一次移位时,停止位“1”移入输出移位寄存器的第9位 上 ,以后每次移位,左边都移入0。当停止位移至输出位时, 左边其余位全为0,检测电路检测到这一条件时,使控制电 路进行最后一次移位,并置TI=1,向CPU请求中断。
一个字符帧 空 闲 起 始 位 数据位 校 验 位 停 止 位 空 闲
下一字符 起始位
LSB
MSB
异步通信对硬件要求较低,实现起来比较简单、灵活, 适用于数据的随机发送/接收,但因每个字节都要建立一次同 步,即每个字符都要额外附加两位,所以工作速度较低,在 单片机中主要采用异步通信方式。
2、同步通信 以一串字符为一个传送单位,字符间不加标识位,字符串开 始用同步字符标识(一般约定为1~2个字符),以触发同步时 钟开始发送或接收数据;多字节数据之间不允许有空隙,每位 占用的时间相等;空闲位需发送同步字符。 硬件要求高,通讯双方须严格同步,适用于成批数据传送。 单片机不用该方式。
在单片机的应用中,常用的晶振频率为:12MHz和 11.0592MHz。所以,选用的波特率也相对固定。 常用的串行口波特率以及各参数的关系如表所示。
串行口工作之前,应对其进行初始化,主 要是设置产生波特率的定时器1、串行口控 制和中断控制。具体步骤如下:
确定T1的工作方式(编程TMOD寄存器);
串行通信的基本概念
![串行通信的基本概念](https://img.taocdn.com/s3/m/9417c478b94ae45c3b3567ec102de2bd9605de46.png)
串行通信的基本概念000通过上一章的介绍,读者对我电子琴的设计已经有了完整的了解,下面我就对我的设计重要组成部分――串口通信模块UART作一下介绍。
首先我要简要介绍一下串口通信的一些概念和协议标准,然后再阐述我是如何用VHDL语言来实现串口通信模块设计的。
4.1串行通信的基本概念1.数据传送方式在串行通信中,数据在通信线路上的传送有三种方式:1)单工(Simplex)方式:数据只能按一个固定的方向传送。
2)半双工(Half-duplex)方式:数据可以分时在两个方向传输,但是不能同时双向传输。
3)全双工(Full-duplex)方式:数据可以同时在两个方向上传输。
2.波特率和收/发时钟1)波特率所谓波特率,系指单位时间内传送的二进制数据的位数,以位/秒为单位,所以有时也叫数据位率。
它是衡量串行数据传送速度快慢的重要指标和参量。
2)收/发时钟在串行通信中,无论是发送还是接收,都必须有时钟信号对传送的数据进行定位和同步控制。
通常收/发时钟频率与波特率之间有下列关系:收/发时钟频率=n×波特率一般n取1,16,32,64等。
对于异步通信,常采用n=16;对于同步通信,则必须取n=1。
3.误码率和串行通信中的差错控制1)误码率所谓误码率,是指数据经过传输后发生错误的位数(码元数)与总传输位数(总码元数)之比,其与通信线路质量、干扰大小及波特率等因素有关,一般要求误码率达到10-6数量级。
2)差错控制为了减小误码率,一方面要从硬件和软件两个面对通信系统进行可靠性设计,以达到尽量少出错的目的;另一方面就是对传输的信息采用一定的检错、纠错编码技术,以便发现和纠正传输过程中可能出现的差错。
常用的编码技术有:奇偶校验、循环冗余码校验、海明码校验、交叉奇偶校验等。
4.串行通信的基本方式串行通信的基本方式可分为两种:1)异步串行方式:通信的数据流中,字符间异步,字符内部各位间同步。
2)同步串行方式:通信的数据流中,字符间以及字符内部各位间都同步。
串口通信知识点详解
![串口通信知识点详解](https://img.taocdn.com/s3/m/70e9be0f03020740be1e650e52ea551810a6c98b.png)
串⼝通信知识点详解串⼝通信的基本概念:1.在计算机上进⾏数据的通信有两种⽅式。
串⾏⽅式和并⾏⽅式。
也就是串⼝通信和并⾏通信。
即串⼝通信是计算机传输数据的⼀种通信⽅式。
2.并⾏通信以字节为但是进⾏传输数据,相⽐于串⼝通信,他的速度快,传输距离近。
串⼝通信以⽐特位传输数据,相⽐于并⾏通信,他的传输速度慢,但是传输距离远。
并且串⼝通信是异步通信,因此,端⼝可以在⼀根线上发送数据的同时在另⼀根线上接收数据3.串⼝通信最重要的参数是波特率、数据位、停⽌位和奇偶校验。
对于两个进⾏通信的端⼝,这些参数必须匹配。
(1)波特率:传输速率。
如每秒钟传送240个字符,⽽每个字符格式包含10位(1个起始位,1个停⽌位,8个数据位),这时的波特率为240Bd,⽐特率为10位*240个/秒=2400bps。
(2)数据位:数据包中发送端想要发送的数据(3)停⽌位:⽤于表⽰单个包的最后⼀位,结束标志以及校正时钟同步(4)奇偶校验:检错⽅式。
⼀共有四种检错⽅式:偶、奇、⾼和低。
4.串⼝通信的应⽤场景:串⼝通信是指外设和计算机间,通过数据线按位进⾏传输数据的⼀种通讯⽅式。
这种通信⽅式使⽤的数据线少,在远距离通信中可以节约通信成本,但其传输速度⽐并⾏传输低。
⼤多数计算机(不包括笔记本)都包含两个RS-232串⼝。
串⼝通信也是仪表仪器设备常⽤的通信协议。
Windows下串⼝通信:1.在windows下,串⼝是作为⽂件进⾏处理。
2.串⼝通信分为四⼤步骤:打开串⼝,关闭串⼝,配置串⼝,读写串⼝(1)打开串⼝:使⽤CreateFile函数:HANDLE WINAPI CreateFile(_In_ LPCTSTR lpFileName,//要打开或创建的⽂件名_In_ DWORD dwDesiredAccess,//访问类型_In_ DWORD dwShareMode,//共享⽅式_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全属性_In_ DWORD dwCreationDisposition,//指定要打开的⽂件已存在或不存在的动作_In_ DWORD dwFlagsAndAttributes,//⽂件属性和标志_In_opt_ HANDLE hTemplateFile//⼀个指向模板⽂件的句柄);参数说明:1).lpFileName:要打开或创建的⽂件名2).dwDesiredAccess:访问类型。
RS232串口通信基本知识与实例
![RS232串口通信基本知识与实例](https://img.taocdn.com/s3/m/41742615eef9aef8941ea76e58fafab069dc4407.png)
RS232串⼝通信基本知识与实例1,RS232串⼝通信基本知识(1)⽬前较为常⽤的串⼝是9针串⼝(DB9。
通信距离较近时(<12m),可以⽤电缆线直接连接标准RS232端⼝;若距离较远,需附加调制解调器(MOD EM)。
(2)RS232C串⼝通信接线⽅法(三线制)接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接(3)DB9接⼝三线引脚定义2 ---- RXD 接收数据3 ---- TXD 发送数据5 ---- GND 信号地(4)串⾏通信⽅式1)单⼯:信息只能单向传送2)半双⼯:信息可双向传送但不能同时进⾏3)全双⼯:信息可同时进⾏双向传送(5)RS232逻辑电平逻辑0电平规定为+5 ~ +15V之间;逻辑1是电平为-5 ~ -15V之间,因此在与单⽚机进⾏通信时需要进⾏电平转换(6)RS232串⾏通信接⼝电路设计(7)51单⽚机串⾏通信接⼝软件设计1)两个重要指标:可靠性和速度,可靠性是第⼀位。
2)与串⼝通信相关的⼏个寄存器和控制位TMOD:可以⽤它来设置定时器⼯作⽅式(如果在MCU中使⽤的是定时器来产⽣波特率,就需要对这个寄存器进⾏设置,通常设为0x20,即设置定时器1为8位⾃动重装定时器,即⼯作⽅式1)TH1和TL1:定时器1初始值(可通过波特率计算软件获得)TR1:开启定时器1SCON:串⼝控制寄存器,通常设为0x50,即10位异步传输,由定时器1产⽣波特率,⽆奇偶校验位,允许接收PCON:这个寄存器主要⽤到它的最⾼位SMON,当最⾼位设为1时,原波特率加倍ES:串⼝中断使能位EA:全局中断使能位3)波特率计算⽅法(使⽤⼀个名为“51波特率初值计算.exe”的⼩软件)第1步:选择定时器⼯作⽅式(⽅式2)第2步:输⼊晶振值(11.0592)第3步:选择波特率(9600)第4步:设置SMOD值(0)第5步:点击确定第6步:将软件上显⽰值赋给TH1和TL14)串⼝初始化程序void Initial_RS232(unsigned char rate){ //默认晶振值为11.0592MHzunsigned char Reload1;switch(rate) //根据拨码器设置波特率{case 0:Reload1 = 0xE8; //2400bpsbreak;case 1:Reload1 = 0xF4; //4800bpsbreak;case 2:Reload1 = 0xFA; //9600bpsbreak;case 3:Reload1 = 0xFD; //19200bpsbreak;default:Reload1 = 0x00;break;}PCON = PCON|0x80; //SMOD = 1 ;波特率加倍TMOD = 0x20; //0011,00010设置定时器1为8位⾃动重装计数器SCON = 0x50; //0101,0000 8位可变波特率,⽆奇偶校验位TH1 = Reload1; //设置定时器1⾃动重装数TL1 = Reload1;TR1 = 1; //开定时器1ES = 1; //允许串⼝中断EA = 1; //开总中断}5)串⼝发送程序void Send_RS232(unsigned char i){ES = 0; //关串⼝中断TI = 0; //清零串⼝发送完成中断请求标志 SBUF = i;while(TI ==0); //等待发送完成TI = 0; //清零串⼝发送完成中断请求标志 ES = 1; //允许串⼝中断}6)串⼝接收程序void Receive_RS232(void) interrupt 4{unsigned char temp= 0;ES = 0;if(RI==1){RI = 0;temp = SBUF;}ES = 1;}。
第6章--串行接口及串行通信技术
![第6章--串行接口及串行通信技术](https://img.taocdn.com/s3/m/2cddf9d40975f46527d3e184.png)
第 n字 符 帧 8位 数 据
停 奇偶 止 校验 位
D7 0/1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1
空闲位 111
第 n+ 1字 符 帧
起
始 位
8位 数 据
0 D0 D1 …
图6.3 异步通信帧格式
第9章 串行接口及串行通信技术
(1) 起始位:在没有数据传送时,通信线上处于逻 辑“1”状态,当信号变为0时表示起始位。
实际用户并不一定用到RS- 232C标准的全部信号 线,常常使用9针非标准连接器替代25针连接器,称 为DB-9。
第9章 串行接口及串行通信技术
方向 到DCE 到DTE 到DTE 到DTE
到DCE 到DCE 到DTE 到DTE 到DCE 到DCE
名称
第2路发送数据 发送时钟
第2路接收数据 接收时钟 未用
例:当约定为奇校验时,数据中“1”的个数与校验位“1”的个数 之和应为奇数;当约定为偶校验时,数据中“1”的个数与校验位“1” 的个数之和应为偶数。接收方与发送方的校验装置和方式应一致。接 收字符时,对“1”的个数进行校验,若二者不一致,则说明传输数据 过程中出现了差错。
第9章 串行接口及串行通信技术
同时传送的通信方法,如图6.1所示。 特点:传输控制简单、速度快。但距离长时传输线多,成本高。
2)串行通信 串行通信是指构成信息的二进制字符的各位数据一位一位顺序地
传送的通信方式,如图6.2所示。 特点:传输控制复杂、速度慢,但传输线少,成本低。
第9章 串行接口及串行通信技术
P0.7
微型 计算机 (89C51)
把数字信号转换成模拟信号,然后送到通信线路上去。 2)解调器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串口通信的基本知识串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus 或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS- 232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB 设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII 码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。
有四种检错方式:偶、奇、高和低。
当然没有校验位也是可以的。
对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。
如果是奇校验,校验位位1,这样就有3个逻辑高位。
高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。
这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
2,什么是RS-232?RS-232 (ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。
可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。
用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。
RS-232只限于PC串口和设备间点对点的通信。
RS- 232串口通信最远距离是50英尺。
DB-9针连接头-------------\ 1 2 3 4 5 /\ 6 7 8 9 /-------从计算机连出的线的截面。
RS-232针脚的功能:数据:TXD(pin 3):串口数据输出RXD(pin 2):串口数据输入握手:RTS(pin 7):发送数据请求CTS(pin 8):清除发送DSR(pin 6):数据发送就绪DCD(pin 1):数据载波检测DTR(pin 4):数据终端就绪地线:GND(pin 5):地线其他RI(pin 9):铃声指示3,什么是RS-422?RS -422(EIA RS-422-A Standard)是Apple的Macintosh计算机的串口连接标准。
RS-422使用差分信号,RS-232使用非平衡参考地的信号。
差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。
在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。
4,什么是RS-485?RS -485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。
有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。
出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。
RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。
RS-485可以用超过4000英尺的线进行串行通行。
DB-9 引脚连接-------------\ 1 2 3 4 5 /\ 6 7 8 9 /-------从计算机连出的线的截面。
RS-485和RS-422的引脚的功能数据:TXD+(pin 8),TXD-(pin 9),RXD+(pin 4),RXD-(pin 5)握手:RTS+(pin 3),RTS-(pin 7),CTS+(pin 2),CTS-(pin 6)地线:GND (pin 1)5,什么是握手?RS -232通行方式允许简单连接三线:Tx、Rx和地线。
但是对于数据传输,双方必须对数据定时采用使用相同的波特率。
尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。
这时需要串口的握手功能。
在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodem。
a,软件握手:我们讨论的第一种握手是软件握手。
通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。
必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModem允许用户使能或者禁止用户使用两个控制字符XON和OXFF。
这些字符在通信中由接收方发送,使发送方暂停。
例如:假设发送方以高波特率发送数据。
在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。
为了暂时停止传输,接收方发送XOFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。
一旦接收方准备好接收,它发送XON,典型的值是十进制17,即十六进制11,继续通信。
输入buffer半满时,LabWindows发送XOFF。
此外,如果XOFF传输被打断,LabWindows会在buffer达到75%和90%时发送XOFF。
显然,发送方必须遵循此守则以保证传输继续。
b,硬件握手:第二种是使用硬件线握手。
和Tx和Rx线一样,RTS/CTS和DTR/DSR一起工作,一个作为输出,另一个作为输入。
第一组线是RTS (Request to Send)和CTS (Clear to Send)。
当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。
另一组线是DTR(Data Terminal Ready)和DSR(Data Set Ready)。
这些现主要用于Modem通信。
使得串口和Modem通信他们的状态。
例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示和电话线的连接已经建立。
读取DSR线置高,PC机开始发送数据。
一个简单的规则是DTR/DSR 用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。
在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。
如果CTS模式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CTS线高后才能发送数据。
当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。
如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。
如果端口队列近乎空了,哭喊数置高RTS,但使DRT维持高电平。
如果端口关闭,库函数置低RTS和DTR。
c,XModem握手:最后讨论的握手叫做XModem文件传输协议。
这个协议在Modem通信中非常通用。
尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。
在LabWindows中,实际的XModem应用对用户隐藏了。
只要PC和其他设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。
函数是XModemConfig,XModemSend和XModemReceive。
XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。
这些参数需要通信双方认定,标准的XModem有一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。
这些参数的使用方法由接收方发送的字符neg_ack确定。
这通知发送方其准备接收数据。
它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。
如果从发送方收到start_of_data,接收方将读取后继信息数据包。
包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。
在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。
如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。
如果一直没有收到响应,发送方通知用户传输数据失败。
由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。
这导致接收的数据比原数据多。
在XModem情况下一定不要使用XON/XOFF,因为XModem发送方发出包的数目很可能增加到XON/OFF控制字符的值,从而导致通信故障。