串口通信_串口通信协议 - CSDN
串口通信 订阅
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。 展开全文
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。
信息
外文名
Serial Communications
类    型
概念
类    别
通信
中文名
串口通信
标    准
ANSI/EIA-232
串口通信原理
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。一般调制速率大于波特率,比如曼彻斯特编码)。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 [1]  这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
收起全文
精华内容
参与话题
  • 串口通讯基本原理 【详细】

    千次阅读 多人点赞 2018-11-17 08:54:36
    串口通信的基本知识 本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。 串口通讯,RS232,RS485,停止位,奇校验,偶校验 1 串口通讯  串口通讯(Serial Communication),是指外设和...

    串口通信的基本知识

    本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。

    串口通讯,RS232,RS485,停止位,奇校验,偶校验

    1 串口通讯
        串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。
        串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。


    2 串口通讯的数据格式


        一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
        每一个字符的前面都有一位起始位(低电平),字符本身由7位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。

    3 通讯方式
        单工模式(Simplex Communication)的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。
    半双工模式(Half Duplex)通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。
        全双工模式(Full Duplex)通信允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。在全双工模式中,每一端都有发送器和接收器,有两条传输线,信息传输效率高。
        显然,在其它参数都一样的情况下,全双工比半双工传输速度要快,效率要高。

    4 偶校验与奇校验
        在标准ASCII码中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

    5 停止位
        停止位是按长度来算的。串行异步通信从计时开始,以单位时间为间隔(一个单位时间就是波特率的倒数),依次接受所规定的数据位和奇偶校验位,并拼装成一个字符的并行字节;此后应接收到规定长度的停止位“1”。所以说,停止位都是“1”,1.5是它的长度,即停止位的高电平保持1.5个单位时间长度。一般来讲,停止位有1,1.5,2个单位时间三种长度。

    6 波特率
        波特率就是每秒钟传输的数据位数。
        波特率的单位是每秒比特数(bps),常用的单位还有:每秒千比特数Kbps,每秒兆比特数Mbps。串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps。
        PLC/PC与称重仪表通讯时,最常用的波特率是9600bps,19200bps。PLC/PC或仪表与大屏幕通讯时,最常用的波特率是600bps。

    7 典型的串口通讯标准
        EIA RS232(通常简称“RS232”): 1962年由美国电子工业协会(EIA)制定。
        EIA RS485(通常简称“RS485”): 1983年由美国电子工业协会(EIA)制定。

    8 RS232串口
        RS232是计算机与通信工业应用中最广泛一种串行接口。它以全双工方式工作,需要地线、发送线和接收线三条线。RS232只能实现点对点的通信方式。
    8.1 RS232串口缺点
        ●接口信号电平值较高,接口电路芯片容易损坏。
        ●传输速率低,最高波特率19200bps。
        ●抗干扰能力较差。
        ●传输距离有限,一般在15m以内。
        ●只能实现点对点的通讯方式。
    8.2 RS232串口接口定义
        RXD:接收数据,TXD:发送数据,GND/SG:信号地。
    8.3 电脑DB9针接口定义
        电脑DB9针接口是常见的RS232串口,其引脚定义如下:
        2号脚:RXD(接收数据)
        3号脚:TXD(发送数据)
        5号脚:SG或GND(信号地)
        其它脚:我们不用

        

        电脑RS232串口与仪表串口连接图:
     
        

    9 RS485串口
    9.1 RS485串口特点
        ●RS485采用平衡发送和差分接收,具有良好的抗干扰能力,信号能传输上千米。
        ●RS485有两线制和四线制两种接线。采用四线制时,只能实现点对多的通讯(即只能有一个主设备,其余为从设备)。四线制现在很少采用,现在多采用两线制接线方式。
        ●两线制RS485只能以半双式方式工作,收发不能同时进行。
        ●RS485在同一总线上最多可以接32个结点,可实现真正的多点通讯,但一般采用的是主从通信方式,即一个主机带多个从机。
        ●因RS485接口具有良好的抗干扰能力,长的传输距离和多站能力等优点使其成为首选的串行接口。
    9.2 485抑制共模干扰示意图
        
    9.3 RS485串口接口定义
        A或Data+(D+)或+:信号正;
        B或Data-(D-)或-:信号负。
    9.4 计算机与RS485仪表通讯
        计算机自带的串口只有RS232,没有RS485,如果计算机要与RS485串口的仪表进行通讯,必须使用串口转换器或装上RS485串口转换卡后才能进行通讯。
    9.5 RS485串口的终端电阻
        ●一般情况下不需要增加终端电阻,只有在RS485通信距离超过100米的情况下,要在RS485通讯的开始端和结束端增加终端电阻,RS485典型终端电阻是120欧。
        ●终端电阻是为了消除在通信电缆中的信号反射在通信过程中,有两种信号因导致信号反射:阻抗不连续和阻抗不匹配。
        阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。
        引起信号反射的另一原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。

    10 串口通讯硬件常见的注意事项
        ●通讯电缆端子一定接牢,不可有任何松动,否则,可能会烧坏仪表或上位机的通讯板。
        ●不可带电拔插通讯端子,否则,可能会烧坏仪表或上位机的通讯板,一定要关闭仪表电源后才能去拔插通讯端子或接通讯线。
        ●通讯用的屏蔽电缆最好选用双层隔离型屏蔽电缆,其次选用单层屏蔽电缆,最好不要选用无屏蔽层的电缆,且电缆屏蔽层一定要能完全屏蔽,有些质量差的电缆,屏蔽层很松散,根本起不到屏蔽的作用。单层屏蔽的电缆屏蔽层应一端接地,双层屏蔽的电缆屏蔽层其外层(含铠装)应两端接地,内层屏蔽则应一端接地。
        ●仪表使用RS232通讯时,通讯电缆长度不得超过15米。
        ●一般RS485协议的接头没有固定的标准,可能根据厂家的不同引脚顺序和管脚功能可能不尽相同,用户可以查阅相关产品RS485的引脚图。
        ●RS485通讯电缆最好选用阻阬匹配、低衰减的RS485专用通讯电缆(双绞线),不要使用普通的双绞电缆或质量较差的通讯电缆。因为普通电缆或质量差的通讯电缆,可能阻抗不匹配、衰减大、绞合度不够、屏蔽层太松散,这样会导致干扰将非常大,会造成通讯不畅,甚至通讯不上。
        ●仪表使用RS485通讯时,每台仪表必须手牵手地串下去,不可以有星型连接或者分叉,如果有星型连接或者分叉,干扰将非常大,会造成通讯不畅,甚至通讯不上。

        

        ●485总线结构理论上传输距离达到1200米,一般是指通讯线材优质达标,波特率9600,只有一台485设备才能使得通讯距离达到1200米,而且能通讯并不代表每次通讯都正常,所以通常485总线实际的稳定通讯距离远远达不到1200米。负载485设备多,线材阻抗不同时,通讯距离更短。
        ●仪表使用RS485通讯时,必要时,请接入终端电阻,以增强系统的抗干扰性,典型的终端电阻阻值是120欧。

    11 串口通讯软件设置要点
    11.1 有关通讯的一些基本概念
        ●主机与从机:在通讯系统中起主要作用、发布主要命令的称为主机,接受命令的称为从机。
        ●连续方式:指主机不需要发布命令,从机就能自动地向主机发送数据。
        ●指令方式:指主机向从机发布命令,从机根据指令执行动作,并将结果“应答”给主机的模式。
        ●输出数据类型:指在连续方式通讯时,从机输出给主机的数据类型。
        ●通讯协议:指主机与从机通讯时,按哪一种编码规则来通讯。
        ●波特率:主从机之间通讯的速度。
        ●数据位:每次传输数据时,数据由几位组成。
        ●校验位:数据传输错误检测,可以是奇校验、偶校验或无校验。
        ●地址:每一台从机的编号。
    11.2 主从机之间通讯设置要点
        ●要点一:主/从RS232/485硬件有无设置正确,通讯线有无接对。有些通讯板卡是RS422与RS485共用的,依靠板上跳线来实现的,有些仪表RS232/485也需要通讯跳线来实现。
        ●要点二:主机上的通讯端口有无设置正确;超时(一般设置为2s)、通讯延时(一般设置为5~20ms)、ACK信号延时(一般设置为0ms)有无设置正确。
        ●要点三:主/从机通讯协议有无选择正确。
        ●要点四:主/从机波特率有无选择正确。
        ●要点五:主/从机数据位有无选择正确。数据位可以选择7位,8位。
        ●要点六:主/从机校验位有无选择正确。校验位一般可选择偶校验、奇校验、无校验。
        ●要点七:主/从机停止位有无选择正确。停止位可以选择1位、1.5位还是2位。
        ●要点八:从机地址有无选择正确。
        ●要点九:主/从机的通讯方式有无选择正确。

     

    进行通讯测试的时候经常会进行线路测试,测试所用的串口线是否可用,方法有二如下:

     

    1  把串口线接到不同的串口,用串口调试工具从一个串口发数据,另一个能正常收到说明串口线是OK的。

    2  把串口线的一端短接(用金属把2,3号脚连通),用万用表测另一端的2,3号如果正常的话会有嘀嘀的短接报警声。

    展开全文
  • 【STM32】串口通信基本原理(超基础、详细版)

    万次阅读 多人点赞 2019-05-19 14:30:22
    一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是: 并、串行通信的区别 并行通信 串行通信 传输原理 数据各个位同时传输 数据按位顺序传输 优点 速度快 占用...

    STM32F1xx官方资料:

    《STM32中文参考手册V10》-第25章通用同步异步收发器(USART)

     

    通信接口背景知识

    设备之间通信的方式

    一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是:

    并、串行通信的区别
      并行通信 串行通信
    传输原理 数据各个位同时传输 数据按位顺序传输
    优点 速度快 占用引脚资源少
    缺点 占用引脚资源多 速度相对较慢

    串行通信的分类

    1、按照数据传送方向,分为:

    • 单工:数据传输只支持数据在一个方向上传输;
    • 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口
    • 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端

    2、按照通信方式,分为:

    • 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。
    • 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。

    在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

    在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。

    在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。

    常见的串行通信接口

     

    常见的串行通信接口
    通信标准 引脚说明 通信方式 通信方向

    UART

    (通用异步收发器)

    TXD:发送端

    RXT:接收端

    GND:共地

    异步通信 全双工

    1-wire

    (单总线)

    DQ:发送/接收端 异步通信 半双工
    SPI

    SCK:同步时钟

    MISO:主机输入,从机输出

    MOSI:主机输出,从机输入

    同步通信 全双工
    I2C

    SCK:同步时钟

    SDA:数据输入/输出端

    同步通信 半双工

     

    STM32串口通信基础

    STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。

    UART引脚连接方法

    • RXD:数据输入引脚,数据接受;
    • TXD:数据发送引脚,数据发送。

    对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了

    若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。

    经过电平转换后,芯片串口和rs232的电平标准是不一样的:

    • 单片机的电平标准(TTL电平):+5V表示1,0V表示0;
    • Rs232的电平标准:+15/+13 V表示0,-15/-13表示1。

    RS-232通讯协议标准串口的设备间通讯结构图如下: 

    所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的rs232口之间,通过电平转换电路(如下面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换。

    具体要了解RS232串口的,可以查看链接RS232串口简介

    STM32的UART特点

    • 全双工异步通信
    • 分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
    • 可编程的数据字长度(8位或者9位);
    • 可配置的停止位(支持1或者2位停止位);
    • 可配置的使用DMA多缓冲器通信
    • 单独的发送器和接收器使能位
    • 检测标志:① 接受缓冲器  ②发送缓冲器空 ③传输结束标志;
    • 多个带标志的中断源,触发中断
    • 其他:校验控制,四个错误检测标志。

     

    串口通信过程

    STM32中UART参数

    串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。

    UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位。如下图所示:

    奇偶校验位分为奇校验和偶校验两种,是一种简单的数据误码校验方法。奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。

    校验方法除了奇校验(odd)、偶校验(even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。 0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。

    UART(USART)框图

    这个框图分成上、中、下三个部分。本文大概地讲述一下各个部分的内容,具体的可以看《STM32中文参考手册》中的描述。

    框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。

    然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?

    这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来进行控制的。而接收器时钟和发送器时钟有是由什么控制的呢?

    可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。同时也可以看到接收器时钟(发生器时钟)的计算方法、USRRTDIV的计算方法。

    这里需要知道一个知识点:

    • UART1的时钟:PCLK2(高速);
    • UART2、UART3、UART4的时钟:PCLK1(低速)。

    框图的中部分,涉及到UART(USART)的中断控制部分,在后面的文章中会具体介绍到。

     

    展开全文
  • 串口通信的基本知识

    万次阅读 多人点赞 2018-11-12 20:45:38
    串口通信的基本知识 本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。 串口通讯,RS232,RS485,停止位,奇校验,偶校验 1 串口通讯  串口通讯(Serial Communication),是指外设和...

    串口通信的基本知识

    本文介绍了串口通讯的基本概念、数据格式、通讯方式、典型的串口通讯标准等内容。

    串口通讯,RS232,RS485,停止位,奇校验,偶校验

    1 串口通讯
        串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。
        串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。


    2 串口通讯的数据格式


        一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
        每一个字符的前面都有一位起始位(低电平),字符本身由7位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。

    3 通讯方式
        单工模式(Simplex Communication)的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。
    半双工模式(Half Duplex)通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。
        全双工模式(Full Duplex)通信允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。在全双工模式中,每一端都有发送器和接收器,有两条传输线,信息传输效率高。
        显然,在其它参数都一样的情况下,全双工比半双工传输速度要快,效率要高。

    4 偶校验与奇校验
        在标准ASCII码中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

    5 停止位
        停止位是按长度来算的。串行异步通信从计时开始,以单位时间为间隔(一个单位时间就是波特率的倒数),依次接受所规定的数据位和奇偶校验位,并拼装成一个字符的并行字节;此后应接收到规定长度的停止位“1”。所以说,停止位都是“1”,1.5是它的长度,即停止位的高电平保持1.5个单位时间长度。一般来讲,停止位有1,1.5,2个单位时间三种长度。

    6 波特率
        波特率就是每秒钟传输的数据位数。
        波特率的单位是每秒比特数(bps),常用的单位还有:每秒千比特数Kbps,每秒兆比特数Mbps。串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps。
        PLC/PC与称重仪表通讯时,最常用的波特率是9600bps,19200bps。PLC/PC或仪表与大屏幕通讯时,最常用的波特率是600bps。

    7 典型的串口通讯标准
        EIA RS232(通常简称“RS232”): 1962年由美国电子工业协会(EIA)制定。
        EIA RS485(通常简称“RS485”): 1983年由美国电子工业协会(EIA)制定。

    8 RS232串口
        RS232是计算机与通信工业应用中最广泛一种串行接口。它以全双工方式工作,需要地线、发送线和接收线三条线。RS232只能实现点对点的通信方式。
    8.1 RS232串口缺点
        ●接口信号电平值较高,接口电路芯片容易损坏。
        ●传输速率低,最高波特率19200bps。
        ●抗干扰能力较差。
        ●传输距离有限,一般在15m以内。
        ●只能实现点对点的通讯方式。
    8.2 RS232串口接口定义
        RXD:接收数据,TXD:发送数据,GND/SG:信号地。
    8.3 电脑DB9针接口定义
        电脑DB9针接口是常见的RS232串口,其引脚定义如下:
        2号脚:RXD(接收数据)
        3号脚:TXD(发送数据)
        5号脚:SG或GND(信号地)
        其它脚:我们不用

        

        电脑RS232串口与仪表串口连接图:
     
        

    9 RS485串口
    9.1 RS485串口特点
        ●RS485采用平衡发送和差分接收,具有良好的抗干扰能力,信号能传输上千米。
        ●RS485有两线制和四线制两种接线。采用四线制时,只能实现点对多的通讯(即只能有一个主设备,其余为从设备)。四线制现在很少采用,现在多采用两线制接线方式。
        ●两线制RS485只能以半双式方式工作,收发不能同时进行。
        ●RS485在同一总线上最多可以接32个结点,可实现真正的多点通讯,但一般采用的是主从通信方式,即一个主机带多个从机。
        ●因RS485接口具有良好的抗干扰能力,长的传输距离和多站能力等优点使其成为首选的串行接口。
    9.2 485抑制共模干扰示意图
        
    9.3 RS485串口接口定义
        A或Data+(D+)或+:信号正;
        B或Data-(D-)或-:信号负。
    9.4 计算机与RS485仪表通讯
        计算机自带的串口只有RS232,没有RS485,如果计算机要与RS485串口的仪表进行通讯,必须使用串口转换器或装上RS485串口转换卡后才能进行通讯。
    9.5 RS485串口的终端电阻
        ●一般情况下不需要增加终端电阻,只有在RS485通信距离超过100米的情况下,要在RS485通讯的开始端和结束端增加终端电阻,RS485典型终端电阻是120欧。
        ●终端电阻是为了消除在通信电缆中的信号反射在通信过程中,有两种信号因导致信号反射:阻抗不连续和阻抗不匹配。
        阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。
        引起信号反射的另一原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。

    10 串口通讯硬件常见的注意事项
        ●通讯电缆端子一定接牢,不可有任何松动,否则,可能会烧坏仪表或上位机的通讯板。
        ●不可带电拔插通讯端子,否则,可能会烧坏仪表或上位机的通讯板,一定要关闭仪表电源后才能去拔插通讯端子或接通讯线。
        ●通讯用的屏蔽电缆最好选用双层隔离型屏蔽电缆,其次选用单层屏蔽电缆,最好不要选用无屏蔽层的电缆,且电缆屏蔽层一定要能完全屏蔽,有些质量差的电缆,屏蔽层很松散,根本起不到屏蔽的作用。单层屏蔽的电缆屏蔽层应一端接地,双层屏蔽的电缆屏蔽层其外层(含铠装)应两端接地,内层屏蔽则应一端接地。
        ●仪表使用RS232通讯时,通讯电缆长度不得超过15米。
        ●一般RS485协议的接头没有固定的标准,可能根据厂家的不同引脚顺序和管脚功能可能不尽相同,用户可以查阅相关产品RS485的引脚图。
        ●RS485通讯电缆最好选用阻阬匹配、低衰减的RS485专用通讯电缆(双绞线),不要使用普通的双绞电缆或质量较差的通讯电缆。因为普通电缆或质量差的通讯电缆,可能阻抗不匹配、衰减大、绞合度不够、屏蔽层太松散,这样会导致干扰将非常大,会造成通讯不畅,甚至通讯不上。
        ●仪表使用RS485通讯时,每台仪表必须手牵手地串下去,不可以有星型连接或者分叉,如果有星型连接或者分叉,干扰将非常大,会造成通讯不畅,甚至通讯不上。

        

        ●485总线结构理论上传输距离达到1200米,一般是指通讯线材优质达标,波特率9600,只有一台485设备才能使得通讯距离达到1200米,而且能通讯并不代表每次通讯都正常,所以通常485总线实际的稳定通讯距离远远达不到1200米。负载485设备多,线材阻抗不同时,通讯距离更短。
        ●仪表使用RS485通讯时,必要时,请接入终端电阻,以增强系统的抗干扰性,典型的终端电阻阻值是120欧。

    11 串口通讯软件设置要点
    11.1 有关通讯的一些基本概念
        ●主机与从机:在通讯系统中起主要作用、发布主要命令的称为主机,接受命令的称为从机。
        ●连续方式:指主机不需要发布命令,从机就能自动地向主机发送数据。
        ●指令方式:指主机向从机发布命令,从机根据指令执行动作,并将结果“应答”给主机的模式。
        ●输出数据类型:指在连续方式通讯时,从机输出给主机的数据类型。
        ●通讯协议:指主机与从机通讯时,按哪一种编码规则来通讯。
        ●波特率:主从机之间通讯的速度。
        ●数据位:每次传输数据时,数据由几位组成。
        ●校验位:数据传输错误检测,可以是奇校验、偶校验或无校验。
        ●地址:每一台从机的编号。
    11.2 主从机之间通讯设置要点
        ●要点一:主/从RS232/485硬件有无设置正确,通讯线有无接对。有些通讯板卡是RS422与RS485共用的,依靠板上跳线来实现的,有些仪表RS232/485也需要通讯跳线来实现。
        ●要点二:主机上的通讯端口有无设置正确;超时(一般设置为2s)、通讯延时(一般设置为5~20ms)、ACK信号延时(一般设置为0ms)有无设置正确。
        ●要点三:主/从机通讯协议有无选择正确。
        ●要点四:主/从机波特率有无选择正确。
        ●要点五:主/从机数据位有无选择正确。数据位可以选择7位,8位。
        ●要点六:主/从机校验位有无选择正确。校验位一般可选择偶校验、奇校验、无校验。
        ●要点七:主/从机停止位有无选择正确。停止位可以选择1位、1.5位还是2位。
        ●要点八:从机地址有无选择正确。
        ●要点九:主/从机的通讯方式有无选择正确。

     

    进行通讯测试的时候经常会进行线路测试,测试所用的串口线是否可用,方法有二如下:

     

    1  把串口线接到不同的串口,用串口调试工具从一个串口发数据,另一个能正常收到说明串口线是OK的。

    2  把串口线的一端短接(用金属把2,3号脚连通),用万用表测另一端的2,3号如果正常的话会有嘀嘀的短接报警声。

     

    展开全文
  • 51单片机的串口通信(一)

    万次阅读 多人点赞 2018-12-02 18:27:07
    串口通信好东西,但我没用过。 下面照着普中科技的ppt搬运下。  随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息...

    串口通信好东西,但我没用过。

    下面照着普中科技的ppt搬运下。


           随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。

    通信方式

    并行通信串行通信两种。

    并行通信通常是将数据字节的各位用多条数据线同时进行传送 。

    图一:并行通信

    串行通信是将数据字节分成一位一位的形式在。

    图二:串行同行

     

     

     

     

     

    串行通信的传输方向

    单工是指数据传输仅能沿一个方向,不能实现反向传输。

    半双工是指数据传输可以沿两个方向,但需要分时进行。

    全双工是指数据可以同时进行双向传输。

     

    串行通信常见的错误校验 

    奇偶校验、循环冗余校验

     

    传输速率(比特率):

    比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。

     

    80C51串行口的结构

    图三:串口结构

     有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。

     

    串行口的控制寄存器(SCON)(有点复杂,没咋整明白,以后用的时候再说)

    用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

    图四:SCON

    SM0和SM1为工作方式选择位,可选择四种工作方式:

    图五:工作方式

    SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是0。在方式1时,如果SM2=1,则只有接收到有效停止位时,RI才置1。

    REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

    TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用。

    RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。

    TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请

    RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。 

    PCON中只有一位SMOD与串行口工作有关

    图六:PCON

    SMOD(PCON.7)  波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。 

     

    波特率的计算(用波特率计算器)

    方式0的波特率 =  fosc/12

    方式2的波特率 =(2SMOD/64)· fosc

    方式1的波特率 =(2SMOD/32)·(T1溢出率)

    方式3的波特率 =(2SMOD/32)·(T1溢出率)

     T1 溢出率 = fosc /{12×[256 -(TH1)]}

           在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。

    图七:波特率

    串口如何使用 

    确定串行口控制(编程SCON寄存器);

    确定T1的工作方式(编程TMOD寄存器);

    计算T1的初值,装载TH1、TL1;

    启动T1(编程TCON中的TR1位);

    PC和单片机通信:

    #include<reg52.h>
    
    typedef unsigned char uchar;
    
    void Serial_comInit()
    {
    	SCON=0X50;			//设置为工作方式1 ,既然是方式一,自然要确定波特率,设置定时器1
    	TMOD=0X20;//8位重装载
    	PCON=0X80;
    	TH1=0xF3;//波特率4800
    	TL1=0XF3;
    	ES=1;						//打开通信中断
    	EA=1;						//打开总中断
    	TR1=1;					//打开计数器
    }
    
    void main(void)
    {
    	Serial_comInit();
    	while(1);
    }
    
    void communication() interrupt 4
    {
    	uchar receiveData;
    	receiveData=SBUF;//出去,接,收到的数据
    	RI = 0;//清除接收中断标志位
    	SBUF=receiveData;//将接收到的数据放入到发送寄存器
    	while(!TI);			 //等待发送数据完成
    	TI=0;						 //清除发送完成标志位
    }

     

     电脑发送数据到单片机:

    (来源:https://blog.csdn.net/u014453898/article/details/57123007

    
    #include<reg52.h>
    
    #define uchar unsigned char
    
    #define uint  unsigned int
    uchar buf;
    
    #define led P2
    
    void main(void)
    
    {
    
    SCON=0x50;//设定串口工作方式0101 0000
    
    PCON=0x00;
    
    TMOD=0x20;
    
    EA=1;
    
    ES=1;
    
    TL1=0xfd;//波特率9600
    
    TH1=0xfd;
    
    TR1=1;
    
    while(1);
    
    }
    
     
    
    //串行中断服务函数
    
    void serial() interrupt 4
    
    	{
    
    	ES=0;		//暂时关闭串口中断
    
    	RI=0;
    
    	buf=SBUF;	//把收到的信息从SBUF放到buf中。
    
    	switch(buf)
    
    	{
    
    	case 0x31: led=0xfe;break;   //二进制 0011 0001  十进制 49 控制字符 1  16进制 0X31
    
    	case 0x32: led=0xfd;break;	 //1111 1101
    
    	case 0x33: led=0xfb;break;
    
    	case 0x34: led=0xf7;break;
    
    	case 0x35: led=0xef;break;   
    
    	case 0x36: led=0xdf;break;	
    
    	case 0x37: led=0xbf;break;
    
    	case 0x38: led=0x7f;break;
    
    	}
    
    	ES=1;		//重新开启串口中断
    
    	SBUF=buf;
    	while(!TI);
    	TI=0;
    
    }
    
     
    

     我的串口助手有点智障,不过程序应该没有啥大问题。

     

    参考文章:

    C51学习五)单片机与PC通过串口通信 

     

       

     

     

     

     

    一条传输线上逐个地传送。

     

     

     

     

    展开全文
  • c# 简单的串口通信 新手篇

    万次阅读 多人点赞 2020-07-13 11:18:20
    最近自己闲着 自学了C# ,本人不是搞软件的 ,搞嵌入式的 ,经常要用串口调试工具来调试 ,有时候还要处理一些数据但是市面上的不能满足我的要求 ,正好一个项目需要学习C#,借此机会来开发一个串口 ,说不定对我也...
  • 串口通讯协议

    万次阅读 多人点赞 2018-03-02 10:02:47
    文章转载自http://www.cnblogs.com/firege/p/5805753.html20.1 串口通讯协议简介串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师...
  • Windows 串口通信简单示例

    万次阅读 2017-01-13 22:09:03
    为了方便串口程序的调试,使用了如下两款工具软件 [1]. 串口调试助手 ...该软件可以通过串口收发数据。可以通过串口发送数据,也可以查看串口收到的数据。...[2]. 虚拟串口 ...串口通信的基本步骤
  • 串口通信协议简介

    万次阅读 2020-01-07 13:20:03
    串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 在计算机科学里,大部分...
  • 串口通信原理和简介

    万次阅读 多人点赞 2017-06-28 09:43:29
    串口通信定义  串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于...
  • 单片机_串口通信知识详解

    千次阅读 2019-02-27 16:13:36
    单片机_串口通信详解   楼主在实际的项目开发过程中,特别是用一些比较常见的传感器,使用最多的通信方式...  速度和资源的问题,比如说一个字节八位,如果一位一位通过一根线传输那就是串行通信,但要是八位...
  • 串行通讯的时序分析

    千次阅读 2016-03-13 09:59:39
    通信协议按时间分为:同步通信 和异步通信,按发送数据的位宽可分为串行通信和并行通信,串行通信里按通信数据传输的方向机是否同时收发程序通信又分为:单工,半双工,全双工。 区别:同步和异步: 同步是面向...
  • VB串口通信技术资料:媒体/源码/论文/书籍/视频/控件/程序 联系QQ:149034219 获取地址:http://item.taobao.com/item.htm?id=17223194202 淘宝地址:http://shop34608724.taobao.com 一、总目录如下所示: ...
  • USB口是串口的一种

    千次阅读 2013-11-25 10:38:15
     USB也是串行通信方式,所以USB口也是串口的一种。  USB的英文缩写是UniversalSerialBus,翻译成中文就是“通用串行总线”,也称通用串联接口。  一个是狭义的,一个是广义的。  如果你一定要区分的话,电脑
  • 串口系统简图、时序图

    千次阅读 2018-05-21 16:17:41
    串口系统简图串口线程时序
  • 串口--异步通信和同步通信深入理解

    万次阅读 2017-05-05 17:14:29
    在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。 同步和异步大家从名称上就大概知道区别在哪里,简单的说就是...
  • 串口与并口的区别

    千次阅读 2017-02-23 11:35:05
    串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。 串行接口 一条信息...
  • 树莓派串行通讯的问题

    千次阅读 2015-07-26 16:30:14
     通过usb使用树莓派串行通信(利用USB to RS232转接线),其对应的设备是 /dev/ttyUSB0。  注意:如果接在USB Hub上,则其对应的设备可能是/dev/ttyUSB1、/dev/ttyUSB2、/dev/ttyUSB3等(与你所接的口有关)
  • 单片机的串口通信协议

    千次阅读 2015-03-03 14:12:14
    单片机的选择和串行通信协议的设计_高怀举
  • Arduino 串口通信 常用函数

    千次阅读 2019-04-06 22:58:10
    本系列中提到的串口通信一般指Arduino上面的USART通信模式,USART也是串行通信的一种,可以有硬串口,软串口两种实现方式,并且USART是一种异步串行通信,关于串行通信后面会有专门的一篇总结文章,以区分各种概念。...
  • 同步串口和异步串口的区别及使用情况

    万次阅读 多人点赞 2017-05-05 11:13:00
    在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。  1、异步串行方式的特点  所谓异步通信,是指数据传送以字符...
1 2 3 4 5 ... 20
收藏数 170,273
精华内容 68,109
关键字:

串口通信