Alternatives to FTDI for USB interface?

Hello all,

First let me state that I'm starting this thread purely out of "academic" interest, not because I have any real issue with the typical FTDI chip used for USB interface on Arduinos.

I'm starting to explore alternatives to embedding an FT232R onboard. The obvious alternatives:

  1. Get an official FTDI-manufactured cable
  2. Use a breakout, such as the Modern Device USB-BUB
  3. Hack a non-FTDI phone cable and dig up drivers

What other options are there?

Is it possible to hack a standard Duemilanove to "borrow" the FT232R?

Are there other USB-UART chips out there?

Is there merit in using a "real" microcontroller that happens to have USB and UART onboard? For instance, the Benito:

http://dorkbotpdx.org/wiki/benito

That looks promising, since (if I'm interpreting the page correctly) you could use it as a USB-UART interface to program bootloaded AVRs in Arduino clones, AND you could use it to burn bootloaders (right? or am I missing something?)

Or, the teensy:

http://www.pjrc.com/teensy/

Other thoughts? Am I missing any obvious choices?

Is it possible to hack a standard Duemilanove to "borrow" the FT232R?

Yes. Just jumper a wire between the ground pin and the reset pin, that will keep the AVR processor dormant and you are then free to utilize the pin 0 and 1 serial data lines. Accessing the FTDI DTR signal, if you need it, is a little more difficult as it doesn't appear on the shield pins, however you could solder a jumper wire to the DTR trace coming off near the FTDI chip.

Lefty

CP210x can be used in place of FT232. I just wrote a post (An Arduino Compatible Using CP2102 – Kerry D. Wong) on this.

Microchip, TI, Cypress, Silicon Labs, Prolific, and more all offer chips that either implement the Serial/USB function or are general purpose controllers with USB and Serial interfaces aimed at being programmed for that function...

Beware somewhat; many do not include host-side driver software, and when they do it may be for windows only.

Beware somewhat; many do not include host-side driver software, and when they do it may be for windows only.

CP2102 is natively supported under Linux :slight_smile:

We used the CP2102 in a product and deeply regretted. The drivers are NOT updated as rapidly as FTDI. We received blue screens occasionaly. The part was also very sensitive to board noise.

Can you get ftdi functionality without smd parts?
Or are we stuck with having to use breakout boards for the ftdi IC?

Gordon

Isn't there a MAX 232 chip? I think I have one in a USB to serial doodad. Should work, and it must be very small because it fits in the space between the USB Jack and the Serial Port

Can you get ftdi functionality without smd parts?

If you can tolerate it being built into a cable and paying US$20 or so, yes:

http://www.ftdichip.com/Products/EvaluationKits/TTL-232R.htm

-j

You can use another ATMEGAx8 chip and put CDC232 on it.

I currently have such a setup, but it is rather slow.

I believe this is an OS issue (Win7 in my case). But all in all it all works the same :slight_smile:

I used the CP2102 quite successfully on both the PC and the Mac.

Then the Mac's Snow Leopard came along and the auto reset function would no longer work. I got in touch with Silicon Labs who said they would update the drivers in a month. That was over 9 months ago and apart from one update saying it had been delayed I have herd nothing since.

Looks like I hadn't correctly weighted the driver "issue."

Anyone here played with the Benito? It looks interesting - could be used instead of an FTDI breakout board, and it's a standalone microcontroller, too. . .

Again, I'm not really in this because I have a critical need to solve, it's just that it seems a shame that the ONLY ways to get an Arduino/ATMega programmed from a modern PC are to either drop $15 - $20 for a cable/breakout board, or deal with a relatively fine-pitched SMT chip that costs as much as the AVR itself.

Again, I'm not really in this because I have a critical need to solve, it's just that it seems a shame that the ONLY ways to get an Arduino/ATMega programmed from a modern PC are to either drop $15 - $20 for a cable/breakout board, or deal with a relatively fine-pitched SMT chip that costs as much as the AVR itself.

If you dont mind losing the Serial stuff, you can always use USBasploader.

I have even written a replacement for the Serial stuff over USB, but it unfortunately causes too many issues to be useful.

it's just that it seems a shame that the ONLY ways to get an Arduino/ATMega programmed from a modern PC are to either drop $15 - $20 for a cable/breakout board

Dude, it has been very few years since the only way to do this involved hundreds of US$. Oh, and it was frequently it was either a one-shot deal (OTP) or only lasted until you cycled power (RAM based).

... SMT chip that costs as much as the AVR itself.

Which costs a whopping US$3.50.

The TSSOP package of the FTDI is a legitimate problem for hobbyists, but in all other respects the FTDI is a great solution: well-written, cross platform, free drivers; good hardware; minimal external device count; options for bit-banging; etc.

There are projects that use an ATmega (or some other AVR) as the USB interface. After lots of work, they can be as good as the FTDI already is.

-j

Dude, it has been very few years since the only way to do this involved hundreds of US$.

Yes, and it's also been those same few years since a 5 MP camera like the one in my free cellphone would have cost a few hundred bucks! I'm sorry if my desire to learn about (potentially cheaper) alternatives has offended your sense of historical perspective.

Thanks to those who have proposed options, I have some reading to do now. I mentioned the Benito in my first post up top but no one commented - has anyone used one?

Leppie said:

If you dont mind losing the Serial stuff, you can always use USBasploader.

This is something I'm trying to do. I know how to program a hex file to my AVR running USBaspLoader using AVRDUDE. However, I don't know how to get the Arduino software to run the correct AVRDUDE command. (I need to change the "-P" option to "-P usb", and I don't see a way to do this from within "hardware/boards.txt".)

Tips?

Regards,
-Chris

However, I don't know how to get the Arduino software to run the correct AVRDUDE command. (I need to change the "-P" option to "-P usb", and I don't see a way to do this from within "hardware/boards.txt".)

You have to point it to some serial port still. Still works too.

Leppie,

Hey your right! AVRDUDE doesn't seem to care about the port being wrong. However, I needed also to add the disable_flushing option. Here is my new entry to boards.txt:

##############################################################

usbasploader.name= USBaspLoader 12MHz

usbasploader.upload.protocol=usbasp
usbasploader.upload.maximum_size=14336
usbasploader.upload.speed=19200

usbasploader.bootloader.low_fuses=0xdf
usbasploader.bootloader.high_fuses=0xd6
usbasploader.bootloader.extended_fuses=0x00
usbasploader.bootloader.path=atmega
usbasploader.bootloader.file=ATmegaBOOT_168_usbasploader.hex
usbasploader.bootloader.unlock_bits=0x3F
usbasploader.bootloader.lock_bits=0x2F

usbasploader.build.mcu=atmega168
usbasploader.build.f_cpu=12000000L
usbasploader.build.core=arduino

usbasploader.upload.disable_flushing=true

##############################################################

I'll just leave this here, $3 including shipping:

http://www.dealextreme.com/details.dx/sku.24512