2

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

无法配置我正在使用的“数据集”(另一侧的设备,如调制解调器,在我的情况下为 MAX485 IC )。我只能给它一个读取或写入的控制信号。所以它不是很有用。

我的应用程序要求我能够在发送数据时将其设置为“写入模式”,然后在完成发送后,我需要能够将其设置为“读取模式”以接收它生成的响应信号.

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

我认为做到这一点的一种方法是能够读取 RS232 传输缓冲区中有多少数据。一旦变为“0”,所有数据都将被传输,我可以将控制引脚设置为“读取模式”

另一种方法是使用 FLOW CONTROL

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

(1) 我通过 Python 将数据通过 USB 发送到 ftdi

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

(3) 在 DSR 线上接收到 HIGH,它需要开始传输(这是假设我禁用了 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 吗?如果是,如何?

4

1 回答 1

2

TL;博士

根据 FTDI 文档,引脚 CBUS2 的默认配置是TXDEN,这是专门为此功能设计的,因此只需使用引脚 CBUS2 来启用收发器。

背景

FTDI 芯片当然可以进行DTR/DSR 流控制

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

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

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

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

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

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

1) 下载MPROG 3.5作为 FTDI 的程序员。

2) 从 CBUS0 - CBUS4 中的任意一个中选择任意一个可编程引脚

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

4) 为 TXDEN 做必要的硬件连接

TXDEN 一直很高,直到 FTDI 发送数据并立即变低,因此符合我的目的

于 2015-08-15T15:22:02.510 回答