AN_223 How to use the FT12 Series Device

Application Note
AN_223
How To Use The FT12 Series
Devices
Version 1.1
Issue Date: 2016-02-02
FTDI’s FT12 series of devices are full speed USB device IC’s providing
designers the opportunity to add USB interfa ces to their designs. This
document explains the benefits of selecting the FT12 series solution and how
to implement it.
Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the
user agrees to defend, indemnify and hold FTDI harmless from any and all damages, claims, suits
or expense resulting from such use.
Future Technology Devices International Limited (FTDI)
Unit 1, 2 Seaward Place, Glasgow G41 1HH, United Kingdom
Tel.: +44 (0) 141 429 2777 Fax: + 44 (0) 141 429 2758
Web Site: http://ftdichip.com
Copyright © 2016 Future Technology Devices International Limited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
Table of Contents
1 Introduction ............................................................ 2
2 Selecting the Correct Device .................................... 3
2.1 FT120............................................................................... 3
2.2 FT121............................................................................... 3
2.3 FT122............................................................................... 3
3 Example Circuit ....................................................... 4
4 Coding the FT12 ...................................................... 5
4.1 Key Decisions ................................................................... 5
4.1.1
Device Class ................................................................................... 5
4.1.2
Number of Endpoints........................................................................ 5
4.1.3
USB Transfer Mode .......................................................................... 6
4.1.4
Descriptors ..................................................................................... 6
4.2 Setup Code ....................................................................... 6
4.3 Application Data Transfer ............................................... 10
4.3.1
Read ............................................................................................ 10
4.3.2
Write............................................................................................ 11
5 Debugging FT12 Code ............................................ 13
6 Contact Information .............................................. 15
Appendix A – References ........................................... 16
Document References ............................................................ 16
Acronyms and Abbreviations .................................................. 16
Appendix B – List of Tables & Figures ......................... 17
List of Figures ........................................................................ 17
Appendix C – Revision History .................................... 18
P roduc t Page
D oc ument Feedback
1
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
1 Introduction
FTDI is well known for developing silicon and drivers that enable engineers to convert a peripheral
device serial port to USB. This silicon is simple to install and the end user does not require any
driver development to complete the design. The FT12 series will still provide a bridge between USB
and the main embedded processor, but instead of connecting to the UART it will connect to the
main processor bus (FT120, FT122) or an SPI master (FT121). The devices are also more
configurable, allowing for different USB Device Classes to be designed. As such this requires the
developer to create some supporting firmware for the embedded processor to support the FT12
devices. This application note will offer some guidance in the design steps required to select and
implement an FT12 device in a design.
P roduc t Page
D oc ument Feedback
2
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
2 Selecting the Correct Device
An FT12 series device may be chosen for adding a USB device port to a design for a variety of
reasons.
Primarily it is chosen because the design requires a USB device port. However there are other key
considerations when selecting the FT12x over other solutions. The fact the device can be
configured to appear as different device classes offering, bulk, isochronous and interrupt endpoints
offers maximum flexibility. The internal DMA engines remove a lot of work from the main
processor and the fact it is a separate device as opposed to an internal USB engine in the main
processor provides some isolation and protection against misuse.
2.1 FT120
The FT120 is designed to appear as another peripheral on the processor bus. It contains a chip
select line as well as an address and data bus which will act as any other peripheral on the bus.
The device is also a drop in alternative to the now obsolete PDIUSBD12 , allowing for legacy
designs to have an extended life.
2.2 FT121
The FT121 provides the same programming flexibility as the FT120 and FT122, but is connected to
the main processor as an SPI slave. This allows the device to be presented in a smaller package
(16 pins as opposed to 28). The FT121 also provides battery charger detection, making it ideal for
portable / battery powered designs that are rechargeable from the USB port.
2.3 FT122
The FT122 enhances the basic FT120 design by adding battery charger detection similar to the
FT121.
P roduc t Page
D oc ument Feedback
3
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
3 Example Circuit
The diagram below shows how the FT120 may be connected to create a USB bridge to a main
processor bus.
Figure 1 - FT120 Schematic
P roduc t Page
D oc ument Feedback
4
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
4 Coding the FT12
Using the FT12 series of devices does rely on the developer having some understanding of USB
protocol to allow for the configuration of the device. Once configured the reading and writing of
data is relatively simple.
Example code that demonstrates configuring the device as a CDC class or a HID class USB device
available for download at:
www.ftdichip.com/support/software_examples/FT12.htm
4.1 Key Decisions
There are key decisions to be made befo re coding can begin.
4.1.1 Device Class
Start by determining what device class the design should present itself as.
If it is a “Vendor Specified” class then the developer will require coding for the FT12x AND drivers
for the host PC.
If the design uses standard USB device classes then only the FT12x needs coded as there will most
likely be standard drivers on the host PC.
A large part of this design decision will be based on function as well as perceived end user
experience. Standard USB Device Classes are defined by the USB Implementers Forum and may
be found here.
4.1.2 Number of Endpoints
Endpoints are essentially the USB address es that USB data is sent to or from.
An IN Endpoint will transfer USB data from the FT12x to the host PC, while an OUT Endpoint will
transfer USB data from the host PC to the FT12x. Another USB rule is that an IN endpoint has an
odd address while an OUT uses an even address.
The number of endpoints is largely defined by the device class chosen. A user may add additional
endpoints, but this would then start to move the overall design to require dedicated drivers on the
host PC.
All designs will include a control endpoint for configuration and control. This will be typically
endpoint 0.
P roduc t Page
D oc ument Feedback
5
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
4.1.3 USB Transfer Mode
The transfer mode will be largely defined by the device class selected also. A device that uses
isochronous transfers has no error checking, but will send regular sized chunks at regular
intervals. Applications such as audio may be suited to this.
A device that uses interrupt transfers will be receiving data at unspecified intervals, such as
Human Interface Devices (HID). This may include mouse and keyboard interfaces.
The third main transfer type is bulk mode transfer. This is used for transferring large blocks of
data and includes error checking.
4.1.4 Descriptors
Descriptors are fundamentally a list of constants that the USB host will use to match a USB device
to a USB driver. The FT12 design must be given a unique set of descript ors to allow it to be
identified on the USB bus. Key descriptors include Vendor Identifier (VID), Product Identifier (PID),
Manufacturer String, Product Description String and Serial Number. The developer can select their
own values for these parameters, w ith the exception of the VID, which should be applied for via
the USB Implementers Forum (www.usb.org)
4.2
Setup Code
To configure the FT12x the USB host will send standard instructions over the USB interface on the
control endpoint. The main processor connected to the FT12x must decode these setup requests to
supply the correct response via the FT12x control endpoint.
Standard setup requests are documented in the USB specification – (see chapters 8 and 9 of the
USB Specification), and are not specific to FTDI.
Vendor commands within the setup request may be unique to the device class implemented.
do {
//--------------------------------------------------------------------// SETUP :
//
// When a Setup Packet is received on the Control Endpoint process it
//here.
//--------------------------------------------------------------------if (SUT_Received) {
#ifdef BUSY_CNT
BUSY |= 1;
#endif
ctrl_in_queue_size = 0;
ctrl_in_queue_zb
= 0;
Do_Validate
= 1;
// Read data out of Control Endpoint into setup_pkt variable
FT120_RD_BUFFER_int(SEL_EP_CTRL_OUT, (BYTE *)&setup_pkt[0]);
P roduc t Page
D oc ument Feedback
6
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
// Setup packet is a Vendor command, Stall if USB not Configured or
// wLength MSB non Zero
if (setup_pkt[0] & BIT(6)) {
//if (USB_STATE != USB_CONFIGURED) {
if (USB_STATE == USB_DEFAULT) {
Stall_CTRL();
} else if (setup_pkt[7] != 0x00) {
Stall_CTRL();
} else {
Process_Vendor();
}
// Setup packet is a Class Type or Reserved, so set Stall as these
// are not supported by the device beign created
} else if (setup_pkt[0] & BIT(5)) {
Stall_CTRL();
// Standard Setup token, so process the packet.
} else {
Process_SUT();
}
// Acknowledge the setup packet in the FT120 and clear the control
// buffers to allow further packets to be received
FT120_CMD = SEL_EP_CTRL_IN;
FT120_CMD = ACK_SETUP;
FT120_CMD = CLR_BUFFER;
FT120_CMD = SEL_EP_CTRL_OUT;
FT120_CMD = ACK_SETUP;
FT120_CMD = CLR_BUFFER;
// Clear appropriate flags
CTRL_IN_EP_FULL = 0;
SUT_Received
= 0;
}
if (CTRL_OUT_Received) {
#ifdef BUSY_CNT
BUSY |= 1;
#endif
CTRL_OUT_Received = 0;
FT120_CMD = SEL_EP_CTRL_OUT;
FT120_CMD = CLR_BUFFER;
}
…….
/**************************************************************************
* Function:
void Process_SUT(void)
* PreCondition:
USB Interrupt received from Setup Token
* Input:
None
* Output:
None
* Overview:
This function is called when a Setup Token has been
*
received and the data will be contained in memory *
*
setup_pkt. This should be parsed and appropriate action
*
taken.
* Note:
None
P roduc t Page
D oc ument Feedback
7
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
*************************************************************************/
void Process_SUT(void) {
BYTE wIndex;
switch (setup_pkt[1]) {
//=================== GET STATUS ==============================
case USB_REQUEST_CODE_GET_STATUS:
// Check general protocol and Stall if incorrect
if (USB_STATE == USB_DEFAULT) {
Stall_CTRL();
} else if (setup_pkt[6] != 2) {
Stall_CTRL();
} else if ((setup_pkt[2] | setup_pkt[3] | setup_pkt[7]) != 0) {
Stall_CTRL();
} else if (wIndex_matches_an_endpoint(setup_pkt[5], setup_pkt[4]) ==
0) {
Stall_CTRL();
// In ADDRESS state Stall any request for Interface or a non zero
Endpoint
} else if ((USB_STATE == USB_ADDRESS) &&
((setup_pkt[0] == 0x81) || (setup_pkt[4] != 0))) {
Stall_CTRL();
// The request is a valid access
} else {
switch (setup_pkt[0]) {
//-------- Recipient: Device ----------case 0x80:
CTRL_BUFFER_x[0] = 0;
// remote_wakeup, self_powered
CTRL_BUFFER_x[0] |= remote_wakeup;
CTRL_BUFFER_x[1] = 0;
ctrl_in_queue_size = 2;
ctrl_in_queue_ptr = (__xdata BYTE *)&CTRL_BUFFER_x[0];
break;
//-------- Recipient: Interface -------case 0x81:
CTRL_BUFFER_x[0] = 0;
CTRL_BUFFER_x[1] = 0;
ctrl_in_queue_size = 2;
ctrl_in_queue_ptr = (__xdata BYTE *)&CTRL_BUFFER_x[0];
break;
//-------- Recipient: Endpoint --------case 0x82:
CTRL_BUFFER_x[1] = 0;
wIndex = (setup_pkt[4] & 0x0F);
if (wIndex == 0x00) {
CTRL_BUFFER_x[0] = 0;
P roduc t Page
D oc ument Feedback
8
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
} else if ((endpoint_halt & wIndex) == wIndex) {
CTRL_BUFFER_x[0] = 0x1;
// Halt
} else {
CTRL_BUFFER_x[0] = 0;
}
ctrl_in_queue_size = 2;
ctrl_in_queue_ptr = (__xdata BYTE *)&CTRL_BUFFER_x[0];
break;
//-------- Recipient: Invalid --------default:
Stall_CTRL();
break;
}
}
break;
//====================== SET FEATURE ===========================
case USB_REQUEST_CODE_SET_FEATURE:
// Check general protocol and Stall if incorrect
if (setup_pkt[2] > 2) {
Stall_CTRL();
……..
//====================== CLEAR FEATURE =========================
case USB_REQUEST_CODE_CLEAR_FEATURE:
// Check general protocol and Stall if incorrect
if (setup_pkt[2] > 2) {
Stall_CTRL();
} else if
……………
//==================== GET CONFIGURATION =========================
case USB_REQUEST_CODE_GET_CONFIGURATION:
// Check general protocol and Stall if incorrect
if (USB_STATE == USB_DEFAULT) {
Stall_CTRL();
} else if
…………
//==================== GET INTERFACE ==========================
case USB_REQUEST_CODE_GET_INTERFACE:
// Check general protocol and Stall if incorrect
if (USB_STATE != USB_CONFIGURED) {
Stall_CTRL();
} else if
……………
//====================== SET INTERFACE =====================
case USB_REQUEST_CODE_SET_INTERFACE:
// Check general protocol and Stall if incorrect
if (USB_STATE != USB_CONFIGURED) {
Stall_CTRL();
P roduc t Page
D oc ument Feedback
9
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
} else if
………..
//===================== GET DESCRIPTOR ==========================
case USB_REQUEST_CODE_GET_DESCRIPTOR:
// Check general protocol and Stall if incorrect
if (setup_pkt[0] != 0x80) {
Stall_CTRL();
} else
………….
//================ SET CONFIGURATION ========================
case USB_REQUEST_CODE_SET_CONFIGURATION:
// Check general protocol and Stall if incorrect
if (USB_STATE == USB_DEFAULT) {
Stall_CTRL();
} else if
……..
//===================== SET ADDRESS ========================
case USB_REQUEST_CODE_SET_ADDRESS:
// Check general protocol and Stall if incorrect
if (setup_pkt[0] != 0x00) {
Stall_CTRL();
} else if
………….
//====================== DEFAULT ===========================
default:
Stall_CTRL();
break;
}
}
4.3 Application Data Transfer
4.3.1 Read
Data sent from the USB host to the FT12x must be rea d by the embedded processor. The FT12x
can interrupt the embedded processor that data is available or the embedded processor can poll
the FT12x for data. If data is available it may be read into a buffer on the main processor for
processing
//--------------------------------------------------------------------// EP2 OUT :
//
// When an OUT transfer occurs on EP 2 the data should be read out of
// the FT120 and into the OUT_BUFFER in memory.
//--------------------------------------------------------------------if ((EP2_BUF_0_FULL) && (out_buffer_data_cnt < (OUT_BUFFER_SIZE - 64)))
{
#ifdef BUSY_CNT
BUSY |= 1;
P roduc t Page
D oc ument Feedback
10
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
#endif
FT120_RD_OUT_2_BUFFER();
EP2_BUF_0_FULL = 0;
FT120_CMD = CLR_BUFFER;
}
if ((EP2_BUF_1_FULL) && (out_buffer_data_cnt < (OUT_BUFFER_SIZE - 64)))
{
#ifdef BUSY_CNT
BUSY |= 1;
#endif
FT120_RD_OUT_2_BUFFER();
EP2_BUF_1_FULL = 0;
FT120_CMD = CLR_BUFFER;
}
//--------------------------------------------------------------------// PERIPHERAL Tx :
//
// If the OUT_BUFFER has data in it and the peripheral is empty then
// send a data byte here. Update pointers and counters with wrap around
// if the end of buffer is reached.
//--------------------------------------------------------------------if (peri_tx_empty && (out_buffer_data_cnt > 0))
{
#ifdef BUSY_CNT
BUSY |= 1;
#endif
peri_tx_empty = 0;
out_buffer_tail_ptr++;
out_buffer_data_cnt--;
if (out_buffer_tail_ptr == (__xdata BYTE *)(OUT_BUFFER_BASE_ADDR +
OUT_BUFFER_SIZE))
{
out_buffer_tail_ptr = (__xdata BYTE *)OUT_BUFFER_BASE_ADDR;
}
}
4.3.2 Write
Data to be sent from the FT12x to the USB host is defined as a write in the embedded firmware.
Provided the FT12x can accept more data (buffers are not full) then a write to the IN endpoint can
occur at any time. It will be up to the USB host to provide the read request to get data out the
USB port.
//------------------------------------------------------------------------// EP1 IN :
//
// EP 1 IN buffer should be loaded with data when it is empty and there are
// either at least 62 bytes in the buffer, or the latency timer has
// expired. Example based on FT232X.
//------------------------------------------------------------------------if (USB_STATE == USB_CONFIGURED) {
if (!EP1_IN_FULL && ((in_buffer_data_cnt >= 62) || latency_expired))
P roduc t Page
D oc ument Feedback
11
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
{
#ifdef BUSY_CNT
BUSY |= 1;
#endif
EP1_IN_FULL = 1;
FT120_Load_EP_1_IN();
}
}
P roduc t Page
D oc ument Feedback
12
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
5 Debugging FT12 Code
Realistically, the only way to debug the FT12 code being developed is to use a USB bus analyser to
monitor the traffic on the bus. Such tools can be either purely software based, such as USB
Monitor from HHD software or USB Sniffer, both of which can be downloaded from the internet.
Hardware based tools basically plug into the USB path between the host and the device to sniff
traffic and examples of this include the Beagle Analyser from Total Phase or th e USB Tracker from
Ellisys. There will be other tools out there.
An example of a trace from the Ellisys USB Tracker is shown in Figure 2. The screen shot has
captured the enumeration of a USB keyboard.
Figure 2 - USB Trace of a HID Class Device Enumerating
From the trace the developer can determine what traffic is on the bus (i.e. what requests the USB
host made and the response the FT12x gave ).
P roduc t Page
D oc ument Feedback
13
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
Anything with an arrow pointing left to right in the left hand pane is traffic from the host to the
FT12x.
Anything with an arrow from the right to the left in the left hand pane is traffic generated by the
FT12x firmware and sent to the host.
The Get Descriptor call from the host highlighted in the screenshot is asking for the device p roduct
string. The IN transfers that are marked NAK basically highlight the device is not ready.
The other IN packets translate from HEX to ASCII as “Microsoft® Digital Media Keyboard”
Many of the USB sniffer tools provide ASCII, hex and binary output windows to help with decoding
the traffic.
P roduc t Page
D oc ument Feedback
14
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
6 Contact Information
Head Office – Glasgow, UK
Branch Office – Tigard, Oregon, USA
Future Technology Devices International Limited
Unit 1, 2 Seaward Place, Centurion Business Park
Glasgow G41 1HH
United Kingdom
Tel: +44 (0) 141 429 2777
Fax: +44 (0) 141 429 2758
Future Technology Devices International Limited
(USA)
7130 SW Fir Loop
Tigard, OR 97223
USA
Tel: +1 (503) 547 0988
Fax: +1 (503) 547 0987
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
[email protected]
[email protected]
[email protected]
E-Mail (Sales)
E-Mail (Support)
E-Mail (General Enquiries)
[email protected]
[email protected]
[email protected]
Branch Office – Taipei, Taiwan
Branch Office – Shanghai, China
Future Technology Devices International Limited
(Taiwan)
2F, No. 516, Sec. 1, NeiHu Road
Taipei 114
Taiwan , R.O.C.
Tel: +886 (0) 2 8791 3570
Fax: +886 (0) 2 8791 3576
Future Technology Devices International Limited
(C hina)
Room 1103, No. 666 West Huaihai Road,
Shanghai, 200052
C hina
Tel: +86 21 62351596
Fax: +86 21 62351595
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
E-mail (Sales)
E-mail (Support)
E-mail (General Enquiries)
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Web Site
http://ftdichip.com
Distributor and Sales Representatives
Please visit the Sales Network page of the FTDI Web site for the contact details of our distributor(s) and sales
representative(s) in your country.
Sys tem and equipment manufacturers and des igners are responsible to ens ure that their s ystems, and any Future T ec hnology
D evic es I nternational L td (FT DI) devices inc orporated in their s ystems, meet all applicable s afety, regulatory and s ystem - level
performanc e requirements. A ll application-related information in this document (including application des c riptions , s ugges ted
FT D I devic es and other materials ) is provided for referenc e only. While FT D I has taken c are to as s ure it is ac c urate, this
information is s ubject to c ustomer c onfirmation, and FT D I dis c laims all liability for s ys tem des igns and for any applic ations
as s istance provided by FTD I. U se of FT DI devices in life s upport and/or s afety applications is entirely at the us er’s ris k, a nd the
us er agrees to defend, indemnify and hold harmles s FTDI from any and all damages , c laims , s uits or expens e res ulting from
s uc h us e. T his doc ument is s ubject to c hange without notic e. N o freedom to us e patents or other intellectual property rights is
implied by the public ation of this doc ument. N either the whole nor any part of the information c ontained in, or t he produc t
des c ribed in this doc ument, may be adapted or reproduc ed in any material or electronic form without the prior written c ons ent
of the c opyright holder. Future T ec hnology D evic es I nternational L td, U nit 1 , 2 Seaward P lac e, C enturion Bus ines s P ark,
G las gow G 4 1 1 H H , U nited Kingdom. Sc otland Regis tered C ompany N umber: SC 1 3 6 6 4 0
P roduc t Page
D oc ument Feedback
15
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
Appendix A – References
Document References
FT120X Data Sheet
FT121 Data Sheet
FT122 Data Sheet
TN_110 What is USB
TN_113 Simplified Description of USB Enumeration
TN_116 USB Data Packet Structure
USB Implementers Forum Documents/Specifications
Standard USB Device Classes
USB Specification
Other references
USB in a Nutshell
Sample code
www.ftdichip.com/support/software_examples/FT12.htm
Acronyms and Abbreviations
Terms
Description
DMA
Direct Memory Access
PID
Product Identifier
SPI
Serial Peripheral Interface
USB
Universal Serial Bus
USB-IF
VID
P roduc t Page
D oc ument Feedback
USB Implementers Forum (www.usb.org)
Vendor Identifier
16
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
Appendix B – List of Tables & Figures
List of Figures
Figure 1 - FT120 Schematic.......................................................................................................... 4
Figure 2 - USB Trace of a HID Class Device Enumerating ............................................................ 13
P roduc t Page
D oc ument Feedback
17
C opyright © 2 0 16 Future T echnology D evices I nternational L imited
Application Note
AN_223 How To Use The FT12 Series Devices
V ers ion 1 .1
D oc ument Reference N o.: FT _000743
C learance N o.: FT DI# 3 1 5
Appendix C – Revision History
Document Title:
AN_223 How To Use The FT12 Series Devices
Document Reference No.:
FT_000743
Clearance No.:
FTDI# 315
Product Page:
http://www.ftdichip.com/FTProducts.htm
Document Feedback:
Send Feedback
Revision
Changes
Date
1.0
Initial Release
2012-09-25
1.1
Updated hyperlinks page 6
2016-02-02
P roduc t Page
D oc ument Feedback
18
C opyright © 2 0 16 Future T echnology D evices I nternational L imited