1、串口(UART/COM/TTL/RS232/RS485)-程序员宅基地

技术标签: fpga开发  通讯接口  # 通讯方式、协议与接口标准  嵌入式硬件  单片机  

目录

串口简介

串行通讯制式

UART

2.1 简介

2.2 电平标准

TTL

RS232

RS485

2.3、电平转换(重点讲解RS232-TTL)

USB转TTL

USB转RS232

USB转RS485 

RS232、RS485互转

RS-232、TTL互转 

2.4 串口通讯协议(RS232/TTL)

参考资料


串口简介

请参考百度百科:串行接口_百度百科

首先,串口、UART口、COM口、USB口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。

串口:串口是一个泛称,UART、COM、TTL、RS232、RS485都遵循类似的通信时序协议,因此都被通称为串口。

COM口:特指台式计算机或一些电子设备上的D-SUB外形(一种连接器结构,VGA接口的连接器也是D-SUB)的串行通信口,应用了串口通信时序和RS232的逻辑电平。也就是大家在自己电脑上的设备管理器上的COM3等接口

UART接口:通用异步收发器(Universal Asynchronous Receiver/Transmitter),UART是串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、PC里都会有UART模块。也就是大家在嵌入式开发中常常听到的串口(UART)

同步串行接口(英文:Synchronous Serial Interface,SSI)是一种常用的工业用通信接口

USB口:通用串行总线,和串口完全是两个概念。虽然也是串行方式通信,但由于USB的通信时序和信号电平都和串口完全不同,因此和串口没有任何关系。USB是高速的通信接口,用于PC连接各种外设,U盘、键鼠、移动硬盘、当然也包括“USB转串口”的模块。(USB转串口模块,就是USB接口的UART模块、USB转TTL模块等)

由于在嵌入式系统中串口通常指UART接口,所以下面介绍时将两个概念进行了等同。

串行通讯制式

  • 单工,数据只能沿一个方向传输,不能实现反向传输。
  • 半双工,数据可以沿两个方向传输,但需要分时进行。
  • 全双工,数据可以同时进行。

UART

2.1 简介

请参考百度百科:UART_百度百科

异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。

具体实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备。一般是RS-232C规格的,与类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配,作为连接外部设备的接口。

通用异步串行口,速率不快,可全双工,结构上一般由波特率产生器、UART 发送器、UART 接收器组成,硬件上两线,一收一发;

2.2 电平标准

  • TTL

双极性晶体管,流控型器件

输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。

TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。CMOS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。  

CMOS电路可以直接驱动TTL电路,但是TTL不能直接驱动CMOS电路。因此市面上很多“USB转TTL”模块,实际上也可以称为“USB转TTL电平的串口”模块。TTL与单片机、SOC的IO电平兼容。不过实际也不一定是TTL电平,因为现在大部分数字逻辑都是CMOS工艺做的,只是沿用了TTL的说法

我们进行串口通信的时候从单片机直接出来的基本是都是TTL 电平。

TTL信号抗干扰能力差,数据在传输过程中容易出错。

硬件连接:

在这里插入图片描述

 TTL电平:全双工(逻辑1: 2.4V–5V 逻辑0: 0V–0.5V)

  • RS232

        是电子工业协会(Electronic Industries Association,EIA) 制定的异步传输标准接口,同时对应着电平标准和通信协议(时序),其电平标准:+3V~+15V对应0,-3V~-15V对应1

在这里插入图片描述

RS-232电平:全双工(逻辑1:-15V–5V 逻辑0:+3V–+15V),与TTL使用的协议是相同的。

在这里插入图片描述

        在最初的应用中,RS-232 串口标准常用于计算机、路由与调制调解器(MODEN,俗称 “猫”)之间的通讯,在这种通讯系统中,设备被分为数据终端设备 DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。

在旧式的台式计算机中一般会有 RS-232 标准的 COM (也称 DB9 接口),见图 26-3

 其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号使用 RS-232 标准调制。在各种应用场合下, DB9 接口中的公头及母头的各个引脚的标准信号线接法见26-4

图 26-5 是计算机端的 DB9 公头标准接法,由于两个通讯设备之间的收发信号(RXD 与 TXD)应交叉相连,所以调制调解器端的 DB9 母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用“直通型”的串口线连接起来即可,见图 26-6

        串口线中的 RTSCTSDSRDTR DCD 信号,使用逻辑 1 表示信号有效,逻辑0表示信号无效。例如,当计算机端控制 DTR 信号线表示为逻辑 1 时,它是为了告知远端的调制调解器,本机已准备好接收数据, 0 则表示还没准备就绪。

         在目前的其它工业控制使用的串口通讯中,一般只使用 RXDTXD 以及 GND 三条信号线,直接传输数据信号。而 RTSCTSDSRDTR DCD 信号都被裁剪掉了,如果您在前面被这些信号弄得晕头转向,那就直接忽略它们吧。

  • RS485


非常推荐大家看一下这篇文章:RS485串口通讯深入理解及与RS232的区别:

整理完整了,RS485串口通讯最详细讲解 (qq.com)https://mp.weixin.qq.com/s/WJCWpWjG0nuM_uJwIuQAmA*******************************************************************************************

-200mv、+200ms是限电压、终接电阻120Ω(与双绞线的电阻特性有关,与长度无关)、偏置电阻A线上拉,B线下拉(上下拉电阻大约为1KΩ)。接地隔离


RS485是一种串口接口标准,为了长距离传输采用差分方式传输,传输的是差分信号,抗干扰能力比RS232强很多。485采用两线制,两根数据线是缠绕在一起的

RS-485:半双工、(逻辑0:+2V–+6V 逻辑1: -6V—2V)这里的电平指AB两线间的电压差。

在这里插入图片描述

硬件连接 

在这里插入图片描述
接线方式为总线式拓扑结构,同一总线上可以同时存在多个节点。采用差分信号(使用两根线上的电压差比较)进行数据传输,两根线间的电压差为+2v到+6v表示逻辑“1”,两根线间的电压差为-2v到-6v表示逻辑“0”。需要电平转换芯片做电平转换,把TTL信号转换为差分信号。软件编程基于串口,但是不能同时发送和接收。

  • 通信速度快,数据最高传输速率为10Mbps
  • 抗干扰能力强
  • 通信距离远
  • 可实现多节点组网
  • 接口电平电压低,不易损坏接口电路芯片

2.3、电平转换(重点讲解RS232-TTL

由于电脑自带转换器,已经将TTL电平转换成USB接口输出,所以当需要获取电脑或者进行与电脑串口通信时,需要将USB接口转换成其他相应的接口形式:

  • USB转TTL

在这里插入图片描述

稳定主控芯片主要有:CP2102芯片、PL2303芯片

可以作为32的程序下载器——ISP下载方式

  • USB转RS232

  • USB转RS485 

 由上图可以看出起作用的也只有A和B两条线。

  • RS232、RS485互转

  • RS-232、TTL互转 

        虽然电脑大多数是通过USB接口转化成其他电平方式,但是有自带的RS232接口的。而且在单片机与其他单片机连接是也需要RS232与TTL电平的转化。

        早期MC1488,75188等芯片可实现TTL转232;MC1489,75189等芯片可实现232转TTL。

现在较多使用MAX232/MAX202/HIN232等芯片,可实现TTL(0~5V)和RS232(3V~15V或-3V~-15V之间)

  • 分立元件实现RS232电平与TTL电平转换

首先TTL电平TXD发送数据时,发送低电平0,Q3导通,PCRXD由空闲时的1(低电平:-3V~-15V)变为0(高电平:3V~15V);发送高电平1,Q3截止,由于PCRXD内部高阻,而PCTXD平时是-3V~-15V,通过D1和R7将PCRXD拉低至-3V~-15V,此时计算机接收到电平1。

PC(232)发送单片机(TTL)接收,PCTXD为1(低电平:-3V~-15V),Q4截至,单片机端的RXD被R9拉到5V高电平1;当PCTXD为0(高电平:3V~15V),Q4导通,RXD被Q4拉低到低电平。

  • MAX232实现RS232电平与TTL电平转换

C1/C2/C3/C4及V+/V-是电源变换电路部分,实际应用中器件对电源噪声很敏感,因此VCC必须加 去耦电容C5(0.1uf非极性瓷片电容),C1/C2/C3/C4为1.0uf/16V的点解电容。电容尽量靠近MAX232芯片,以提高干扰能力。

​​​​​​​5、【STM32】串口(USART)通讯 (一文搞懂寄存器操作、端口复用和中断优先级(NVIC)配置)_追逐者-桥的博客-程序员宅基地【STM32】串口(USART)通讯 (一文搞懂寄存器操作、端口复用和中断优先级(NVIC)配置)建议收藏加关注,单片机的深度解读尽在此。https://blog.csdn.net/ARM_qiao/article/details/125185352

2.4 串口通讯协议(RS232/TTL)

串口通讯协议由很多种,这里只针对最传统的串口协议进行介绍(RS232),有关于其他的串口协议如Modbus(多用于485电平标准)、I2C、SPI等通信协议会在另外的博客进行shuo'miong

  • 物理层连接(RS232)

没有时钟线只有两条数据线,分别是RX(接收)TX(发送),位宽为1Bit,一位一位的接收。

  • 协议层(通讯协议)

在这里插入图片描述

  • 串口数据的发送与接收是基于帧结构的,即一帧一帧的发送与接收数据。每一帧除了中间包含 8bit 有效数据外,还在每一帧的开头都必须有一个起始位,且固定为 0;在每一帧的结束时也必须有一个停止位,且固定为 1,即最基本的帧结构(不包括校验等)有10bit。在不发送或者不接收数据的情况下,rx 和 tx 处于空闲状态,此时 rx 和 tx 线都保持高电平,如果有数据帧传输时,首先会有一个起始位,然后是 8bit 的数据位,接着有 1bit的停止位,然后 rx tx 继续进入空闲状态,然后等待下一次的数据传输。不包括校验位时为一个最基本的 RS232 帧结构。
  • 波特率:在信息传输通道中,携带数据信息的信号单元叫码元(因为串口是 1bit 进行传输的,所以其码元就是代表一个二进制数),每秒钟通过信号传输的码元数称为码元的传输速率,简称波特率,常用符号“Baud”表示,其单位为“波特每秒(Bps)”。串口常见的波特率有 48009600115200 等,我们选用 9600 的波特率进行串口章节的讲解。
  • 特率:每秒钟通信信道传输的信息量称为位传输速率,简称比特率,其单位为 “每秒比特数(bps)”。比特率可由波特率计算得出,公式为:比特率=波特率 * 单个调制状态对应的二进制位数。如果使用的是 9600 的波特率,其串口的比特率为:9600Bps * 1bit= 9600bps。
  • 由计算得串口发送或者接收 1bit 数据的时间为一个波特,即 1/9600 秒,如果用50MHz(周期为 20ns)的系统时钟来计数,需要计数的个数为 cnt = (1s * 10^9)ns / 9600bit)ns / 20ns ≈ 5208 个系统时钟周期,即每个 bit 数据之间的间隔要在 50MHz 的时钟频率下计数 5208 次。
  • 上位机通过串口发 8bit 数据时,会自动在发 8 位有效数据前发一个波特时间的起始位,也会自动在发完 8 位有效数据后发一个停止位。同理,串口助手接收上位机发送的数据前,必须检测到一个波特时间的起始位才能开始接收数据,接收完 8bit 的数据后,再接收一个波特时间的停止位。
  • 数据校验位

循环冗余(RCR)校验:是通过某种数学运算实现有效信息与校验位之间的循环检验,常用于对磁盘的信息传输、存储区的完整性校验。纠错能力强,广泛用于同步通讯中。

参考资料

串口通信协议简介—学习笔记_越吃越胖的黄的博客-程序员宅基地_串口协议

嵌入式中的通讯协议——UART、I2C、SPI、DMA_Healer19的博客-程序员宅基地_dma协议

【4.0】通信协议,I2C,SPI,CAN,USB,DMA_夜色稠的博客-程序员宅基地

【通信协议】UART、RS232、RS485、I2C、SPI、CAN_XXX_UUU_XXX的博客-程序员宅基地_uart通信距离

串口通信协议简介_C晨海的博客-程序员宅基地_串口通讯协议

UART_百度百科

串口通信协议_百度百科

串口、COM口、UART口,TTL、RS-232、RS-485这么多接口,怎么区分-简易百科

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ARM_qiao/article/details/125103127

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex

推荐文章

热门文章

相关标签