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

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

3天内不再提示

一文浅谈串口通信

哈哈hfgfdf 来源:嵌入式学习资料 作者:嵌入式学习资料 2023-01-09 12:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

0、串行通信

串行通信技术(Serial Communication),是指通信双方按位bit进行,遵守时序的一种通信方式。串行通信中,将数据按位依次传输, 每位数据占据固定的时间长度,仅用一根接收线和一根发送线就可以完成系统间交换信息

尽管串行通讯的比按字节传输的并行通信慢,但是串口具有通信线路少,布线简便易行,施工方便,结构灵活,系统间协商协议,自由度及灵活度较高的特点。

同步通信:

同步通信是一种连续串行传送数据的通信方式,一次通信传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。

同步字符位于帧开头,用于确认数据字符的开始。

数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;

校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。

同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。

异步通信:

异步通信中,有两个比较重要的指标:字符帧格式和波特率,在发送端和接收端要保持一致。

数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。

发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。

接收端检测到传输线上发送过来的低电平逻辑"0"(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。

虽然异步技术使用简单,但起始和停止位是额外开销,浪费了带宽。

一、不同接口之间的区别:

USB(Universal Serial Bus,通用串行总线)
是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。

f91442ca-8fd9-11ed-92c9-dac502259ad0.png

COM口(串口)
串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。

(1) D型9针串口(DB9):RS-232电平标准

f93ac918-8fd9-11ed-92c9-dac502259ad0.png

(2)4针串口:TTL电平标准
f95b5dcc-8fd9-11ed-92c9-dac502259ad0.png

二、串口通信

典型的串口通信使用3根线完成,分别是地线GND、发送TXD(transport)、接收RXD(receive)。

由于串口通信是异步的,所以端口能够在一根线上发送数据同时在另一根线上接收数据。

串口通信(异步)最重要的参数是波特率、数据位、停止位和奇偶的校验。对于两个需要进行串口通信的端口,这些参数必须匹配,这也是能够实现串口通讯的前提。

串口通信(如RS232接口)的数据传输都是0和1,在单总线、I2CUART中都是通过一根线的高低电平来判断逻辑1或者逻辑0,但这种信号线的GND再与其他设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。而差分通信、支持多机通信、抗干扰强的RS485则能够实现更适合长距离、高速传输。

对于通讯协议,最基本的是把它分为物理层和协议层。

物理层

物理层规定通讯系统中具有机械、电子功能部分的特性, 确保原始数据在物理媒体的传输。

串口通讯的物理层有很多标准及变种,例如RS-232标准主要规定了信号的用途、通讯接口以及信号的电平标准。

f97c0e5a-8fd9-11ed-92c9-dac502259ad0.png

在上面的通讯方式中,两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。由于RS-232电平标准的信号不能被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL标准"的电平信号,才能实现通讯。

RS232与TTL的电平标准

不平衡传输、相对于信号地的单端通讯、全双工

f9bc2256-8fd9-11ed-92c9-dac502259ad0.png

RS485 差分信号

为了提高抗干扰特性和增大传输距离,RS485采用差分信号进行数据传输,是一种半双工通信方式;

在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。

相对于单信号线传输的方式,使用差分信号传输具有如下优点:


1)抗干扰能力强,当外界存在噪声干扰时,几乎会同时耦合到两条信号线上,而接收端只关心两个信号的差值,所以外界的共模噪声可以被完全抵消。

2)能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。

3)时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的电路。

由于差分信号线具有这些优点,所以在USB协议、485协议、以太网协议及CAN协议的物理层中,都使用了差分信号传输。

2. 协议层

串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中, 规定了通讯逻辑(数据包的内容),它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式(帧格式)要约定一致才能正常收发数据;通常两个设备之间通信要约定好波特率、数据长度、检验位和停止位。

f9d9f7e0-8fd9-11ed-92c9-dac502259ad0.png

波特率:数据信号对载波的调制速率,串口异步通讯中由于没有时钟信号(如DB9接口中是没有时钟信号的), 所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码。比如波特率为9600bps;代表的就是每秒中传输9600bit,也就是相当于每一秒中划分成了9600等份。【比特率 = 波特率 X 单个调制状态对应的二进制位数】

起始位:起始位必须是持续一个比特时间的逻辑0电平,标志传输一个字符的开始,接收方可用起始位使自己的接收时钟与发送方的数据同步。

数据位:数据位紧跟在起始位之后,是通信中的真正有效信息。数据位的位数可以由通信双方共同约定(通常为5、6、7或8位。传输数据时先传送字符的低位,后传送字符的高位。

校验位:在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差, 可以在传输过程加上校验位来解决这个问题。

(1)奇校验(odd):数据位加上校验位中的“逻辑高位1”的个数保持为奇数;
(2)偶校验(even):数据位加上校验位中的“逻辑高位1”的个数保持为偶数(3)0校验(space):校验位永远是0;

(4)1校验(mark):校验位永远是1;

(5)无校验(noparity):没有校验位。

停止位:由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来填充。

例如,对于16进制数据55aaH,当采用8位数据位、1位停止位传输时,它在信号线上的波形如下图所示。
(先传第一个字节55,再传第二个字节aa,每个字节都是从低位向高位逐位传输)

fa0fb7ae-8fd9-11ed-92c9-dac502259ad0.png

fa2798f6-8fd9-11ed-92c9-dac502259ad0.png

3、数据传输方向

单工:数据传输只支持数据在一个方向上传输;

半双工:允许数据在两个方向上传输,但某一时刻只允许数据在一个方向上传输,实际上是一种切换方向的单工通信,不需要独立的接收端和发送端,两者可合并为一个端口;

全双工:允许数据同时在两个方向上传输,因此全双工通信是两个单工方式的结合,需要独立的接收端和发送端。

fa3d3580-8fd9-11ed-92c9-dac502259ad0.png

4、设备间通信


原生的串口通信主要是控制器跟串口的设备或者传感器通信,不需要经过电平转换芯片来转换电平,直接就用TTL电平通信。例如GPS模块、GSM模块、串口转WIFI模块、HC04蓝牙模块等与控制器之间的通讯。

fa627372-8fd9-11ed-92c9-dac502259ad0.png

RS232转TTL,通过电平转换芯片将 标准 RS232 串口信号转换为 TTL电平的 RS232 串口信号,不需要安装驱动。

fa8d5998-8fd9-11ed-92c9-dac502259ad0.png

USB转串口(TTL)实现计算机USB接口到物理串口之间的转换。主要用于设备跟电脑通信,电平转换芯片一般有CH340、PL2303、CP2102、FT232 使用的时候电脑端需要安装电平转换芯片的驱动。

faaf12f4-8fd9-11ed-92c9-dac502259ad0.png

串口发送
串口应用发送数据->USB串口驱动获取数据->驱动将数据经过USB通道发送给USB串口设备->USB串口设备接收到数据通过串口发送

串口接收
USB串口设备接收串口数据->将串口数据经过USB打包后上传给USB主机->USB串口驱动获取到通过USB上传的串口数据->驱动将数据保存在串口缓冲区提供给串口应用读取

4、USART、UART简介

通用同步异步收发器(USART,Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备, 可以灵活地与外部设备进行全双工数据交换。

通用同步异步收发器(USART,Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备, 可以灵活地与外部设备进行全双工数据交换。

通用异步收发器(UART,Universal Asynchronous Receiver and Transmitter), 它是在USART基础上裁剪掉了同步通信功能,只有异步通信。

数据通信方式包括同步和异步通信,发送方和接收方按照同一个时钟周期工作就叫同步,发送方和接收方没有提供时钟输出、不按照统一的时钟周期、而各自按照自己的时钟周期工作就叫异步。

异步通信时接收方不必一直在意发送方,发送方需要发送信息时会首先给接收方一个信息开始的起始信号,接收方接收到起始信号后就认为后面紧跟着的就是有效信息,才会开始注意接收信息,直到收到发送方发过来的结束标志。串口通信是属于异步的,这个时候的波特率及数据包规则(帧格式)就显得很重要了。

5、串口流控

在两个串口设备间传输数据时经常有必要进行数据流控。这可能是受到中间串口通信线路、其中一个设备或者其他存储介质的限制。异步数据流控通常使用的有两种方法。

第一种方法通常称为软件流控,使用特殊字符开始(XON or DC1)或者停止(XOFF or DC3)数据流。这些字符定义参见 ASCII 码表。这些码值在传输文本信息时很有用,但不能在未经特殊编程时用于传输其他类型的信息。

第二种方法称作硬件流控,使用RTS和CTS信号线取代特殊字符。当接收方准备好接收数据时会将RTS置为逻辑0以请求对方发送数据,当未准备好时置为逻辑1,因此发送方会通过检测 CTS 电平状态判断是否可以发送数据。

使用硬件流控至少需要连接的信号线有GND、RXD、TXD、RTS、CTS。

使用软件流控只需要GND、RXD、TXD。

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6318

    浏览量

    139577
  • 串口
    +关注

    关注

    15

    文章

    1607

    浏览量

    81952
  • 异步通信
    +关注

    关注

    1

    文章

    59

    浏览量

    10511
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    串口通信基石:Air8000下Modbus RTU串口初始化详解!

    串口初始化是Modbus RTU通信稳定可靠的关键起点。本篇深入剖析Air8000开发板串口参数配置、初始化代码实现及调试要点,结合master_rtu示例,分享实际操作中的经验与避坑指南,让您
    的头像 发表于 10-28 16:33 1448次阅读
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>基石:Air8000下Modbus RTU<b class='flag-5'>串口</b>初始化详解!

    基于FPGA开发板DE23-Lite的串口通信设计

    DE23-Lite开发板提供了个UART通信接口(物理接口是下图的Type C接口),用户能够通过主机与Agilex 3 FPGA进行串口通信
    的头像 发表于 10-15 10:57 3986次阅读
    基于FPGA开发板DE23-Lite的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>设计

    串口通信有哪些方式

    串口通信(Serial Communication)是种通过串行方式逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、仪器仪表等领域。其通信
    的头像 发表于 09-28 18:02 800次阅读

    又短又好用:单片机就串口,如何和多个从机串口通信串口如何实现主多从?

      原文授权自公众号:24c01硬件电子 有时候电路上需要实现主多从时,通常用到的通讯协议通常是SPI,IIC或者说是RS485这种总线形式的。尤其是IIC,更是板内通信最为简单便捷的,仅需两根线
    的头像 发表于 09-17 11:49 902次阅读
    又短又好用:单片机就<b class='flag-5'>一</b>个<b class='flag-5'>串口</b>,如何和多个从机<b class='flag-5'>串口</b><b class='flag-5'>通信</b>?<b class='flag-5'>串口</b>如何实现<b class='flag-5'>一</b>主多从?

    PLC串口自由协议通信概述

    串口自由协议通信种灵活的串行通信方式。在该模式下,开发者无需遵循特定标准协议,可根据实际需求自由定义数据格式与交互规则。
    的头像 发表于 08-07 09:15 1859次阅读
    PLC<b class='flag-5'>串口</b>自由协议<b class='flag-5'>通信</b>概述

    ESP32用作经典蓝牙串口透传模块与手机进行串口通信

    本文介绍了如何把ESP32用作个蓝牙串口透传设备使用,其功能和常用的HC-05/06串口蓝牙设备样。并与手机蓝牙串口APP进行双向蓝牙
    的头像 发表于 06-20 17:45 2109次阅读
    ESP32用作经典蓝牙<b class='flag-5'>串口</b>透传模块与手机进行<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    常用通信接口串口、RS232、RS485、USB、TYPE-C原理与区别)

    、什么是串口通信?常见的串口通信般是指异步串行通信
    的头像 发表于 05-29 15:44 3125次阅读
    常用<b class='flag-5'>通信</b>接口<b class='flag-5'>一</b>(<b class='flag-5'>串口</b>、RS232、RS485、USB、TYPE-C原理与区别)

    第七章 串口通信

    本章介绍了W55MH32的串口通信,讲述了数据通信基础概念、串口通信协议和特性与功能,以及DMA在串口
    的头像 发表于 05-26 17:00 763次阅读
    第七章 <b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    轻松解码串口通信

    说到通信,在我们的生活方方面面体现的淋漓尽致,比如手机信号,WiFi 等这些无线通信更是近些年 热点并且各种通信设备都出来了,真的是科技社会,对我们的生活太方便了对于通信,我们今天聊
    发表于 03-24 14:22 4次下载

    串口通信的优势与缺点

    串口通信以其简单实现、低成本、远距离传输、良好兼容性和强实时性著称,适用于多种场景,但也存在传输速度慢、抗干扰能力弱、距离受限、灵活性不足及资源占用多的缺点,需根据实际需求选择使用。
    的头像 发表于 03-13 15:01 1312次阅读
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>的优势与缺点

    3.5英寸高清智能串口屏 8位MCU并口通信的COG裸屏 或带驱动板232串口通信的智能屏

    3.5英寸高清智能串口屏 8位MCU并口通信的COG裸屏 或带驱动板232串口通信的智能屏
    的头像 发表于 02-18 14:49 764次阅读
    3.5英寸高清智能<b class='flag-5'>串口</b>屏 8位MCU并口<b class='flag-5'>通信</b>的COG裸屏 或带驱动板232<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的智能屏

    为什么你的串口总是丢些特殊字符?

    导读在嵌入式开发和物联网应用中,Linux系统的串口通信至关重要。本文将简单介绍Linux下串口设备的命名规则和termios结构体,并解析终端的三种工作模式,帮助开发者更好地掌握Linux
    的头像 发表于 02-06 13:26 622次阅读
    为什么你的<b class='flag-5'>串口</b>总是丢<b class='flag-5'>一</b>些特殊字符?

    解读MCU与电脑的通讯方式-串口

    你这个小板子和电脑通讯,做个上位机,最常用的接口是什么?我想大家闭眼说-串口串口是什么? 串行接口(Serial port),也称串行接口或串行端口,串行通信接口,COM接口,简称串口
    的头像 发表于 01-13 09:36 1824次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b>解读MCU与电脑的通讯方式-<b class='flag-5'>串口</b>

    常见串口通信协议 如何设置串口参数

    串口通信种常见的通信方式,广泛应用于计算机、嵌入式系统和各种电子设备之间。串口通信协议主要是
    的头像 发表于 12-27 09:51 4729次阅读

    串口通信原理解析 串口与并口的区别

    串口通信,又称为串行通信,是种数据传输方式,其中数据以位的形式按顺序(个接个)通过单
    的头像 发表于 12-27 09:50 3264次阅读