在FT232RL上使用libftdi后恢复虚拟Com端口

时间:2016-07-15 21:04:38

标签: linux serial-port microcontroller ftdi

我尝试使用libftdi来切换ft232rl上的某些引脚,然后使用常规的虚拟Com端口(/ dev / ttyUSB0)。我有一个微控制器(LPC1114)连接到FT232RL进行编程。要使其进入ISP模式,必须将一行保持为低电平进行复位,并在编程后执行代码,必须将其复位。我试图使用ft232自动执行此操作。我已经使libftdi正常工作,并且正确地切换了引脚,但是一旦程序完成,VCP就会从/ dev中消失。即使使用libftdi示例程序,我也必须拔掉USB插头并插回USB电缆,这完全违背了目的。

TL; DR:有没有办法在bitbang模式下使用libftdi而不拔掉电缆后取回/ dev / ttyUSB0。

2 个答案:

答案 0 :(得分:0)

LibFTDI似乎在使用LibUSB。

您可以尝试使用LibUSB中的libusb_attach_kernel_driver函数来恢复/dev/ttyUSBx功能。

答案 1 :(得分:0)

是的,在使用 libftdi 后,可以使用 libusb 和 libusb_attach_kernel_driver 函数重新连接原始驱动程序。 查看原始答案:FTDI kernel driver after using libftdi


#define DEVICE_VID 0x0403
#define DEVICE_PID 0x6015

int libftdireset() {
  libusb_context * context = NULL;
  libusb_device_handle * dev_handle = NULL;
  int rc = 0;
  rc = libusb_init( &context);

  dev_handle = libusb_open_device_with_vid_pid(context, DEVICE_VID, DEVICE_PID);
  /*Check if kenel driver attached*/
  if (libusb_kernel_driver_active(dev_handle, 0)) {
    rc = libusb_detach_kernel_driver(dev_handle, 0); // detach driver
  }
  libusb_reset_device(dev_handle);
  libusb_attach_kernel_driver(dev_handle, 0);
  libusb_close(dev_handle);
  libusb_exit(context);
  return 0;
}