I know very little about USB, so excuse the naive question. I'm looking for an IC that I can interface with a microcontroller (in my case, the ATMega32) that will let me communicate with a computer over USB. My project involves large data transfers (for logging purposes) and serial / UART is too slow. Any direction would be helpful.
There are two major chips which implement a USB slave i.e. a way to talk to a PC which has a USB port (a USB controller).
One is Prolific in China, the other is FTDI in the UK.
Prolific are absolutely crap on support - I sell a product with their chip in and we never get any backup. Even buying them is a process... But it works OK. It is cheaper of the two in volume.
FTDI is much better
formatting link
and they have good support. price is about USD 2.50 in 1k quantities. Look up the FT232 or similar
- this gives a serial interface which you can connect to your microcontroller's serial port directly.
Both chips come with free drivers which create a virtual COM port (VCP) within the operating system. FTDI do much more driver support including various kinds of unix.
I sell a product with the FT232 in it and we are very pleased with it. We use the Prolific chip only because the product that uses it is made wholly in China so we have no choice.
There is a huge amount of work in the development of bug-free PC VCP drivers. You would never want to write your own. Windows implements predefined USB drivers for a few things like a USB keyboard/mouse, parallel port, but curiously not a serial port which is why if you want a USB serial port you have to provide the user with the VCP drivers.
One thing to consider is that the way windoze enumerates USB devices, it creates a new COM port # every time you plug the *same* device into a new USB port on the *same* PC. This is a right pain. The solution is to put an EEPROM in your product and write a unique serial number into this, and then the COM port becomes fixed to the device itself which is generally much more helpful. Very few USB product manufacturers bother with this EEPROM however. We do it on the FTDI chip based product - it's very easy. FTDI provide a different set of drivers (not VCP) which you install on a PC used to serialise your product and these provide access to the EEPROM. You just write in a string which contains a hash of today's date/time or whatever and then every one is unique.
Another direction you may want to try if you really need to interface to the ATMega32 is:
formatting link
this will give you the FTDI chip, and provision for the Mega micro on the one proto board.
Cheers Don...
--
Don McKenzie
Site Map: http://www.dontronics.com/sitemap
E-Mail Contact Page: http://www.dontronics.com/email
Intelligent 2.83" AMOLED with touch screen for micros:
http://www.dontronics-shop.com/product.php?productid=16699
You could try the FT245R from FTDI if you have about
12 I/O port bits to spare. (4 for control and 8 as a data port).
formatting link
I hung one of these on an 8MHz MSP430 and I get transfers at about 100KBytes/second (equivalent to a 1MBit serial port). About half the time is spent reading data from an SD card via SPI, the other half transferring the bytes to the USB chip. FTDI provides certified Windows drivers and the chip is in a SSOP-28 package requiring just a few decoupling capacitors.
Like others I can recommend the FTDI chips. They have serial and parallel versions, PC-side device driver support is good, virtual COM port and a DLL with API. It's a very popular chip so there's support in Linux as well. There are cheap adapter boards if you can't do surface-mount.
TI and Silicon Labs have USB-RS232 bridges as well but I don't know how easy they are to use.
For one data point: The original data cable for Fluke's 190-series Scopemeters used a Prolific chip as the USB/serial gateway. The provided drivers would hang during data transfers on PCs with dual core CPUs. There was no in-place fix (no new drivers or firmware); Fluke had to make a new USB/serial cable using FTDI chips -- which work fine.
Some discussion of this at
I never did pop open the connector on the Rev 1 (Prolific) cable (it's on the "someday" pile) but the Rev 2 (FTDI) has been completely reliable.
TI and SiLabs are two. Right now I'm so frustrated with FTDI's technical support that I'm tempted to say "any".
I too have had trouble with the Prolific adapter. There are some standard function calls that their driver does not support, but it always returns a "success" status code.
I've sold thousands of FTDI based USB-422/485 converters and had no problem at all in the field. I think that's pretty good.
There is a downside to having chosen the 'unique device' option (a serialised eeprom), which is that if you want to connect several of the devices to the same PC (actually this may be a very unusual scenario but one of my customers likes to do it) then windoze thinks it's a different device each time and forces you to install the driver for each device. Not a big deal (copy the installation CD into a temp dir and install from that; then you don't need to carry the CD about) and apparently there is no solution under windoze.
We've had some weird support issues with the Prolific product (again sold thousands of them) which were related to the known behaviour of getting a new COM port every time you plug a NON serialised USB device into a different USB port on the same PC. In one case I recall, windoze created a new COM port # every time the device was plugged into the *same* USB port. But to be fair this is very rare.
Nearly every USB-serial adapter on the high street is made in China and uses the Prolific chip.
The FTDI chips also use the bulk transfer mode. It makes the most sense for any device where you want high data rates with intermittent transfers and guaranteed end-to-end delivery.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.