RS232串口通信详解

发布者:极地征服者最新更新时间:2016-04-25 来源: eefocus关键字:RS232  串口通信 手机看文章 扫描二维码
随时随地手机看文章
串口是计算机上一种非常通用的设备通信协议。

---------------------------------

串口的引脚定义:

9芯 信号方向来自 缩写 描述 1 调制解调器 CD 载波检测 2 调制解调器 RXD 接收数据 3 PC TXD 发送数据 4 PC DTR 数据终端准备好 5

GND 信号地 6 调制解调器 DSR 通讯设备准备好 7 PC RTS 请求发送 8 调制解调器 CTS 允许发送 9 调制解调器 RI 响铃指示器 两个串口连接时,接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接即可。

---------------------------------

串口的电气特性:

1)RS-232串口通信最远距离是50英尺

2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps

3)RS-232C上传送的数字量采用负逻辑,且与地对称

逻辑1:-3 ~-15V

逻辑0:+3~+15V

所以与单片机连接时常常需要加入电平转换芯片:

---------------------------------

串口通信参数:

a)波特率:RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。

b)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位);扩展的ASCII码是0~255(8位)。

c)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。

d)奇偶校验位:在串口通信中一种简单的检错方式。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。

---------------------------------

串口通信的传输格式:

串行通信中,线路空闲时,线路的TTL电平总是高,经反向RS232的电平总是低。一个数据的开始RS232线路为高电平,结束时Rs232为低电平。数据总是从低位向高位一位一位的传输。示波器读数时,左边是数据的高位。

例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如图1(TTL电平)和图2(RS-232电平)所示。

55H=01010101B,取反后10101010B,加入一个起始位1,一个停止位0,55H的数据格式为1010101010B;

aaH=10101010B,取反后01010101B,加入一个起始位1,一个停止位0,55H的数据格式为1101010100B;

---------------------------------

串口通信的接收过程:

(异步通信:接收器和发送器有各自的时钟;同步通信:发送器和接收器由同一个时钟源控制。RS232是异步通信)

(1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。

(2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。

(3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0。

(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。

(5)检测校验位P(如果有的话)。

(6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。

(7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。

(8)当信号再次变为低时,开始进入下一幀的检测。

---------------------------------

单片机常用11.0592M的的晶振,这个奇怪数字是有来历的:

波特率为9600BPS每位位宽t1=1/9600s

晶振周期t2=1/11.0592/1000000S

单片机机器周期t3=12*t2

t1/t3=96

即对于9600BPS的串口,单片机对其以96倍的速率进行采样。

如果单片机晶振用的不正确,会对串口接受产生误码。

---------------------------------

RS485和RS422

RS485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS485用于多点互连时非常方便,可以省掉许多信号线。应用RS485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。

RS422总线,RS485和RS422电路原理基本相同,都是以差动方式发送和接受,不需要数字地线。差动工作是同速率条件下传输距离远的根本原因,这正是二者与RS232的根本区别,因为RS232是单端输入输出,双工工作时至少需要数字地线发送线和接受线三条线(异步传输),还可以加其它控制线完成同步等功能。RS422通过两对双绞线可以全双工工作收发互不影响,而RS485只能半双工工作,发收不能同时进行,但它只需要一对双绞线。RS422和RS485在19kpbs下能传输1200米。用新型收发器线路上可连接台设备。

关键字:RS232  串口通信 引用地址:RS232串口通信详解

上一篇:RS-232作用和特点
下一篇:RS232串口简介

推荐阅读最新更新时间:2024-05-03 00:20

串口通信中的float型数据的处理
1、将串口接收的数据转换为float型数据 float CXXDlg::FourChar2Float(char* szBuf, //HEX ASC数据 bool bBigEndian = false) //指示是否是Big Endian结构 { typedef union { unsigned char uc ; float f; }Float4Byte; Float4Byte f4b; if(bBigEndian) //大端模式 调整数据顺序(因为PC机是小端模式) { f4b.uc = (unsigned c
[单片机]
51单片机的串口通信
  一、原理简介   51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。   与之前一样,首先我们来了解单片机串口相关的寄存器。   SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同
[单片机]
51单片机的<font color='red'>串口通信</font>
STM32单片机串口通信波特率计算方法
1. 什么是波特率 不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。 2. STM32波特率相关的寄存器 STM32单片机设置波特率的寄存器只有一个:USART_BRR寄存器,如下图所示。 该寄存器的有效位数为16位,前4位用于存放小数部分,后12位用于存放整数部分。将波特率算出来后,数值填入这个波特率就可以了。下面介绍如何计算。 3. 波特率计算方法 STM32的数据手册给出了计算方法,有一个公式,如下图所示: 在这个公式上,共有三
[单片机]
STM32单片机<font color='red'>串口通信</font>波特率计算方法
组态王与单片机多机串口通信的设计
1 引言 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DD
[单片机]
组态王与单片机多机<font color='red'>串口通信</font>的设计
STM32单片机多串口通信仿真测试技术研究
引言 STM32单片机是基于高性能CortexM3内核的32位单片机,其外设功能强大,最大工作频率为72 MHz。本文选用的STM32103VET6芯片,有5个USART、3个SPI口、2个I2C接口,便于产品与上位机的通信。采用基于库函数的编程方法,能很快地进行产品开发。 本文采用基于RealView、VSPD(虚拟串口)和串口调试软件的联合仿真调试技术,可以在没有硬件平台的情况下,完成多串口收发通信软件的开发和测试。 1多串口通信的软件设计原理 使用STM32的USART1~USART3。在不进行引脚重映射的情况下,USART1_Tx引脚为PA9,USART1_Rx引脚为PA10,USART2_Tx引脚为PA2
[单片机]
STM32单片机多<font color='red'>串口通信</font>仿真测试技术研究
C51单片机与PC串口通信的单片机部分程序
注意波特率是9600 功能:电脑通过串口给单片机发一个字节,单片机收到后又给电脑发回去 、#include #define uchar unsigned char #define uint unsigned int uint temp; bit flag; void init_ser1(); main() { init_ser1(); while(1) { if(RI==1) { P1=SBUF; RI=0; } if(flag==1) { ES=0;//暂时关闭接收 flag=0; SBUF=temp; while(!TI);//等待发送完毕 TI=0; ES=1; } } } void sel() interrup
[单片机]
UART串口通信的基本应用
  1、通信的三种基本类型   我们常用的通信通常可以分为单工、半双工、全双工通信。   单工就是指只允许一方向另外一方传送信息,而另一方不能回传信息。比如我们的电视遥控器,我们的收音机广播等,都是单工通信技术。   半双工是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方,比如我们的对讲机就是典型的半双工。   全双工通信就发送数据的同时也能够接受数据,两者同步进行,就如同我们的电话一样,我们说话的同时也可以听到对方的声音。   2、UART模块介绍   IO口模拟串口通信,大家了解了串口通信的实质,但是我们的 单片机 程序却需要不停的检测扫描单片机IO口收到的数据,大量占用了CPU资源。这时候就会
[单片机]
S5PV210串口通信接口-2
1、本来串口功能就是上节讲的部分,但是后来的技术发展给串口叠加了一些高级功能,在像210这类高级SOC的串口控制器中,都有这类高级功能。 2、FIFO模式及其作用 (1)、典型的串口设计,发送 / 接收缓冲区只有1个字节,每次发送 / 接收只有处理一帧数据。这样在单片机中设计没什么问题,但是到复杂SOC中(一般有操作系统)就会有问题,会导致效率低下,因为缓冲区太小CPU需要不断切换上下文。 (2)、解决方案就是想办法扩展串口控制器的发送 / 接收缓冲区,譬如将发送 / 接收缓冲区设置为64字节,CPU一次过来直接给发送缓冲区64字节的待发数据(后CPU可以空出时间去处理别的事),然后transmitter慢慢发,发完再找CPU
[单片机]
S5PV210<font color='red'>串口通信</font>接口-2
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved