USB<>串行通信无法在 linux 上运行

USB<>serial communication not working on linux

我目前正在开展一个项目,在该项目中,我必须通过 USB<>串行连接与 cts/rts 硬件流控制以 4,499,456 的波特率进行通信。 用于发送和接收数据的 MATLAB 代码已经可用并已在 Windows.

上进行了全面测试

尝试在 linux (Ubuntu 14.10/15.04) 上执行 MATLAB 代码时出现问题。用于切换板上 LED(写入)和接收信息(读取)的命令均无效。 Python 使用 pyserial 和 pylibftdi 库的 MATLAB 代码的端口允许写入,但也会挂起接收数据。

有人知道为什么它在 Windows 上有效但在 Ubuntu 上无效吗?也许是驱动程序问题?或者与 Linux 上的 cts/rts 有关的事情?

lsusb输出

Bus 002 Device 004: ID 0403:6014 Future Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

dmesg输出

[11906.209231] usb 2-3: new high-speed USB device number 5 using ehci-pci
[11906.346701] usb 2-3: New USB device found, idVendor=0403, idProduct=6014
[11906.346713] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11906.346720] usb 2-3: Product: USB <-> Serial Converter
[11906.346725] usb 2-3: Manufacturer: FTDI
[11906.346730] usb 2-3: SerialNumber: FT69T4N
[11906.351716] ftdi_sio 2-3:1.0: FTDI USB Serial Device converter detected
[11906.351800] usb 2-3: Detected FT232H
[11906.352234] usb 2-3: FTDI USB Serial Device converter now attached to ttyUSB1

编辑: 只是记录我的进度以防有人遇到同样的问题。问题似乎出在波特率上;将其更改为 115200 允许从设备读取,但会弄乱向它发送数据。

显然 FTDI 驱动程序不能很好地处理 high/non-standard 波特率。我最终通过使用 3,000,000

的波特率解决了这个问题