帅气的瀑布 · windows10下面奇怪的网络驱动器访问问 ...· 10 月前 · |
苦闷的骆驼 · WPF---Xaml中改变ViewModel ...· 1 年前 · |
还单身的脆皮肠 · hash长度扩展攻击 - dre0m1 - 博客园· 1 年前 · |
爱跑步的长颈鹿 · vba在数组中查找指定元素 match-掘金· 1 年前 · |
愤怒的风衣 · 生成器(Generator)——《实战 ...· 1 年前 · |
我有一个FT232RL芯片。我使用它的usb到RS232协议转换,我需要转换数据,并进一步使用它。
我使用的“数据集”(另一边的设备,如调制解调器,在我的例子中是MAX485 IC)无法配置。我只能给它一个读或写的控制信号。所以它不是很有用。
我的应用程序要求我在发送数据时能够将其设置为“写模式”,然后当我发送完数据后,我需要能够将其设置为“读取模式”来接收它生成的响应信号。
注意:控制信号是简单的高低信号,数据可以是几个字节。
我认为这样做的一种方法是能够读取RS232传输缓冲区中有多少数据。一旦变成"0",所有数据都将被传输,我可以将控制引脚设置为“读取模式”。
另一种方法是使用流控制。
为了清楚起见,我想先解释一下我对流量控制的理解,然后再说明我的问题:
(1)我通过Python通过usb将数据发送给ftdi
(2) ftdi需要在DTR线路上写一个较高的
(3)在DSR线路上接收到高信号时,它需要开始传输(这是假设我已禁用rts/cts流量控制设置)。
(4)传输完成后,需要在传输的DTR线标记端写一个低的。
问题是我无法让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-机器人的突破板上,我可以访问的引脚是: 3.3V、5V、CD、RXD、TXD、DTR、GND、DSR、RTS、CTS和RI,当然还有一个usb端口连接到我的笔记本电脑上。
EDIT2:我能用Mprog3.5或者类似的软件来闪存一个可以支持我想做的事情的EEPROM吗?如果是,怎么做?
TL;DR
根据FTDI文档
引脚CBUS2的默认配置是
TXDEN
,这是专门针对这个特性设计的,所以只需使用pin 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发送数据,然后立即降低,因此达到了我的目的。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券