草庐IT

1、串口(UART/COM/TTL/RS232/RS485)

追逐者-桥 2023-04-22 原文

目录

串口简介

串行通讯制式

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)配置)_追逐者-桥的博客-CSDN博客【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)校验:是通过某种数学运算实现有效信息与校验位之间的循环检验,常用于对磁盘的信息传输、存储区的完整性校验。纠错能力强,广泛用于同步通讯中。

参考资料

串口通信协议简介—学习笔记_越吃越胖的黄的博客-CSDN博客_串口协议

嵌入式中的通讯协议——UART、I2C、SPI、DMA_Healer19的博客-CSDN博客_dma协议

【4.0】通信协议,I2C,SPI,CAN,USB,DMA_夜色稠的博客-CSDN博客

【通信协议】UART、RS232、RS485、I2C、SPI、CAN_XXX_UUU_XXX的博客-CSDN博客_uart通信距离

串口通信协议简介_C晨海的博客-CSDN博客_串口通讯协议

UART_百度百科

串口通信协议_百度百科

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

有关1、串口(UART/COM/TTL/RS232/RS485)的更多相关文章

  1. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  2. ruby - 警告 : PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, 请参阅 : https://github. com/wayneeseguin/rvm/issues/3212 - 2

    我每次打开终端时都会收到这个错误:警告:PATH设置为RVMruby​​但未设置GEM_HOME和/或GEM_PATH,请参阅:https://github.com/wayneeseguin/rvm/issues/3212这是在我最近安装zsh(oh-my-zsh)后开始发生的我不知道如何设置GEM_HOME和/或GEM_PATH的路径。 最佳答案 我也面临同样的问题,更改.zshrc中的以下行,exportPATH="/usr/local/heroku/bin:.........."到exportPATH="$PATH:/usr/

  3. ruby-on-rails - 在 Rails/Capybara/Poltergeist 规范中使用 url_for 将驱动程序发送到 example.com 而不是应用程序 - 2

    如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行

  4. 1个串口用1根线实现多机半双工通信+开机控制电路 - 2

    功能需求:主机使用一个串口,与两个从机进行双向通信,主机向从机发送数据,从机能够返回数据,由于结构限制,主机与从机之间只有3根线(电源、地、数据线),并且从机上没有设物理的电源开关,需要通过与主机连接的数据线来控制开机,总结如下:1、数据线只有1根2、能够双向通信3、主机能够控制从机开机4、主机可以单独向1个从机发数据,也可以同时向两个从机发送数据根据需求,设计出如下电路:工作原理分析:VCC_24V_IN、GND、LINE_L(LINE_R)三根线接线连接到从机,电源开启电路是从机内部的电源控制。开机的逻辑:*主机先上电,LINE_L因为主机的R1上拉而有高电平,使Q6导通,Q5的G极电压被

  5. ruby - Ruby 中的默认哈希值 (Rubykoans.com -> about_hashes.rb) - 2

    我正在浏览RubyKoans中的about_hashes.rb.1个练习让我感到困惑:deftest_default_valuehash1=Hash.newhash1[:one]=1assert_equal1,hash1[:one]#okassert_equalnil,hash1[:two]#okhash2=Hash.new("dos")hash2[:one]=1assert_equal1,hash2[:one]#okassert_equal"dos",hash2[:two]#hm?end我的猜测是Hash.new("dos")使“dos”成为所有不存在键的默认答案。我说的对吗?

  6. ruby - 在 Mac OS X 上安装 Homebrew 无法连接到 raw.githubusercontent.com 端口 443 - 2

    当我尝试安装Homebrew时,出现以下连接被拒绝错误。请帮我解决这个问题。$ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"curl:(7)Failedtoconnecttoraw.githubusercontent.comport443:Connectionrefused 最佳答案 适合我。除非它是github的真正问题,它可能是但我猜它不是,它可能是您的连接问题。您可以通过浏览器访问相同的URL吗?http

  7. [蓝桥杯单片机]学习笔记——串口通信的基本原理与应用 - 2

    目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式  2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器​编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置  3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一

  8. ruby-on-rails - Rails SSL 问题 : (https://example. com) 与 request.base_url (http ://example. com) 不匹配 - 2

    我刚刚在我的网站上安装了SSL证书。不幸的是,它破坏了登录功能。在网站上提交登录表单后,它只是重定向到主页。检查Rails日志显示此错误:(https://example.com)didn'tmatchrequest.base_url(http://example.com)这是我的虚拟主机文件。我想我需要以某种方式强制使用SSL?ServerNameexample.comServerAliaswww.example.comRedirectpermanent/https://example.com/ServerAdminhello@example.comServerNameexample

  9. ruby-on-rails - API 的时尚 rocco 文档 - 类似 stripe.com- ? - 2

    在记录一个相当大的RESTapi并特别寻找好的演示文稿时,我遇到了stripe.comapi文档:https://stripe.com/docs/api当我在项目上取得进展时,我最初开始在一个简单的文本文件中记录API使用情况。但现在我将有其他工程师与我一起工作以及用户与API交互,我想制作类似条纹的东西.com文档。我遇到了rocco,它非常好!但我不知道stripepeeps如何格式化右手栏以呈现粗体标题、json有效负载和....有什么例子吗?我很清楚API文档是一个相当常见的问题,但我想问的是如何使用rocco来渲染更多内容,而不仅仅是右侧栏中的代码。谢谢!

  10. QT 设计一个串口调试工具,用一个工程就能轻松解决,外加虚拟串口工具模拟调试,在日常工作中可类比模块间通信,非常详细建议收藏 - 2

    QT串口调试工具第一节虚拟串口工具安装第二节QT创建一个基于QWidget的项目第三节UI界面设计第三节项目头文件widget.h第四节项目实现文件widget.cpp第五节main函数第六节编译结果重点第七节使用QT打包程序,不安装QT的电脑可使用第一节虚拟串口工具安装-----------------------------------------下载所需工具---------------------------------------------------------------------链接:https://pan.baidu.com/s/1QkT36S4EnH2HEAhZ1TZ8

随机推荐