0

第一篇文章,所以请随意撕毁我。

尝试将 FT_Open() 用于 FTDI 设备。此函数用于 FTDI 驱动程序的示例“读取”程序,目前在该程序中失败。我在树莓派 4 上运行它,但也在尝试在 Ubuntu 上出现同样的错误。

在这两个设备上,在 lsusb 的结果中都可以找到 FTDI,显示我需要连接的序列号。我尝试使用通过端口号打开的 FT_Open(),但这不起作用,返回 FT_DEVICE_NOT_FOUND 的 ftStatus 代码。

在运行示例“读取”程序时,我尝试使用 sudo 来更正此问题,但这不起作用,但作为对先前问题的修复被提及。

这是正在打印的代码和错误消息。这与我的笔记本电脑和树莓派上的代码相同,它们都会导致相同的问题。

    if(ftStatus != FT_OK) {
        /* 
            This can fail if the ftdi_sio driver is loaded
            use lsmod to check this and rmmod ftdi_sio to remove
            also rmmod usbserial
         */
        printf("FT_Open(%d): %d failed\n", iport, ftStatus);
        return 1;
    }

我希望这甚至不会打印,但是目前我得到了

FT_Open(6): 2 failed.

关于做什么的任何想法?此 FTDI 设备的 productId 不同,因为它实际上是 PLMS Developments 销售的 Nistune 咨询电缆。我正在尝试通过 Linux 连接到它,目前仅支持 Windows。

编辑:好的,所以在将我正在使用的 FT232R 芯片上的 EEPROM 重新编程为默认设置后,我确实最终让它工作了。

但是我正在尝试这样做而不需要这样做。我想为芯片使用默认的 vendorID 和不同的 productID。以前,每次我拔掉设备时,它都会重新加载 ftdi_sio 和 usbserial 模块。这将导致它永远无法正确连接。正如我在其他问题中看到的那样,这可以解决。

现在我需要找到一种在 Linux 驱动程序软件中接受自定义产品 ID 的方法。我尝试更改所有似乎相关的信息,但它再次无法识别该设备。

4

1 回答 1

0

首先,您应该使用以下命令设置自定义 VID-PID 值。

ftStatus = FT_SetVIDPID(custom_VID, custom_PID);
于 2019-11-30T08:23:58.923 回答