RS-232 和 TTL UART 有什么区别?

电器工程 UART rs232
2022-01-24 01:03:02

我总是需要用电脑与 MCU 上的 TTL UART 端口通信。当我谈到这一点时,人们总是将 UART 端口称为 RS-232 端口。他们是正确的吗?如果不是,它们之间有什么区别?

另外,我可以将 RS-232 转 USB 转换器用于 TTL UART 端口吗?

3个回答

USB<->RS-232 转换器上的端口将输出类似 +/-9V 的输出,并且可以接受 +/-25V 或短路而不会损坏。

MCU 上的 UART 使用逻辑电平(通常为 0V/3.3V 或 0V/5V)。施加低于 0V 或高于 Vcc 的电压会损坏 MCU 芯片。

此外,这两种类型之间的逻辑电平也是反转的(除了极少数 MCU 上的选项)。

要在 UART 电平和 RS-232 电平之间进行双向反转和转换,通常会使用 MAX232 等芯片(用于 5V 逻辑)。MAX232 还使用电荷泵倍压器从+5V 单电源产生自己的+/-9V 电源。

TL;博士:

不,您不能使用 USB-RS-232(又名 USB 串行)电缆连接两者。有便宜的 USB-TTL 串行转换器。就3.3V操作而言,最便宜的中国有一些陷阱,一定要研究一下。Adafruit以 10 美元的价格出售此类设备。我认为您也可以在 Digikey 和其他来源找到它们。

在此处输入图像描述

由于 MCU 端的任何标准都没有定义硬件接口,因此它们通常配备带有母端子的非专用飞线,以与 0.025" 方形引脚匹配,就像您在 0.1" 间距接头上找到的那样。我为我的固件编程器购买了六台类似的设备,她一直在使用它们与各种开发板通信。

UART = 通用异步接收器/发送器。它是基本芯片(或微控制器中的虚拟功能),它将数据位串行编码为具有起始位、停止位、速度等的标准格式。但是“UART”只是“RS- 232" 是。

RS-232 将传统电压值添加到二进制值(0/1 或 hi/lo,或 RS-232 通话中的“标记”和“空格”)。TTL UART 将仅输出(和输入)TTL 电平,本质上是 0 位 = 0V 和 1 位 = 5V。许多现代小工具(Arduino 等)只是使用 TTL 电压电平进行串行通信。但是 RS-232 的“正确”定义使用了相当高和双极性的电压来定义零和一。具体来说:

  • 0 位 = “空格” = +3V ~ +15V
  • 1 位 = “标记” = -15V ~ -3V

这些电压可以追溯到电传打字机的旧机电时代,这是机械奇迹的奇迹。并且需要那些相当高的电压来控制机电钻头。

但在现代,旧的 RS-232 协议仍然是一个有用的标准,但那些旧的高双极电压已成为过去。似乎很可能新一代正在成长,他们永远不会记住有关那些旧电压水平的任何事情,并且会认为 RS-232 是旧的遗留 5V 协议。特别是当电源电压都向 3.3V 逻辑电平迁移时。

参考:https ://en.wikipedia.org/wiki/RS-232#Voltage_levels

我总是需要用电脑与 MCU 上的 TTL UART 端口通信。当我谈到这一点时,人们总是将 UART 端口称为 RS-232 端口。他们是正确的吗?如果不是,它们之间有什么区别?

在字里行间阅读,您可能正在谈论您有一块带有 MCU 的板的情况,可以通过您计算机上的 USB 端口访问(下载代码、调试等)。现在以这种方式操作很常见。

如果是这样,您的操作系统很可能正在为您的设备设置“虚拟 RS-232”端口。这实际上根本不是 RS-232 端口。相反,它是一些在您的操作系统下作为驱动程序运行的软件,它模拟旧式“串行端口”驱动程序的细节。该软件通过 USB 到串行转换器芯片(也有许多制造商)与单独的 MCU(与您的 MCU 一起在板上)通信。单独的 MCU 是实际连接的到您的 MCU 的 UART 端口引脚。很可能,它也连接到您的 MCU 的 JTAG 引脚,以便可以进行调试。

所以。是的。人们将其称为 RS-232 端口,当他们从操作系统 + 驱动程序软件如何使其出现在该操作系统上运行的应用程序的角度考虑这一点时。然后,您可以使用任何知道如何使用操作系统为此目的提供的标准函数调用来打开 RS-232 端口的标准应用程序,它会正常工作。因此,从应用程序的角度来看,它是一个 RS-232 端口。

但实际上,并非如此。


另外,UART 是“通用异步接收器/发送器”,传统上指的是 IC 芯片或 MCU 中的功能块。无论哪种方式,它通常都是硬件设计的,以便您编写的软件可以轻松处理所使用的异步串行协议(起始位、数据位和一个或多个停止位。)可以对协议进行位爆炸,但它是那时,真正的痛苦和高速变得或多或少无法获得。

您还将在某些 MCU 上看到 USART——通用同步/异步接收器/发送器。这只是意味着它们可以做的不仅仅是 UART,还包括 UART 功能。

RS-232 是一组关于电压、负载等的规范。它还指定了一系列信令细节,涵盖了相当多的不同可用信号线。但最好将 RS-232 视为一种电子规范,它定义了标记空间的电压范围、噪声容限、允许的接收器负载细节,以及在模拟信号范围和离散数字信号范围之间转换所涉及的各种其他细节,而不是关于一些特定 UART 的串行协议。

我只是将您推荐给 Wiki 页面以获取详细信息(我认为您应该在询问之前阅读过这些页面。)它们是:RS-232UART我并没有真正想要复制那份作品。