FTDI公司的FT2232系列芯片可实现USB与异步串行口RS232/RS485、同步串行总线IIC/SPI/JTAG相互通信,市场占有率,使用普遍。

FTDI芯片有两种类型的驱动:virtual COM port driver (VCP)和D2xx。VCP就是常用的U转串COM驱动,实现USB到虚拟串口功能,应用于异步RS232/RS485与USB间通信,linux设备文件为/dev/ttyUSBx;D2XX应用于同步串行总线IIC/SPI/JTAG与USB间通信,整个驱动框架都有FTDI公司提供。

COM驱动

linux支持FTDI公司的VCP驱动需配置内核:

Device Drivers --->

       [*] USB support --->

       <M> USB Serial Converter support --->

                            <M> USB Prolific  Single Port Serial Driver

                            <M> USB FTDI Single Port Serial Driver

Prolific和FTDI是常用的USB转串口芯片厂商。通用模块usbserial.ko,prolific公司的模块pl2303.ko,ftdi公司的模块ftdi_sio.ko

[    1.771996] usbcore: registered new interface driver usbfs

[    1.777600] usbcore: registered new interface driver hub

[    1.782975] usbcore: registered new device driver usb

[    3.227325] usbcore: registered new interface driver usb-storage

[    3.331190] usbcore: registered new interface driver bcm203x

[    3.336872] usbcore: registered new interface driver bfusb

[    3.342381] usbcore: registered new interface driver btusb

[    3.347893] usbcore: registered new interface driver ath3k

[    3.496381] usbcore: registered new interface driver usbhid

[    3.501958] usbhid: USB HID core driver

[   58.132670] usb -: new full-speed USB device number  using xhci-hcd

[   58.314580] usbcore: registered new interface driver usbserial

[   58.316675] usbcore: registered new interface driver pl2303

[   58.316707] usbserial: USB Serial support registered for pl2303

[   58.317386] usb -: pl2303 converter now attached to ttyUSB0

[  289.400405] usb -: USB disconnect, device number 

[    1.774779] usbcore: registered new interface driver usbfs

[    1.780377] usbcore: registered new interface driver hub

[    1.785752] usbcore: registered new device driver usb

[    3.230535] usbcore: registered new interface driver usb-storage

[    3.334244] usbcore: registered new interface driver bcm203x

[    3.339930] usbcore: registered new interface driver bfusb

[    3.345439] usbcore: registered new interface driver btusb

[    3.350951] usbcore: registered new interface driver ath3k

[    3.495753] usbcore: registered new interface driver usbhid

[    3.501362] usbhid: USB HID core driver

[    3.643788] usb -: new high-speed USB device number  using xhci-hcd

[    7.070296] usbcore: registered new interface driver usbserial

[    7.099899] usbcore: registered new interface driver ftdi_sio

[    7.099925] usbserial: USB Serial support registered for FTDI USB Serial Device

[    7.100046] usb -: Detected FT2232H

[    7.100439] usb -: FTDI USB Serial Device converter now attached to ttyUSB0

[    7.100539] usb -: Detected FT2232H

[    7.100667] usb -: FTDI USB Serial Device converter now attached to ttyUSB1

[   86.423288] usb -: USB disconnect, device number 

插入USB设备会在/dev/ttyUSBx文件出现,可像操作普通的串口文件/dev/ttySx一样操作,采用通用termios编程。

D2XX驱动

在linux中VCP和D2XX驱动是不兼容的,当D2XX驱动应用前应卸载VCP驱动模块:

sudo rmmod ftdi_sio

sudo rmmod usbserial

实际测试中采用D2XX驱动时系统会自动卸载VCP驱动。

D2XX驱动协议栈如下图,D2XX驱动libftd2xx.tar.gz可在如下页面下载:https://www.ftdichip.com/Drivers/D2XX.htm,或者直接在系统下apt安装(可能需要libusb-dev):

apt install libftdi-dev

在D2XX驱动之上是libmpsse,即MPSSE库。Multi Protocol Synchronous Serial Engine(MPSSE)是一个通用的同步总线如I2C、SPI或JTAG通信库,用于FT2232D、FT2232H、FT4232H和FT232H芯片通过USB与PC或ARM通信。MPSSE基于D2XX设计。

D2XX应用

lora gateway就应用了D2XX驱动,将SPI接口转化为U口与主服务器(X86或ARM)通信,开源库:https://github.com/yuxi-o/RAK833-LoRaGateway-RPihttps://github.com/Lora-net/lora_gateway.git

参考:

1. https://www.ftdichip.com/Support/Documents/AppNotes.htm

2. FTDI FT2232H在嵌入式教学中的应用

3. linux内核支持U-disk和U转串

4. FTDI Drivers Installation Guide for Linux

5. User Guide For LibMPSSE-SPI

FTDI通用转USB芯片简述的更多相关文章

  1. usb芯片调试经验

    记录一下调试usb有关的芯片的一些经验. 1.有i2c的芯片.一般有i2c的地址选择. 检查地址选择是否正确,地址是多少.SCL和SDA上面是否有上拉电阻. 芯片的地址是几位的.I2c的时钟频率也是必 ...

  2. windows xp 连接USB网络打印机服务器(通用所有usb网络打印机服务器的安装)

    usb网络打印机服务器是HP1101U 打印机是 hp1108 需要准备的其他东西:1.HP1108的驱动 首先,接好线,保证usb hp1101u能正常访问,这款USB一旦接入了网络,会分配一个ip ...

  3. CYPRESS USB芯片win10驱动

    The ZIP file attached with this knowledge base article contains the CyUSB3.inf and CyUSB3.sys files ...

  4. USB2.0学习笔记连载(三):通用USB驱动程序解析

    对于USB驱动的开发,读者可以使用Windows DDK.DriverStudio等多种开发工具来实现USB的驱动,但是驱动程序的开发过程都比较复杂,而且很容易致使USB主机内存泄露而死机.那么对于笔 ...

  5. USB Keyboard Recorder

    catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descript ...

  6. USB入门

    简述 USB(Universal Serial Bus)全称通用串口总线,USB为解决即插即用需求而诞生,支持热插拔.USB协议版本有USB1.0.USB1.1.USB2.0.USB3.1等,USB2 ...

  7. USB接口介绍

        USB设备系统分为两个部分,USB Host端和USB Device端,以USB接口的U盘为例子,U盘自身是一个USB Device,PC机的USB接口以及相关的控制电路为USB Host部分 ...

  8. Linux usb子系统(一):子系统架构

    一.USB协议基础知识   前序:USB概念概述 USB1.0版本速度1.5Mbps(低速USB) USB1.1版本速度12Mbps(全速USB)  USB2.0版本速度480Mbps(高速USB). ...

  9. USB Mass Storage大容量存储的基本知识

    http://www.crifan.com/files/doc/docbook/usb_disk_driver/release/htmls/ch02_msc_basic.html 目录 2.1. US ...

随机推荐

  1. springmvc 自定义注解

    1. 自定义一个注解 @Documented //文档生成时,该注解将被包含在javadoc中,可去掉 @Target(ElementType.METHOD)//目标是方法 @Retention(Re ...

  2. android中碰撞屏幕边界反弹问题

    其实碰撞问题只是涉及到一点小算法而已,但在实际应用,尤其游戏中有可能会遇到,下面给出一个小示例,代码如下: MainActivity: package com.lovo; import android ...

  3. 正则和xpath在网页中匹配字段的效率比较

    1. 测试页面是  https://www.hao123.com/,这个是百度的导航 2. 为了避免网络请求带来的差异,我们把网页下载下来,命名为html,不粘贴其代码. 3.测试办法: 我们在页面中 ...

  4. flock防止crontab脚本周期内未执行完重复执行(转)

    如果某脚本要运行30分钟,可以在Crontab里把脚本间隔设为至少一小时来避免冲突.而比较糟的情况是可能该脚本在执行周期内没有完成,接着第二个脚本又开始运行了.如何确保只有一个脚本实例运行呢?一个好用 ...

  5. Mac 升级后idea执行git命令报错xcrun: error: invalid active developer path的解决办法

    报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun ...

  6. java学习记录--ThreadLocal使用案例

    本文借由并发环境下使用线程不安全的SimpleDateFormat优化案例,帮助大家理解ThreadLocal. 最近整理公司项目,发现不少写的比较糟糕的地方,比如下面这个: public class ...

  7. Linux磁盘IO监控[zz]

    磁盘 I/O 监控是 Unix/Linux 系统管理中一个非常重要的组成部分.它可以监控吞吐量.每秒 I/O 数.磁盘利用率.服务时间等信息,并且在发现异常时,发送告警信息给系统管理员,便于系统管理员 ...

  8. databus编译: Execution failed for task ':databus-core:databus-core-impl:compileJava'.

    在编译databus的过程中,出现了无法找到jdk的错误: 在/etc/.bashrc和/etc/profile中都配置了JAVA_HOME,依然报错,重启后还是报错,原因的是ubuntu中默认的jd ...

  9. Mac笔记本安装mysql

    在浏览器当中输入地址:dev.mysql.com/downloads/mysql/,如下图所示:   进入以下界面,直接点击下面位置 ,选择跳过登录,点过这后直接下载,如下图所示:   下载完成后, ...

  10. Another app is currently holding the yum lock; waiting for it to exit.. yum被锁定无法使用

    yum被锁定无法使用 Another app is currently holding the yum lock; waiting for it to exit.. 解决方法: rm -rf /var ...