精华内容
下载资源
问答
  • 串口不能通信的原因
    2020-09-02 09:58:53

    一.基本知识
    1.串行通信:
    串行通信是指通信双方按位进行,遵守时序的一种通信方式。串行通信中,将数据按位依次传输, 每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息。

    2.串口通信:
    串口通信(Serial Communications)串口按位(bit)发送和接收字节的通信方式。可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。

    3.串行通信和串口通信的区别:
    串行通信是指一比特一比特的收发数据,包括I2C,包括SPI等。
    串口通信是一种通信手段,是相对于以太网方式、红外方式、蓝牙方式等而言,是一种比较低级的通信手段。

    4.通信接口:
    并行通信和串行通信

    二.串口通信类型

    类型特点
    单工一个发射,一个接收(单项运作)
    半双工均可收发,但不能在同一时刻进行
    全双工同一时刻,可实现同时收发

    三.串行通信方式
    在这里插入图片描述
    四. 波特率
    即每秒钟传输的数据位数。
    波特率的单位是bit/s(bps),常用的单位还有:每秒千比特数Kbps,每秒兆比特数Mbps。

    更多相关内容
  •  一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;同时接收和发送的串行口称为全双工串行口。...
  • 摘要:串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用c语言编程实现RS232串行通信的过程。结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,实现了...
  • 串口通信相关概念串行通信并行通信 串口通信分为串行通信与并行通信两种。 串行通信 串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间...
  • 摘要:串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用c语言编程实现RS232串行通信的过程。结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,实现了...
  • 串行通信的基本原理

    2021-02-03 17:53:15
    一、串口通信的基本原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。在Windows环境(WindowsNT、...
  • 具有内置的16位定时器、16k的FLASH和512B的RAM,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。这里我们详细说明MSP430G2553串口通信。其引脚排布如图...
  • 本文给出一个在两个DSP之间实现简单异步通信的通用程序。
  • STM32CUIDE之串口通信

    2021-01-06 09:09:59
    通信的方式也可以分为串行和并行通信串口通信只是众多串行通信当中的一种形式,通过开发板上的串口,将数据一位一位的一次传输。 所用设备 STM32MP157开发板,STLINK连接器,USB转TTL接口,5V电源。 开发环境 ...
  • 串行通信口简称串口。美国电子工业协会EIA按电气标准及协议来分,包括RS-232C、RS-422、RS-485、USB等。RS-232、RS-422与RS-485标准只对接口的电气特性作出规定,涉及接插件、电缆或协议。USB是近几年发展起来的...
  • 串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用C语言编程实现RS232串行通信的过程.结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,实现了企业生产...
  • C# Winfrom 可以模拟键盘输入,获取到数据后通过串口发送等
  • 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;同时接收和发送的串行口称为全双工串行口。串行通信是指...
  • VB串口通信第三节串行通信接口标准.pptx
  •  51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;同时接收和发送的串行口称为全双工串行口。串行通信是...
  • 包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口串行通信接口等电路。系统原理图如图1所示。图1 S TM32系统原理图1.1、电源模块与外部晶振STM32F103C8T6内嵌8MHz高速
  • 串口通信综合性实验报告 1、了解RS232串口通信原理。 2、掌握串口波特率设置方法。 3、通过简单101规约开发,掌握通信协议的开发过程。 掌握串行接口芯片8251的工作原理和编程方法。
  • 摘要:文章对多种协议串行通信进行了分析与讨论,给合Linear公司生产的多协议串口芯片,针对传统串口通信实现中的问题以及实际的广域网串行通信的需求,提出了一种多协议串行接口的设计实现方法。 关键词:多协议...
  • 目前几乎所有的DSP都提供一个或多个串口,然而,多数DSP芯片提供的是同步串口,在实际的应用中,DSP要能够与外设进行异步串行通信,如与PC机进行串行数据传输就要求DSP系统具UART串行接口。...
  • UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口串口是工程师最常用的串行外设之一,但在实际应用...

    UART:Universal Asynchronous Receiver / Transmitter,通用异步收发传输器,即我们通常说的串口。

    串口是工程师最常用的串行外设之一,但在实际应用中还是会经常遇到各种问题。比如:丢失一字节数据。

    今天我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题。

    UART几个标志位

    这里重点说一下UART状态寄存器中的几个标志位:TXE、 TC、 RXNE、 ORE。

    af4407de22ef815445e2a6903b9570bf.png

    这几个标志位在编程中经常使用,直接用函数库的同学可能没有关心过这几个标志位,数据丢失有可能就是对它们操作不当而导致出错。

    TXE:发送数据寄存器为空 (Transmit data register empty)

    • 0:数据未传输到移位寄存器

    • 1:数据传输到移位寄存器

    TC:发送完成 (Transmission complete)

    • 0:传送未完成

    • 1:传送已完成

    RXNE:读取数据寄存器不为空 (Read data register not empty)

    • 0:未接收到数据

    • 1:已准备好读取接收到的数据

    ORE:上溢错误 (Overrun error)

    • 0:无上溢错误

    • 1:检测到上溢错误

    UART通信硬件接口

    UART通信硬件接口常见有:TTL、 RS232、 RS485。

    在编程时需要考虑通信接口方式,在长距离通信的时候,需要考虑线路上的延时,如果操作不当也会导致数据丢失。

    1.TTL

    TTL比较简单,就是直接连接UART的Tx和Rx引脚,不需要外部转换。如图:

    95eb9da894114e9f43a4ec313f4f9587.png

    注意:Tx和Rx引脚需要交叉连接。

    2.RS232

    RS-232标准接口是常用的串行通信接口标准之一,规定逻辑“1”的电平为-5V~-15 V,逻辑“0”的电平为+5 V~+15 V。

    选用该电气标准的目的在于提高抗干扰能力,增大通信距离。

    f0aa4966a097997fbb34f82d343232df.png

    3.RS485

    RS485一般采用两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上可以挂接多个节点。

    在低速、短距离、无干扰的场合可以采用普通的双绞线;反之,在高速、长线传输时,则必须采用阻抗匹配(一般为120Ω)的RS485专用电缆;而在干扰恶劣的环境下还应采用铠装型双绞屏蔽电缆。

    e4c824559a94da3dba99384676d952c6.png

    UART接收丢失数据

    UART接收丢失数据与软件和硬件都有可能有关系,下面说几个常见丢失数据的原因及解决办法。

    1.接收溢出丢失数据

    指未及时取走数据导致溢出错误而丢失数据,通常是发生在大量数据、以查询方式接收数据的情况下。在MCU启动过程中、接收数据过多处理不及时、复杂系统响应不及时等情况都会出现数据丢失的情况。

    解决办法:

    • 及时清除溢出错误标志

    • 利用通信协议过滤因数据丢失导致的问题

    2.接收中断丢失数据

    使用UART中断接收数据相比查询接收数据的方式更常见,中断方式比查询方式响应更及时,但不合理处理同样也会存在数据丢失的情况。

    在数据量大时,UART接收中断函数耗时、优先级低等情况下容易丢失数据。

    解决办法:

    • 中断函数里减少不必要的耗时

    • 合理分配中断优先级

    • 使能中断前清除标志位

    3.时钟误差导致丢失数据

    在通信波特率较高的情况下,如果时钟误差加大,很可能导致数据丢失。

    解决办法:

    • 使用更高精度晶振

    • 降低通信波特率

    UART发送丢失数据

    UART发送丢失数据很多工程师都遇到过,通常情况下是传输未完成的原因。

    HAL库已经有几年了,但还是有很多工程师都使用标准外设库,这时如果自己封装接口不当,就会存在发送最后一字节数据丢失的问题。

    1.UART传输未完成导致数据丢失

    如下代码,只考虑非空,但实际传输并未完成。

    void UART_SendByte(uint8_t Data)
    {
      while(RESET == USART_GetFlagStatus(USART1, USART_FLAG_TXE));
      USART_SendData(USART1, Data);
    }

    但发送非空不代表发送完成,虽然在某些场合更高效,但某些场合就会导致数据丢失。

    比如:使用此函数发送之后进入休眠、关闭接收端设备电源等情况下。

    解决办法:

    等待发送完成:

    void UART_SendByte(uint8_t Data)
    {
      while(RESET == USART_GetFlagStatus(USART1, USART_FLAG_TXE));
      USART_SendData(USART1, Data);
      while(RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC));
    }

    如果使用标准外设库,要根据实际情况封装函数,比如发送超时。

    或者使用HAL封装的接口,代码包含判断传输完成:

    HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)


    2.线路延时导致数据丢失

    UART通常会使用232或者485以增加传输距离和增强干扰。但是一旦数据线路太长就存在传输延时的情况,特别是485传输长距离,并使用MCU控制传输方向的情况下。

    解决办法:

    • 软件增加延时处理

    • 使用通信协议增加应答机制

    3.其他原因

    UART应用的场景比较多,有些应用在复杂的工厂,干扰较大从而导致数据丢失;有些应用在温差较大的环境,时钟偏移较大导致数据丢失。

    解决办法需要根据实际情况,有针对性解决问题。比如:使用更好的通信线,软件做好容错处理等。

    ------------ END ------------

    展开全文
  • 串口通信,顾名思义也就是利用串行接口进行通信串行接口串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 串口通信中比较...

    一、串口通信简介

    串口通信,顾名思义也就是利用串行接口进行通信。串行接口指串口按位(bit)发送和接收字节。尽管比按字节(byte)传输的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

    串口通信中比较重要的参数包括波特率、数据位、停止位及校验位,通讯双方需要约定一致的数据格式才能正常收发数据。串行通讯可以进一步分为单工、半双工和全双工三种。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。它们的主要区别在于其各自的电平范围不相同。

    二、串行和并行通信

    刚说到串口通信是通过接口进行串行通讯。那么什么是串行通讯呢?

    1 串行通信:

    串行通信:计算机与I/O设备之间,同一时刻,只能传输一个bit位的信号。传输数据按顺序依次一bit位接一bit位进行传输,通常数据在一根数据线或一对差分线上传输。

    比如,当传输1字节信息时,并行通讯有8根信号线实现同时传输,假如耗时为1T,而串行是在一根信号线上,把数据排成一行、一位一位传输,需要传8次,因此耗时为8T。因此可总结出二者的特性:

    2 并行通信:

    并行通信是和串行通信相对的数据传输的方式。

    并行通信:计算机与I/O设备之间,通过多条传输线,可以同时传输多个bit位的信号。

    • 并行通讯的效率高,但是成本高、对信号线路要求高,一般应用于快速设备之间近距离传输,譬如CPU 与存储设备、存储器与存储器、主机与打印机等都采用并行通讯。

    • 串行通讯效率较低,但是对信号线路要求低,抗干扰能力强,同时成本也相对较低,一般用于计算机与计算机、计算机与外设之间远距离通讯。

    3 串口通信和串行通信的区别

    串口通信和串行通信的区别在于:串行通信是一种概念,串口通信是一种具体的通信手段。

    串行通信是一种概念,是指一比特一比特的收发数据,相对于并行通信可同时传输多个bit位而言。包括一般的的串口通信、I2C、SPI等等。

    串口通信是外设和计算机间的一种通信手段,是相对于以太网通信等通信手段而言的。

    二者一个是一种概念,一个是一种实际的通信方式。

    三、同步和异步通信

    在设备之间传送数据,不管是同步通信还是异步通信,都是为了保证数据被正确的发送和接收,即发送方和接收方的“同步”。即接收方可以确定什么时候发送方开始或者结束发送数据以及每一个数据单位(例如bit,字符)的开始和结束的位置,这样接收方才能在正确的时间对发送方的数据进行采样,以接收正确的数据,否则接收到的数据就是错误的。

    根据“同步方式”的不同,由此分出两种同步信号得方法:
    (1)同步通信(比特位同步)
    (2)异步通信(字符间同步,字符内比特位异步)

    同步通信会利用一根额外的信号线,其实也就是时钟信号线,它往往是发送设备提供的时钟信号,发送设备和接收设备在发送设备提供的同一时钟频率下完成同步。(实际上,基本所有的并行通信采用同步通信。)

    异步通信没有额外的一根信号线用于同步,接收者和发送者使用各自的时钟信号,接收者根据与发送者按事先约定的规来确定数据发送的开始与结束以及数据单位的持续时间。例如异步串行通信中,一般接收双方会确定一致的停止位,数据位的个数、波特率的大小以及是否采用奇偶校验位。接收方可以根据这些信息推测出准确的数据采样时间以接收正确的数据。如果是同步通信则不需要这些额外的用于同步的数据位(开始位,结束位,奇偶校验位)。

    1 同步通信

    同步通信要求发送和接收双方在进行数据传输时,保持完全的同步,因此,要求发收双方必须使用同频同相的同步时钟信号。只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后在同步时钟的控制下逐位发送/接收。这样,信息传输完全可以确定传输过程中每1位的位置。因此同步通信是一种比特同步通信技术。

    如下图所示:
    在这里插入图片描述

    同步通信是一种连续传送数据的通信方式,一次通信传送一帧数据,每个信息帧用同步字符作为开始,字符间不加标识位。(这里的数据帧比异步通信中的字符帧要大得多,通常含有若干个数据字符)。当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。

    同步通信以数据帧为单位,其格式包括:同步字符+数据+校验字符CRC。

    (a)单同步数据帧结构

    同步字符数据字符1数据字符2数据字符3数据字符nCRC1CRC1

    (b)双同步数据帧结构

    同步字符1同步字符2数据字符1数据字符2数据字符nCRC1CRC1

    没有数据发送时,接收方要时刻做好接收数据的准备。在每组信息(通常称为帧)传输的开始,发送方先发送一个或两个特殊字符,该字符称为同步字符。当接收方收到同步字符,并和发送方达到同步后,就可以以固定的节奏一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。同步通信更加适合对速度要求高的传输,对时序的要求很高,当然对硬件要求也更高。

    在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,收发双方用一个时钟进行协调,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符,这样就可以确定传输中每一位的位置。接收数据时,接收方利用同步字符使内部时钟与发送方保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。

    2 异步通信

    异步通信是按字符帧传输的,相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,接收方并不知道数据什么时候会到达,因此接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,时间间隔可以是任意的,在一字符帧中的所有比特是连续发送的。

    发送端不需要在发送字符之前和接收端进行协调(不需要先进行比特同步)。接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的字符间同步,字符内比特位异步)

    因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。通信双方需要对采用的信息格式(字符的位数、停止位的位数、有无校验位及校验方式等)和数据的传输速率作相同的约定。接收方是在数据的起始位和停止位的帮助下实现字符传送时的同步。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。

    在这里插入图片描述
    异步通信以字符为单位,其格式包括:起始位+数据+奇偶校验位+停止位。
    以起止式异步协议为例,如下图所示
    在这里插入图片描述
      起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以"停止位"结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位低电平起始位(逻辑值0),字符本身由5-8位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
      如上图中所示,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
      
    (1)起始位:发送数据时,先发持续一个bit时间的逻辑”0”信号,表示字符传输的开始,接收端可根据起始位使自己的接收时钟与发送方的数据同步。

    (2)数据位:起始位后是数据位,异步传送规定低位在前,高位在后,数据位的位数一般可以是5~8位。

    (3)奇偶校验位:奇偶位紧跟在数据最高位之后,占用一位(也可省去)。加上这一位后,使得逻辑“1”信号的位数得到偶校验或奇校验,以此来校验数据传送的正确性。
      如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。举例来说,假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。
      由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。

    (4)停止位:数据发送完后,再发1位、1.5位、2位的高电平(逻辑”1”信号)代表停止位,表示一帧数据结束,同时为接收下一帧数据做准备。

    (5)空闲位:在没有数据发送时,即下一帧的起始位“0”到来之前,数据线保持默认的“1”状态,即由高电平来填充。

    异步通信字符帧格式总结如下表:

    逻辑信号数据位数
    起始位01位
    数据位0或15~8位
    校验位0或11位或无
    停止位11位,1.5位或2位
    空闲位1任意数量

    :位数的本质含义是信号持续的时间,故可有分数位,如停止位1.5位,1.5是它的长度,即停止位的电平保持1.5个单位时间长度。一个单位时间就是波特率的倒数,例如波特率为9600bps,则一个单位时间长为1/9600s,1.5个停止位,即停止位电平保持1.5/9600s。

    3 同步通信和异步通信比较

    (1)同步通信要求接收端时钟频率和发送端时钟频率一致;异步通信时不要求接收端时钟和发送端时钟同步。

    (2)同步通信数据传输是以字节块(多个字节)传输的;异步通信数据传输是以字符(一个字节)传输的。

    (3)同步通信传输效率高,但复杂、要求高,双方时钟的允许误差较小;异步通信传输效率低,但简单、要求低,双方时钟可允许一定误差。

    (4)同步通信的字节传输是没有间隔的发送端发送连续的比特流;异步通信字节传送的间隔是任意的,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。

    同步通信和异步通信的差异总结如下表:

    同步通信异步通信
    传送单位信息帧(由若干字符组成的数据块)字符(由若干bit组成)
    单位格式同步字符+数据+校验字符CRC起始位+数据位+奇偶校验位+停止位
    传送间隔一个数据块(信息帧)内,字符与字符间无间隔相邻两字符之间隔任意长
    时钟信号时序要求高,使用同频同相的时钟线路时序要求较低,使用各自的时钟信号
    优点效率高简单,要求低
    缺点复杂,要求高效率低(传送一个字符,要增加约20%的附加信息位)
    展开全文
  • 串口通信是一种广泛使用且实用的通信方式,介绍 RS232 串行通信的联结方式,研究利用 C 语言编程实 现 RS232 串行通信的过程.结合实际应用,在约定双方串行通信协议的基础上,运用 C 语言开发的串行通信软 件,实现...
  • 串口通信详解

    千次阅读 2021-10-09 13:23:56
    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。...

    一、串口通讯简介

    串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

    二、 串口通讯的数据格式

    UART串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。UART在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如下图所示。其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错。奇校验时,发送方应使数据位中1的个数与校验位中1的个数之和为奇数;接收方在接收数据时,对1的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。同样,偶校验则检查1的个数是否为偶数。

    在这里插入图片描述
    UART通信过程中的数据格式及传输速率是可设置的,为了正确的通信,收发双方应约定并遵循同样的设置。数据位可选择为5、6、7、8位,其中8位数据位是最常用的,在实际应用中一般都选择8位数据位;校验位可选择奇校验、偶校验或者无校验位;停止位可选择1位(默认),1.5或2位。串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒),常用的波特率有9600、19200、38400、57600以及115200等。

    三、通讯方式

    单工模式(Simplex Communication)通信的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。

    半双工模式(Half Duplex)通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。

    全双工模式(Full Duplex)通信允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。在全双工模式中,每一端都有发送器和接收器,有两条传输线,信息传输效率高。

    显然,在其它参数都一样的情况下,全双工比半双工传输速度要快,效率要高。

    四、 偶校验与奇校验位

    在标准ASCII码中,其最高位(b7)用作奇偶校验位。有四种校验方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

    五、 停止位

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

    六、波特率

    波特率就是每秒钟传输的数据位数。

    波特率的单位是每秒比特数(bps),常用的单位还有:每秒千比特数Kbps,每秒兆比特数Mbps。串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,115200bps,38400bps。

    PLC/PC与称重仪表通讯时,最常用的波特率是9600bps,19200bps。PLC/PC或仪表与大屏幕通讯时,最常用的波特率是9600bps。

    七、 数据位

    这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0-127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语"包"指任何通信的情况。

    八、典型的串口通讯标准

    EIA RS232(通常简称“RS232”): 1962年由美国电子工业协会(EIA)制定。
    EIA RS485(通常简称“RS485”): 1983年由美国电子工业协会(EIA)制定。

    九、RS232串口

    RS232是计算机与通信工业应用中最广泛一种串行接口。它以全双工方式工作,需要地线、发送线和接收线三条线。RS232只能实现点对点的通信方式。

    1、RS232串口缺点

    ●接口信号电平值较高,接口电路芯片容易损坏。
    ●传输速率低,最高波特率19200bps。
    ●抗干扰能力较差。
    ●传输距离有限,一般在15m以内。
    ●只能实现点对点的通讯方式。

    2、RS232串口接口定义

    RXD:接收数据,TXD:发送数据,GND/SG:信号地。

    3、 电脑DB9针接口定义

    电脑DB9针接口是常见的RS232串口,其引脚定义如下:2号脚:RXD(接收数据),3号脚:TXD(发送数据)、5号脚:SG或GND(信号地)。

    在这里插入图片描述

    4、 电气特性及逻辑电平

    在这里插入图片描述

    5、RS-232信号传输及信号波形

    在这里插入图片描述
    在这里插入图片描述

    6、RS-232连接类型

    在这里插入图片描述
    在这里插入图片描述

    7、RS-232 VS RS-422

    在这里插入图片描述

    十、RS-422信号

    1、RS-422电气特性

    在这里插入图片描述

    2、RS-422信号

    在这里插入图片描述

    3、RS-422特性

    在这里插入图片描述

    4、RS-422优势与不足

    在这里插入图片描述

    5、RS-422拓扑结构

    在这里插入图片描述

    6、RS-422 VS RS-485

    在这里插入图片描述
    在这里插入图片描述

    十一、 RS485串口

    1、RS485串口特点

    ●RS485采用平衡发送和差分接收,具有良好的抗干扰能力,信号能传输上千米

    ●RS485有两线制和四线制两种接线。采用四线制时,只能实现点对多的通讯(即只能有一个主设备,其余为从设备)。四线制现在很少采用,现在多采用两线制接线方式。

    ●两线制RS485只能以半双式方式工作,收发不能同时进行。

    ●RS485在同一总线上最多可以接32个结点,可实现真正的多点通讯,但一般采用的是主从通信方式,即一个主机带多个从机。

    ●因RS485接口具有良好的抗干扰能力,长的传输距离和多站能力等优点使其成为首选的串行接口
    在这里插入图片描述

    2、RS485信号及定义

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    3、RS485串口的终端电阻

    ●一般情况下不需要增加终端电阻,只有在RS485通信距离超过100米的情况下,要在RS485通讯的开始端和结束端增加终端电阻,RS485典型终端电阻是120欧。

    ●终端电阻是为了消除在通信电缆中的信号反射在通信过程中,有两种信号因导致信号反射:阻抗不连续和阻抗不匹配。

    阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。

    引起信号反射的另一原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。

    4、RS-485数据流方向控制

    在这里插入图片描述

    5、RS-485拓扑结构

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    十二、 RS232、RS422和RS485性能比较

    1、基本性能

    在这里插入图片描述

    2、传输距离

    在这里插入图片描述

    3、电气参数

    在这里插入图片描述

    展开全文
  • 本文给读者介绍了利用VHDL语言实现FPGA与单片机的串口异步通信电路,供读者学习设计参考。
  • stm32串口通信失败的原因

    千次阅读 2021-02-26 19:53:47
    一、接收乱码 二、串口占用 三、硬件问题
  • Java串口通信详解

    2017-12-27 16:45:36
    其中,最常用的接口就是 RS-232 串口和并口(鉴于 USB 接口的复杂性以及需要 很大的数据传输量, USB 接口用在这里还是显得过于奢侈,况且目前除了 SUN 有一个支持 USB 的包之外,我还没有看到其他直接支持 USB 的...
  • atmega16串口通信

    2020-08-09 22:14:58
    ATmega16 单片机带有一个全双工的通用同步/异步串行收发模块USART,该接口是一个高度灵活的串行通讯设备。
  • 在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。
  • 单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要有深度的解刨才可以理解透彻,既然进来了我肯定不会让你失望,点个小赞再走吧。 正式进入串口通信前我们需要了解什么是通信? 计算机与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,201
精华内容 77,680
关键字:

串口不能通信的原因

友情链接: pdxhygm.zip