串口运行不稳定

串口运行不稳定

我有一个基于 FTDI FT232RL 的 USB 转串行适配器连接到电机。在使用专有库(“testapp”)的 Ubuntu 20.04 上,操作不稳定。该设置在 Windows XP 下运行良好。

dmesg | tail
[15165.501972] usb 1-10: new full-speed USB device number 18 using xhci_hcd
[15165.672245] usb 1-10: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[15165.672250] usb 1-10: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[15165.672253] usb 1-10: Product: XIDC-USB
[15165.672256] usb 1-10: Manufacturer: XIMC
[15165.672259] usb 1-10: SerialNumber: DC000285
[15165.676679] ftdi_sio 1-10:1.0: FTDI USB Serial Device converter detected
[15165.676740] usb 1-10: Detected FT232RL
[15165.677483] usb 1-10: FTDI USB Serial Device converter now attached to ttyUSB0

lsusb
Bus 001 Device 018: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

因此,设备已连接,/dev/ttyUSB0已创建,并且sudo ./testapp在 10 次运行中有 9 次显示“打开设备错误”,在 10 次运行中有 1 次打开设备并打印垃圾电机状态,在 50 次运行中有 1 次运行正常。所以它确实可以工作,但是很少。我想知道是什么原因造成的?我尝试ssty -F /dev/ttyUSB0 19200降低速率,但没有任何变化。有类似的问题,但我(目前)可以使用 sudo 命令。如何找出错误?谢谢。

编辑#1: 找到关于硬件流控问题,检查了答案,但是

sudo stty -F /dev/ttyUSB0 --all
speed 19200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 0; time = 10;
-parenb -parodd -cmspar cs8 hupcl cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

存在-crtscts,因此流量控制被禁用。

答案1

答案是硬件不兼容。无论出于什么原因,芯片无法在现代的机器,即使主板有原生 USB 2.0 端口。我通过使用辅助 USB 2.0 集线器(也是 XP 时代的)和更短的 USB 电缆解决了这个问题。不知道为什么现代机器无法用长电缆为设备供电,而旧机器却没有问题。

相关内容