According to my experiences USB devices are bit complicated to design and writing software (drivers and support applications) for USB devices are time consuming and complex process.
Most recommended (and easiest) method to design hardware interface for USB port is using Future Device Technologies FT245 or FT232 chips. At the moment both these chips support for USB 2.0 and have excellent set of APIs.
To test the performance of this device I implement some experimental version of PC oscilloscope using FT245 USB Interface, AD7575 ADC, LF347 Op-amp, 4069 Hex Inverter and array of AM7205 FIFOs. Application program is design using Delphi 7 and it is totally based on FTDI Delphi APIs. This test system is worked perfectly in Windows XP and Windows 2003 systems during my test runs and produce excellent results.
I choose FT245 for this design because it has 8 parallel input interfaces and this is perfectly matched with AD7575 ADC. (AD7575 also have 8 parallel outputs) I use 2705 FIFOs to capture the maximum number of samples.
So implementing USB system is not a big problem now, we may use
FT245 Parallel USB FIFO or,
- FT232 Serial USB FIFO
Both these chips have APIs in C++, Delphi, Visual Basic, etc. I’m choosing Delphi because of its performance, features and familiarity and I’m also use FT245 API with C++Builder 6, 2006 and Delphi 5, 6 and Delphi 2007 without any problem.
There are several interesting features available in FT245/232 chips which include,
- Support for suspend mode
- Several power configuration (USB self powered, external powered options)
- Interface EEPROM with device descriptor.
- Operate with standard +5V power supply
- Higher data transfer rate (up to 15Mbps)
FT245/232 generally operates with +5V and all I/O ports support standard logic voltage levels so we can interface FT245/232 with any standard digital system easily and I’m also use FT245 with PIC and ATMEL microcontrollers without any problem.
Only problem in FT245/232 is its SMD package, because of this reason it is bit difficult to use this chip with standard project boards/prototype boards.