0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

串口通信是指什么?带你掌握串口通信

冬至子 来源:嵌入式基地 作者:嵌入式基地 2023-06-26 15:49 次阅读

串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。

串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。

串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

按通信方式分类

同步通信

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

异步通信

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

异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成。

图片

  • 起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。
  • 数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定,一般可以是5位、7位或8位,标准的ASCII码是0127(7位),扩展的ASCII码是0255(8位)。传输数据时先传送字符的低位,后传送字符的高位。
  • 奇偶校验位:奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶检验位不是必须有的。如果是奇校验,需要保证传输的数据总共有奇数个逻辑高位;如果是偶校验,需要保证传输的数据总共有偶数个逻辑高位。

举例来说,假设传输的数据位为01001100,如果是奇校验,则奇校验位为0(要确保总共有奇数个1),如果是偶校验,则偶校验位为1(要确保总共有偶数个1)。

由此可见,奇偶校验位仅是对数据进行简单的置逻辑高位或逻辑低位,不会对数据进行实质的判断,这样做的好处是接收设备能够知道一个位的状态,有可能判断是否有噪声干扰了通信以及传输的数据是否同步。

  • 停止位:停止位可以是是1位、1.5位或2位,可以由软件设定。它一定是逻辑1电平,标志着传输一个字符的结束。
  • 空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。
异步通信的数据发送过程
  • (1)初始化后或者没有数据需要发送时,发送端输出逻辑1,可以有任意数量的空闲位。
  • (2)当需要发送数据时,发送端首先输出逻辑0,作为起始位。
  • (3)接着就可以开始输出数据位了,发送端首先输出数据的最低位D0,然后是D1,最后是数据的最高位。
  • (4)如果设有奇偶检验位,发送端输出检验位。
  • (5)最后,发送端输出停止位(逻辑1)。
  • (6)如果没有信息需要发送,发送端输出逻辑1(空闲位),如果有信息需要发送,则转入步骤(2)。
异步通信的数据接收过程

在异步通信中,接收端以接收时钟和波特率因子决定每一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明。

  • (1)开始通信,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对接收时钟计数。
  • (2)当计到8个时钟的时候,对输入信号进行检测,若仍然为低电平,则确认这是起始位,而不是干扰信号。
  • (3)接收端检测到起始位后,隔16个接收时钟对输入信号检测一次,把对应的值作为D0位数据。
  • (4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据,直到全部数据位都输入。
  • (5)检验奇偶检验位。
  • (6)接收到规定的数据位个数和校验位之后,通信接口电路希望收到停止位(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志;若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中取出送至数据输入寄存器,若校验错,在状态寄存器中置“奇偶错”标志。
  • (7)本帧信息全部接收完,把线路上出现的高电平作为空闲位。
  • (8)当信号再次变为低时,开始进入下一帧的检测。

区别

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

按照数据传输方向分类

  • 单工:数据传输只支持数据在一个方向上传输,如图a所示
  • 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口,如图b所示
  • 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端,如图c所示
    图片
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接收器
    +关注

    关注

    14

    文章

    2215

    浏览量

    70672
  • 移位寄存器
    +关注

    关注

    2

    文章

    182

    浏览量

    22021
  • 串口通信
    +关注

    关注

    32

    文章

    1577

    浏览量

    54866
  • IIC接口
    +关注

    关注

    0

    文章

    23

    浏览量

    11578
  • 状态寄存器
    +关注

    关注

    0

    文章

    37

    浏览量

    7013
收藏 人收藏

    评论

    相关推荐

    串口通信原理和简介

    本文针对串口通信定义,以及串口通信原理进行相关的讲述。
    发表于 11-09 14:39 1.4w次阅读

    串口通信调试(PC与PC串口通信

    【LabVIEW从入门到精通】4.1.6 串口通信调试(PC与PC串口通信
    发表于 01-08 15:43 0次下载

    串口通信调试(PC与智能仪器串口通信

    【LabVIEW从入门到精通】4.1.6 串口通信调试(PC与智能仪器串口通信
    发表于 01-08 15:42 0次下载

    LabVIEW串口通信详解

    LabVIEW串口通信详解,基于LabVIEW来分析串口通信
    发表于 03-15 13:55 468次下载

    niosii的UART串口通信

    niosii的UART串口通信niosii的UART串口通信
    发表于 04-06 17:03 0次下载

    LESSON7_串口通信

    串口通信串口双机通信通信技术。
    发表于 04-13 14:23 0次下载

    串口通信资料

    串口通信的信息,涵盖串口,网络编程,原理图等。包括接口技术,通信网络
    发表于 05-10 14:24 13次下载

    串口通信全解(一)

    串口通信全解(一)大部分人第一次接触串口通信应该都是单片机和PC的通讯,单片机只需要使用一根USB线和电脑连接起来,写好代码之后,通过串口
    发表于 12-20 19:23 5次下载
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>全解(一)

    【嵌入式】STM32串口通信

    【嵌入式】STM32串口通信一、串口通信协议1.串口通信简介2.
    发表于 12-20 19:29 17次下载
    【嵌入式】STM32<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    串口通信的了解

    串口通信小试牛刀一、串口通信的了解(一)串口协议1、简介串口
    发表于 12-20 19:32 11次下载
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>的了解

    STM32与中显串口屏的通信

    STM32与中显串口屏的通信本文将简要介绍STM32单片机和武汉中显串口屏之间的通信实现过程。不过使用大彩、迪文这些公司的串口屏的同学也能参
    发表于 12-24 18:54 51次下载
    STM32与中显<b class='flag-5'>串口</b>屏的<b class='flag-5'>通信</b>

    stm32学习笔记之串口通信

    掌握的。那么,对于新手来讲,串口是什么呢?串口是串行通信接口的简称,即是一种采用串行通信方式的扩展接口,那么什么又是串行
    发表于 01-18 08:34 4次下载
    stm32学习笔记之<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    Qt实现串口通信

    要实现串口通信,需要知道串口通信需要的信息
    的头像 发表于 04-23 17:34 3199次阅读
    Qt实现<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    【分享】什么是串口通信串口常见通信问题如何解决?

    在之前的文章中小编介绍了什么是CAN总线,包括CAN总线的数据格式和通信特点等方面的内容,今天将分享串口通信相关知识内容。CAN总线、串口通信
    的头像 发表于 06-21 17:45 1339次阅读
    【分享】什么是<b class='flag-5'>串口</b><b class='flag-5'>通信</b>?<b class='flag-5'>串口</b>常见<b class='flag-5'>通信</b>问题如何解决?

    licheepi 4a串口通信(usb串口)

    licheepi 4a串口通信(usb串口)
    的头像 发表于 11-08 09:09 305次阅读
    licheepi 4a<b class='flag-5'>串口</b><b class='flag-5'>通信</b>(usb<b class='flag-5'>串口</b>)