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.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理