我们可以根据 TX 输出信号计算 RS232 通信的波特率吗?

电器工程 UART rs232
2022-01-11 15:34:08

我们可以从X输出信号计算出RS232通信的波特率通信速度吗?

下图来自 RS232 通信输出信号。我用0xaa拍了这张照片,高点之间的时间段是100.us。

听说外部振荡器的频率是8Mhz。我们可以从中计算波特率吗?

显示 RS232 信号的示波器轨迹

4个回答

看起来每格大约有 2.4 位时间,即 250 µs。这使得每个位时间为 104 µs。反相产生 9.6 kBaud。这是标准波特率之一,所以这听起来很合理。

您的示波器显示时间为 \$100\:\mu\textrm{s}\$。这可能是您设置光标,也可能是在示波器上自动使用测量功能。你不说。无论哪种方式,我都同意 Olin 的评论,即这接近 9600 bps,这是 RS-232 通信的常见比特率。


但是,您自己对外部时钟速率的评论如果属实,则认为不太可能达到精确的 9600 bps。\$8\:\textrm{MHz}\$ 不会均匀地划分为 9600 bps。

其他一些想法:

  1. 如果它真的是 \$100\:\mu\textrm{s}\$ 位宽,那么它们已经超过了 9600 bps 的常见速率所允许的 \$\pm 2\%\$ 允许的精度变化。(如果您需要查看此图背后的计算和想法,请参阅此Maxim 页面。)如果我们接受的示波器精度只是近似值,那么它可能不会超过精度要求。无论如何,知道它们的存在是个好主意。
  2. 该信号显然没有使用 RS-232 电压,而是可能使用 ~\$ 3.5\:\textrm{V}\$ 信号。
  3. 该信号使用 HI 表示 MARK(在 RS-232 中,MARK 是负电压),因此这必须是微控制器的逻辑电平输出,而不是 RS-232 信号。

如果您取走所需的 START 位和最小的一位时间 STOP,这意味着数据可能至少有七个剩余位时间:

在此处输入图像描述

如果我注意的话,以上内容将被解释为 0x2A 而不管字节序。

但是,这将是八个数据位的图表:

在此处输入图像描述

在这种情况下,解释将是 0xAA 或 0x55,具体取决于流的字节序性质。所以这可能代表你的 0xAA (小端,我相信它更常见。)

如您所见,发送器和接收器必须先验地同意数据位数和它们的字节序性质。

示波器结果可以解释为更长的串行字长。我以前见过它们(最常见的是 9 个,因为一些 IC 曾经支持它,但我什至见过 10 个以前使用过。)

没有协议,就很难确定。


作为侧边栏:

我记得在 1960 年创建 RS-232 时电传打字机从 5 位变为 6 位(1960 年代早期的 DTE)的日子,因为我父亲在家中的家庭办公空间中有这样的电传打字机。六位 RS-232 通信确实存在一段时间。

ASCII 编码在 1960 年代末和 1970 年代初被广泛使用,是一种 7 位编码。RS-232 数据通信使用 7 位数据是很常见的。

后来,随着通信 IC 和微控制器的普及以及 8 位寄存器大小的大量可用,RS-232 经常被扩展为一次发送/接收 8 位。

我想今天大多数人只是希望它用于 8 位通信。但情况并非总是如此。

如果这是针对微控制器的,则无法从其振荡器中确定波特率,但 8MHz 晶体绝对能够产生 9600 波特。

你能测量并告诉我从第一个低点到最后一个高点的确切时间吗?- 第一个空间对我来说看起来有点不对劲。在我看来,您正在使用触发器,您可以将它稍微移高一点,因为如果它是边沿触发并且位于峰值上,示波器可能无法触发。

从示波器跟踪中确定波特率有时但并非总是可能的。

波特率是位周期的倒数,但信号可以在多个位周期内保持相同状态,因此您不能总是从示波器轨迹中明确地确定位周期。

假设 8 位数据且没有奇偶校验,您的波形可以表示位周期约为 100ns 的单个字节,但它也可以表示位周期约为 50ns 的两个字节。