我有一个我想写入的显示器。这可以通过串行端口实现。当我使用 USB 到 RS-232 转换器时,它就像一个魅力。我什至尝试只使用串行转换器的 RX、TX 和 GND 线,它仍然有效。现在我想在一个小盒子中使用这个显示器并与 Raspberry Pi 配对,所以我没有任何空间留给大型 USB-RS-232 转换器。我尝试过使用树莓派的内部串口。使用 设定为 9600 波特$ sudo stty -F /dev/ttyAMA0 9600
。但是当我将它连接到显示器时,它只显示垃圾,并且正常的控制命令(使用 RS-232 转换器工作)也不起作用。使用$ sudo minicom -b 9600 -o -D /dev/ttyAMA0
GPIO TX 并将其循环到 RX,它会在控制台中显示正确的字符minicom
。现在将 GPIO 串行端口循环到 USB-RS-232 转换器的 RX 和 TX 引脚,并连接接地并打开两个端口,minicom
波特率设置为 9600,仅有时在另一个终端上显示一些输出,但当它显示任何输出时,也只是垃圾。
答案1
我确信问题在于 Pi 没有 RS232 接口,而显示器有。
Pi 有一个 (LV-)UART 接口,其 TX 引脚输出 0V(逻辑)0
和 3.3V(逻辑)1
。这很容易实现,因为 Pi 上已经提供了 3.3V 电压。但这仅适用于单个 PCB 上或单个设备内的通信。
对于长距离设备之间的通信,使用 RS232 等不易产生干扰信号的系统。虽然波形的逻辑结构(比特率、定时、开始位、停止位、奇偶校验位和数据位)与 UART 相同,但逻辑电压电平为 -15V...-3V,1
+15V。 ..+3V 用于逻辑0
.这意味着,不仅存在更高(和负)电压,而且它们的含义也是相反的。
因此,如果显示器需要 RS232 电平并从 Pi 获取 3.3V 电平,它通常无法识别数据,如果可以识别,则通常只是垃圾。
当然,如果你连接同一接口的RX和TX,你就会得到你所期望的。
但是:如果 RS232 TX 输出没有电流限制,它甚至可能会损坏您的 Pi!
市面上有 UART 到 RS232 转换器板,但如果您喜欢焊接,这些板只包含一个 MAX3232(加上四个电容器)。该 IC 还利用 Pi 的 3.3V 电源电压生成较高(负)电压电平。
更常见的是 MAX232(猜猜为什么这么叫),但它适用于 5V,而不是 3.3V 操作。
最后,由于UART和RS232使用相同的逻辑结构,因此通常无法区分它们,尤其是软件(程序员)。它们通常也被称为“串行接口”,尽管还有其他接口,例如 I²C 和 SPI,它们是串行接口的一种,但从未被认为是“串行接口”。
答案2
内置 Raspberry Pi 串行端口使用 0 至 3.3 伏的电压水平,如所述这里。 USB 转串行转换器和您的显示器将使用标称 -15V 至 +15V 的 RS232 电压电平,最小值为 -3V/+3V。您需要在这两个级别之间进行转换。
由于输出和输入电压兼容,该端口将在环回时工作。