? Yeah, y'know, I'm doing a bit of that myself lately.? I feel awfully
silly putting an FT232 on a board connecting it to a
pair of UART pins
on a microcontroller that already HAS a damn USB controller, but the
FTDI drivers are available for lots of platforms, and they work well,
and the USB VID/PID situation sucks.? Do you have any thoughts here?
Just how "unclean" is it to waste the on-chip USB controller just
because of the suitly crap surrounding the Vendor IDs and stuff?
? ? ? ? ? ? -Dave
I've done it both ways very recently.? In this case, the uC is a microchip part.? It
comes down to a few issues:
- Hardware costs and board space - obvious
- Firmware development costs and time schedule.? It MAY be quicker to drop the FT232 chip
in and use the UART than to bring up the USB interface for the first time using the
developer library.? If you already have one project implementing the same protocol, this
is not much of an issue, though.
- Driver issues.? The FT232 drivers are easily installed on most OS's and work well.??
For the on-chip solution, the Communications Device Class (CDC) virtual COM port protocol
is pretty well supported by Windows 7, Linux (and other Unix-like systems such as OS X)
out of the box.? Not sure about XP or older windows installations, though.
- Vendor ID/Product ID: If you implement on-chip, you can encode these directly in
firmware.? The FTDI chip, as far as I can tell, can only be programmed via the USB side,
which means an extra step during manufacturing:? You will have to hook up the device and
run a utility that sets the VIP/PID codes.? For me, that's a disadvantage for the
FTDI.
So looking at a new project, it would depend on the scenario:
- low volume, high margin, quick development time: FTDI is great.
- high volume: pretty much would want the on-chip solution.
- update of an old design, including move to USB from RS-232.? Perhaps better to go with
the FTDI, and avoid the need to port to a newer uC, unless volumes are expected to be
high, or other requirements make the move to a new chip necessary.
- pre-existing code for the on-chip USB engine is already written for your chip--then FTDI
seems redundant
- host platform somehow has broken CDC driver, or FTDI driver, choice is made for you!
BTW, if you're making a lot of USB devices, it's not that expensive ($1000 USD) to
get a VID (as long as you don't care about the logo, or consortium membership).
Dave