在 Linux 中使用带有 FT4232H 的 libMPSSE

问题描述

我对 FT4232H 没有太多经验。 它是四端口设备。 我想将一些端口配置为 SPI,其他端口配置为 UART 和 GPIO

我已经开始尝试使用 SPI 。 在官方文档中它说如果使用 ftd2xx 和 libmPSSE 必须删除标准内核模块 ftdi_sio 和 usbserial 所以我做到了。

我的问题: 在 Linux 中,我可以将所有 4 个端口任意配置为 SPI/UART/I2C/GPIO 因为每个端口在 PC 中使用可能不同的驱动程序? 据我所知,驱动程序是根据 PID/VID 加载的。 FT4232H 有 4 个端口,这是独一无二的,那么如何做到这一点呢? 欢迎对此提出任何想法。

我还想与 libmPSSE 分享我当前(一天)的经验。 不幸的是有点消极。 我已经从 FTDI 官方网站下载了最新 libmPSSE-rev0.6 的源代码。 我很惊讶地看到 Linux 下没有编译配置。 libmPSSE 没有 Makefile。我做了一个简单的,没什么大不了的,但后来我发现它不能开箱即用。我在一个位置得到了“未定义类型字节”。 构建库后,我做了一个简单的测试应用程序,它的行为很奇怪。 我在 SPI 上发送了 8 个字节,但使用示波器我观察了 7 个 8 位时钟数据包,然后是 100us 暂停,最后是最后一个 8 位数据包。最后一个数据包中的 MOSI 也是不正确的。(我发送的是全 0,但最后得到了两位高) 幸运的是我找到了 https://www.mathworks.com/matlabcentral/answers/518039-ftdi-libmpsse-0-6-spi_readwrite-weird-behaviour-loadlibrary-calllib 。 修复这使我的转移看起来不错。 在我看来,FTDI 甚至没有对 libmPSSE 进行基本检查

我无法理解 FTDI 如此受欢迎的芯片如何拥有如此低质量的软件库。 ftd2xx 可能没问题,问题只出现在更高层的 libmPSSE 中? 有人使用 libmPSSE 吗?我应该期待更多问题吗? 欢迎任何有关 FTDI 解决方案稳定性的想法。

谢谢 迪米塔尔

解决方法

首先:

在我看来,你的“问题”的很大一部分并不是真正的问题,而是“讨论起点”,这不是“stack-...”生态系统的范围。

到驱动问题部分: 据我所知,驱动程序是为每个设备而不是每个端口加载一次。然而,ftd2xx 能够单独寻址每个端口并将它们设置为不同的模式(基本上它只是简单地将特定命令提供给 MPSSE 引擎,而 MPSSE 引擎并不真正关心给定序列的真正含义)。您唯一失去的是方便的 VCP 可访问性。

不同的 libMPSSE 模式有其局限性和怪癖。网站搜索将产生足够多的结果,作为更细化的后续问题的起点。如果您只对一种模式感兴趣,那么专用于这种模式的 IC 可能是相对“通用”的 FTx232x 系列的替代品。