USB(2.0 / Type-C) to MPSSE(JTAG / SPI / IIC) / UART / FIFO: FTDI 的桥接芯片选型
首次使用 FTDI 的 USB bridging chips 是在 Amazon 工作时期, 需要通过电脑上Linux开发环境的C-Kermit软件, 用FTDI USB to UART Chip对Amazon Kindle进行开发验证调试,
包括但不限于(Hardware/OS/Framework/Application);
十多年已过去,FTDI 的芯片日益丰富:
https://ftdichip.com/document/usb-ic-data-sheets/
FT602 S.S. USB3.0 IC(FIFO to USB 3.0 UVC Bridge) Datasheet, ver.1.5, 27-07-2023
FT4232H H.S. Quad USB UART IC Data Sheet, ver.2.6, 27-05-2019
FT4232HA (Automotive grade Quad H.S. USB to Multi-purpose UART/MPSSE IC Datasheet), ver.1.1, 14-03-2022
FT4233HP / FT4232HP H.S. USB Bridge with Type-C/PD3.0 Controller, ver.1.5, 28-09-2023
https://ftdichip.com/document/usb-modules-data-sheets/
UMFT4233HPEV Evaluation Module Datasheet, Ver.1.0, Issue Date: 24-11-2021
FT4232H Mini Module: USB Hi-Speed FT4232H Evaluation, Ver.1.8 Issue Date: 2012-08-01
FT4233HP EVB, ver.1.0, Issue Date 24-11-2011
FT4232H-56Q Mini-Module, ver.1.4, Issue Date:07-04-2020
MPSSE Application Example:
http://ftdichip.cn/Support/SoftwareExamples/MPSSE.htm
MPSSE: AN_129 FTDI USB To JTAG TAP Example
MPSS: AN_114 FTDI USB to SPI Example
MPSSE: AN_113 FTDI USB to I2C Example
Programming-Guides
https://ftdichip.com/document/programming-guides/
Application Notes:
AN_124: User Guide For FTDI FT_Prog Utility
AN_167: FT1248 Dynamic Parallel/Serial Interface Basics
AN_121: Accessing The EEPROM User Area Of FTDI Devices
AN_167: FT1248 Dynamic Parallel/Serial Interface Basics
AN_135: MPSSE Basics for FT2232D, FT2232H, FT4232H
AN_108: Command Processor for MPSSE and MCU Host Bus Emulation Modes
AN_129: FTDI HiSpeed USB To JTAG Example
AN_180: FT232H MPSSE Example – USB Current Meter using the SPI Interface
AN_184: FTDI Device Input Output pin States
AN_178: User Guide For LibMPSSE-SPI
AN_177: User Guide For LibMPSSE-I2C
AN_128: User Guide For FT4232H Factory Test Utility
D2XX Programmers Guide
AN_220: FTDI Drivers Installation Guide for Linux
AN_233: Java D2XX for Android API User Manual
AN_242: FTDI_UART_Terminal_User_Manual.pdf
AN_357: Android D2XX Demo Application for FT4222H
AN_449: FT{4233,2233,233}HP FT{4232,2232,232}HP DCDC Power Delivery
AN_551: FT4232HP_FT2232HP_FT232HP Configuration Guide
AN_552: Consistent COM Port Enumeration on Linux
MPSSE(Multi-Protocol Synchronous Serial Engine):
FTDI's MPSSE provides a flexible means of interfacing synchronous serial devices to a USB port. By being “Multi-Protocol”, the MPSSE allows communication with many different types of synchronous devices, the most popular being SPI, I2C and JTAG. Data formatting and clock synchronization can be configured in a variety of ways to satisfy almost any requirement. In addition to the serial data pins, additional GPIO signals are available. This document outlines the basics in configuring the MPSSE for use and demonstrates some of the available modes of operation.
The MPSSE is always a master controller for the selected synchronous interface. As such, it generates the clock and any required interface select / chip-select signals. The MPSSE does not operate as a slave.
MPSSE Required Components
Use of the MPSSE requires certain components be in place, both software and hardware:
1) FTDI FT-series device with the MPSSE – At the time of publication, FTDI manufactures three devices with the MPSSE block:
- a. FT2232D: USB 2.0 Full-Speed Dual UART/FIFO with 1 MPSSE (6Mbps, maximum)
- b. FT2232H: USB 2.0 Hi-Speed Dual UART/FIFO with 2 MPSSEs (30Mbps each, maximum)
- c. FT4232H: USB 2.0 Hi-Speed Quad UART with two MPSSEs (30Mbps each, maximum)
2) FTDI D2XX Device Drivers
The latest D2XX device drivers are required. Multiple operating systems are supported. See http://ftdichip.com/Drivers/D2XX.htm for the latest downloads. Installation guides for various operating systems are available at the FTDI Website.
3) Documentation
- a. Datasheet for the FTDI FT-series device with the MPSSE
- b. D2XX Programmers Guide
- c. AN_108 Command Processor for MPSSE and MCU Host Bus Emulation Modes
Although there are programming examples and libraries on the FTDI web site specific to SPI, I2C and JTAG, it is often easier to access the MPSSE directly with the D2XX calls.
MPSSE Command Processor:
The FT2232D, FT232H, FT2232H and FT4232H incorporate a command processor called the MPSSE. The purpose of the MPSSE command processor is to communicate with devices which use synchronous protocols (such as JTAG or SPI) in an efficient manner. The FT2232x MCU Host Bus Emulation mode also uses the MPSSE technology to make the chip emulate a standard 8048/8051 MCU host bus.
The MPSSE Command Processor unit is controlled using a SETUP command. Various commands are used to clock data out of and into the chip, as well as controlling the other I/O lines. If disabled the MPSSE is held in reset and will not have any effect on the rest of the chip. When enabled, it will take its commands and data from the OUT data written to the OUT pipe in the chip. This is done by simply using the normal WRITE command, as if data were being written to a COM port. Any data read will be passed back in the normal IN pipe. This is done using the normal READ command, as if data were being read from a COM port.
libMPSSE
The MPSSE(Multi-Protocol Synchronous Serial Engine) is a generic hardware found in several FTDI chips that allows these chips to communicate with a synchronous serial device such an I2C device, a SPI device or a JTAG device. The MPSSE is currently available on the FT2232D, FT2232H, FT4232H and FT232H chips, which communicate with a PC (or an application processor) over the USB interface. Applications on a PC or on an embedded system communicate with the MPSSE in these chips using the D2XX USB drivers.
The MPSSE takes different commands to send out data from the chips in different formats, namely I2C, SPI and JTAG. libMPSSE is a library that provides a user-friendly API that enables users to write applications to communicate with the I2C/SPI/JTAG devices without needing to understand the MPSSE and its commands. However, if the user wishes then he/she may try to understand the working of the MPSSE and use it from their applications directly by calling D2XX functions.
libMPSSE has three different APIs, one each for I2C, SPI and JTAG. The libMPSSE (Linux and Windows versions) sample code, release notes and all necessary files can be downloaded from the FTDI website at:
http://www.ftdichip.com/Support/SoftwareExamples/MPSSE.htm
D2XX Programming Interface
FTDI provides two alternative software interfaces for its range of USB-UART and USB-FIFO ICs:
- a). VCP(Virtual COM Port) Interface which appears to the system as a legacy COM port.
- b). D2XX Interface, is provided via a proprietary DLL(FTD2XX.DLL, Linux/Mac have "pyftdi" and "ftd2xx" Python library).
The D2XX interface is a proprietary interface specifically for FTDI devices, provides special functions that are not available in standard operating system COM port APIs, such as setting the device into a different mode or writing data into the device EEPROM.
In the case of the FTDI drivers for Windows, the D2XX driver and VCP driver are distributed in the same driver package, called the CDM(Combined Driver Model) package.
For Linux, Mac OS X (10.4 and later) and Windows CE (4.2 and later) the D2XX driver and VCP driver are mutually exclusive options as only one driver type may be installed at a given time for a given device ID.
In the case of a Windows system running the CDM driver, applications may use either the D2XX or VCP interface without installing a different driver but may not use both interfaces at the same time.
As the VCP driver interface is designed to emulate a legacy COM port, FTDI does not provide documentation on how to communicate with the VCP driver from an application; the developer is referred to the large amount of material available on the Internet regarding serial communication.
FT1248 Interface:
FT1248 is a new interface which provides a synchronous half duplex interface to external logic. The FT1248 interface is a slave interface requiring an external clock to be supplied to any FTDI chip which has the FT1248 interface. The width of the FT1248 data bus may be configured as 1 bit, 2 bit, 4 bit or 8 bit wide. The external clock can be up to 30MHz. This provides a transfer rate of up to a maximum of 30Mbytes /s. This provides the flexibility and trade-off of bandwidth verses pin-count. At the time of writing this application note the interface is available only on the FT232H device. This application note discuss how to access, configure and control the FT1248 synchronous interface.
The FT4232H-56Q on the Mini Module is FTDI's 5th generation of USB devices. The FT4232H is a USB 2.0 High Speed (480Mb/s) to UART/MPSSE IC. The device features four interfaces that can be independently configured for asynchronous or synchronous serial interfaces. Two of these have an option to independently configure an MPSSE engine. This allows the FT4232H to operate as two UART/Bit-Bang ports plus two MPSSE engines used to emulate JTAG, SPI, I2C, Bit-bang or other synchronous serial modes. All components used, including the FT4232H-56Q are Pb-free (RoHS compliant).
USB 2.0 H.S.(High Speed) 480Mbps:
FT232H / FT2232H / FT4232H
FT4232HP / FT4233HP (P系列 带 USB Type-C Power Delivery)
1.FT4232H 的 4 通道 UART,分两组:
A组包括 Channel0 与 Channel1, 有MPSSE功能;
B组包括 Channel2 与 Channel3, 没MPSSE功能.
2.Channel{0-3}四通道的UART与SPI/JTAG/IIC/FIFO的切换,
是由FT4232H使用的外部EEPROM存储的Device Profile决定;
3.用FTDI提供的FT Prog配置软件可对FT4232使用的外部EEPROM进行Programming; 分四步:
a. create and save EEPROM template;
b. scan FTDI devices(including FT4232H, only load the freshest memory from EEPROM);
c.programming existing FTDI devices by apply created/saved EEPROM template;
d.Cycle ports: equivalent to an un-plug and re-plug of the selected FTDI devices.
e.NOTES: In "FT Prog": The driver that is installed and used by each channel can be set by selecting "VCP(Virtual COM Port)" or "D2XX Direct option(required for MPSSE)". The slow slew function can be selected for slower output driver. The "Schmitt Input" function can be enabled if user needs to implement Schmitt trigger function to input pins. The IO pin driving capability can also be set; the current range is 4mA to 16mA.
AN_379 D3XX Programmers Guide
The D3XX interface is a proprietary interface specifically for FTDI SuperSpeed USB devices (FT60x series). D3XX implements a proprietary protocol different from D2XX in order to maximize USB 3.0 bandwidth. This document provides an explanation of the functions available to application developers via the FTD3XX library. Any software code examples given in this document are for information only. The examples are not guaranteed and are not supported by FTDI.
FT600 and FT601 are the first devices in a brand new USB SuperSpeed series from FTDI Chip. The devices provide a USB 3 SuperSpeed to FIFO Bridge, with up to 5Gbps of bandwidth. With the option of 16 bit (FT600) and 32 bit (FT601) wide parallel FIFO interfaces, FT60X enables connectivity for numerous applications including high resolution cameras, displays, multifunction printers and much more.
The FT60X series implements a proprietary Function Protocol to maximize USB 3 bandwidth. The Function Protocol is implemented using 2 interfaces – communication interface and data interface. The data interface contains 4 channels with each channel having a read and write BULK endpoint, for a total of 8 data endpoints. The communication interface includes 2 dedicated endpoints, EP OUT BULK 0x01 and EP IN INTERRUPT 0x81. The OUT BULK endpoint is for receiving session list commands from the host, targeted mainly for high data traffic between the host and the FT60x device. The EP IN INTERRUPT endpoint is for host notification about the IN pipes that have pending data which is not scheduled by the session list, targeted mainly for low traffic. Combining the use of the two endpoints above provides performance and flexibility.
FT602Q IC Datasheet(FIFO to USB 3.0 UVC Bridge)
The FT602 is a USB-to-FIFO interface to SuperSpeed USB (USB 3.1 Gen 1) USB Video Class (UVC) bridge chip with the following advanced features:
• Supports USB 3.1 GEN 1 Super Speed(5Gbps) / USB 2.0 High Speed (480Mbps)
• Supports USB Transfer Types: Control/Bulk/Interrupt
• Supports UVC version 1.1
• Supports up to 4 video input channels on the FIFO bus.
• Supports 2 parallel external FIFO bus protocols, 245 FIFO and Multi-channel FIFO mode, with a data burst rate up to 400MB/s with 32 bit parallel interface
• Built-in 16kB FIFO data buffer RAM.
• Built-in I2C master interface for video device configuration
• Supports multi voltage I/O: 1.8V, 2.5V and 3.3V.
• Internal LDO 1.0V regulator.
• Integrated power-on-reset circuit.
• User programmable USB and UVC descriptors.
• Industrial operating temperature range: -40 to 85⁰C.
• Available in compact Pb-free QFN-76 RoHS compliant package. Built-in I2C master interface for video device configuration
• Supports multi voltage I/O: 1.8V, 2.5V and 3.3V.
• Internal LDO 1.0V regulator.
• Integrated power-on-reset circuit.
• User programmable USB and UVC descriptors.
• Industrial operating temperature range: -40 to 85⁰C.
• Available in compact Pb-free QFN-76 RoHS compliant package.
USB(2.0 / Type-C) to MPSSE(JTAG / SPI / IIC) / UART / FIFO: FTDI 的桥接芯片选型的更多相关文章
- USB 3.0规范中译本第9章 设备框架
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 设备框架可以被分成三层: 最底层是总线接口层,传送和接收包. 中间层处理在总线接口和设备的各种端点之间路由数 ...
- USB 3.0规范中译本 第8章 协议层
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 协议层管理设备及其主机之间端到端的数据流.这一层建立在链路层提供对某些类型的包的保证传输(guarantee ...
- USB 3.0规范中译本 第4章 超高速数据流模型
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章展示数据和信息如何在超高速上通过的一种高层次的描述.请阅读协议层一章关于低层次协议的细节.本章提供设备架 ...
- USB 3.0规范中译本 第3章 USB 3.0体系结构概览
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章呈现USB 3.0体系结构和关键概念的概览.USB 3.0与前面版本的USB类似,因为它是线缆总线,支持 ...
- USB 3.0规范中译本 第2章 术语及缩略语
本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章列出并定义本规范通篇将使用的术语及缩略语. 术语/略缩语 定义 ACK(确认包) 表示积极肯定的握手包. ...
- org.springframework.expression.spel.SpelEvaluationException: EL1005E:(pos 0): Type cannot be found
今天在完成Spring项目的时候遇到了一个类似于下面的异常: 10.03.2010 13:53:53 org.apache.catalina.core.StandardWrapperValve inv ...
- Universal Serial Bus USB 3.0
Computer Systems A Programmer's Perspective Second Edition A Universal Serial Bus (USB) controller i ...
- 电脑是如何识别USB 3.0 U盘的
USB 3.0电缆如图1所示. 图1 USB 3.0的接口比USB 2.0接口多了5根线,这5根线分别是Shield.SSRX+/-和SSTX+/-,即是屏蔽地.超速发送差分对和接受差分对. 因此一个 ...
- USB 3.0连接器引脚、接口定义及封装尺寸
上篇整理了USB 2.0A型.B型和Mini USB接口定义及封装,本文补充USB 3.0接口定义,USB 3.0采用的双总线结构,在速率上已经达到4.8Gbps,所以称为Super speed,在U ...
- USB 2.0 A型、B型、Mini和Micro接口定义及封装
USB全称Universal Serial Bus(通用串行总线),目前USB 2.0接口分为四种类型A型.B型.Mini型还有后来补充的Micro型接口,每种接口都分插头和插座两个部分,Micro还 ...
随机推荐
- 访问项目resource/static目录下的模板文件(解决Docker部署后访问不到的问题)
使用ClassPathResource方式获取static下的文件(别的方式本地可以访问到,Docker部署后不行) final String templatePath = "/static ...
- 最火向量数据库Milvus安装使用一条龙!
向量数据库是大模型应用开发必备组件之一,因为它在知识库.语义搜索.检索增强生成(RAG)等人工智能应用中发挥着举足轻重的作用.但向量数据有很多,为什么要使用 Milvus 呢? 常见向量数据 常见的向 ...
- LM Studio本地使用
一.概述 LM Studio 是一款桌面应用程序,用于在您的计算机本地开发和实验 LLM. 官方地址:https://lmstudio.ai 官方中文地址:https://lm-studio.cn 主 ...
- c# 批量注入示例代码
using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; using System.Reflec ...
- trae开发的win10端口占用检测工具
前言 首先,强烈安利字节开发的工具:https://www.trae.com.cn/ 以下代码均由此工具生成. linux 中可以使用 lsof -i:端口号 查看端口占用进程,并使用kill指令杀死 ...
- C#数据结构及算法之链表
C# 链表 链表是节点的列表,节点包含两部分:值和链接,其中值部分用于储存数据,链接部分用于指向下一个元素的地址,是引用 类型. 单链表 public class LinkedList { priva ...
- arcgis创建sqlserver企业级空间数据库过程中出现的问题及解决方案
在arcgis中创建sqlserver版本的企业空间数据库过程中,出现了多种问题,现把问题的现象.原因和解决方案记录下来,以防遗忘(年纪大了). 1 用sa账号创建空间数据库提示创建失败15456 安 ...
- mp4文件下载,而不是在线播放
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux grep 匹配多个关键字
Linux grep 命令非常常用,经常用于匹配文本字符.基本语法如下: grep 'keyword'fileName.txt 如上所示,Linux grep 命令用于查找文件里符合指定条件的 ...
- Linux c 运行时获取动态库所在路径
记录一下如何在Linux环境下运行时获取动态库路径. 只讨论Linux amd64和arm64环境,因为使用的办法都是平台相关的不具备可移植性. 准备 一般来说动态库并不需要关心自己所在的文件系统上的 ...