FT232RL 上的流量控制

Flow control on a FT232RL

我有一个 FT232RL 芯片。我将它用于 usb 到 RS232 协议转换,我需要转换数据并进一步使用它。

我正在使用的"data set"(另一端的设备,如调制解调器,在我的例子中是MAX485 IC)无法配置。我只能给它一个读或写的控制信号。所以用处不大。

我的应用程序要求我能够在发送数据时将其设置为 "write mode",然后在我完成发送后尽快将其设置为 "read mode"接收它产生的响应信号。

注意:控制信号是简单的HIGH或LOW 数据可以是几个字节

我认为一种方法是能够读取 RS232 传输缓冲区中有多少数据。一旦变为“0”,所有数据都已传输,我可以将控制引脚设置为 "read mode"

另一种方法是使用 FLOW CONTROL

为了清楚起见,我想在陈述我的问题之前解释一下我对流量控制的理解:

(1) 我通过 Python 将数据通过 usb

发送到 ftdi

(2) ftdi需要在DTR线上写一个HIGH

(3) 在 DSR 线上接收到高电平时,它需要开始传输(假设我已禁用 rts/cts 流量控制设置)

(4) 发送完成后,需要在DTR线上写一个LOW标记发送结束

问题是我无法让 DTR 线按预期打开和关闭 第 (2) 步没有发生

import serial
ser = serial.Serial("com1")      # initialised port as ser
ser.dsrdtr = True                # set dsrdtr mode
ser.write("blah blah")           # sent a command

我什至尝试了以下方法:

ser.setDTR(True)                 # write a HIGH on DTR
ser.setDTR(False)                # write a LOW on DTR

这仍然没有解决我的全部问题。

请指教

编辑:我需要说明的是,我正在使用的 FT232RL 位于 nex-robotics 的分线板上,我可以访问的引脚是: 3.3V、5V、CD、RXD、TXD、DTR、GND、DSR、RTS、CTS 和 RI,当然还有一个 USB 端口,用于将它连接到我的笔记本电脑

EDIT2:我可以使用 Mprog 3.5 或类似的软件来刷写一个 EEPROM 来支持我想做的事情吗?如果是,怎么做?

TL;DR

According to the FTDI documentation 引脚 CBUS2 的默认配置是 TXDEN,这是专门为此功能设计的,因此只需使用引脚 CBUS2 作为收发器使能即可。

背景

FTDI芯片当然可以DTR/DSR flow control.

但那是当硬件自己处理流量控制时(与远端通信,可以提供背压)。无需软件参与。

对于像 RS485 这样的多点总线,实际的流量控制是在软件中处理的,而硬件只是在软件指示时发送数据。

正如您的一位评论者所建议的,您可以编写额外的软件来打开 DTR、发送数据并关闭 DTR。但这对于满足紧迫的时间安排是有问题的,并且没有实际需要,因为 FTDI 芯片支持根据您发送数据的时间为您打开发射器。不过,您正在使用的 DTR 信号可能提供也可能不提供此支持。

FTDI的可以控制收发器的信号名称是TXDEN。根据您使用的 FTDI 芯片,这可以路由到几个不同的引脚之一。

要设置路由,您只需 运行 FTDI 的 FT_Prog。您可以扫描和解析当前设备,然后使用 GUI 进行更改。您也可以从 XML 文件保存和恢复配置。该程序将向您显示 TXDEN 的路由选项。

ASKER 编辑:- 这个答案包含以下几点:-

1) 下载 MPROG 3.5 作为 FTDI 的编程器。

2) Select 来自任何 CBUS0 - CBUS4

的任意一个可编程引脚

3) 然后在读取和解析后,将所选引脚更改为 TXDEN 并点击程序

4) 为 TXDEN

进行必要的硬件连接

TXDEN 在 FTDI 发送数据之前为高电平并立即变低,因此符合我的目的