Using Microchip MCP2200 instead of FTDI FT232

Hi all,

I'm working on a little device at the moment, and need USB connectivity to the MCUs UART, so clearly need a converter chip like the FTDI FT232. However, the cost of the FT232 is astronomical compared to a device like Microchips MCP2200, which is some 70% cheaper, which equates to a £132 saving before VAT in the qty i'm building them in.

Datasheet to the MCP2200 -

I've never actually used one of these converter chips in a design before, and they all seem to talk about configuration tools in the datasheets.

To use these, is it really as simple as connect up the USB lines to the chips input, and the output to the UART (correct power, decoupling etc all of course) and talk away using a Virtual Com Port driver - which I presume would allow one to use the Arduino terminal to talk to the MCU. I presume the 'configuration' is a one time setup of the converter chip?

I understand your quantity buying, but the manufactured unit price would not be much different, also consider development time.
Tom.. :slight_smile:
Have you contacted suppliers and tried to bargain, especially the mob I've just given you links to?

Farnell is the UK division of Element 14 over here, and their price are still much higher for the 232 than the MCP2200. My local assembly house has good buying power, but there's no getting away from the fact the 232 is just a much more expensive chip.

Lot of USB/Serial chips need an external also, while the FT232 does not.
MCP2200 seems to be one of those. Have you factored in additional cost (material, assembly) for 12MHz crysta/caps or a 12 MHz resonator?

Maybe consider FT230X, similar to FT232R but in smaller package with fewer GPIO pins, and also with no external crystal needed.

Lot of USB/Serial chips need an external also, while the FT232 does not.
MCP2200 seems to be one of those. Have you factored in additional cost (material, assembly) for 12MHz crysta/caps or a 12 MHz resonator?

I have yes - and the MCP2200 still works out cheaper with the crystal, caps and extra assembly than the FT232RL.

However, I had indeed missed the FT230 - which works out cheaper than both options indeed! Crossroads, why are you always so helpful? 8)

Good memory from other topics! FT230X was brought up elsewhere.
Cypress makes a USB/Serial chip too.
FT230X seems the most useful tho. Not sure which pin corresponds to DTR, you'll have to report back and let us know.

I don't believe the chip has a DTR pin, correct me i'm wrong but DTR is only part of the RS232 protocol, and not part of RS458 or any other protocol, and as a result is probably only supported by the bigger 'flagship' chips, such as the FT232R.

The FT230X is advertised as being an interface to a basic UART I suppose...

FT2323R has 5 GPIO pins one of them performs the DTR function.
FT230X has 5 GPIO pins - I bet one of them can do the DTR function, as the chip has 4 other pins dedicated to Rx/Tx/RTS/CTS and the Typical Applications list start with:
USB to RS232/RS422/RS485 Converters

There's a utility to program the functions:

8.2.1 Programming the MTP memory over USB
The MTP memory on all FT-X devices can be programmed over USB. This method is the same as for the EEPROM on other FTDI devices such as the FT232R. No additional hardware, connections or programming voltages are required. The device is simply connected to the host computer in the same way that it would be for normal applications, and the FT_Prog utility is used to set the required options and program the device.
The FT_Prog utility is provided free-of-charge from the FTDI website, and can be found at the link below. The user guide is also available at this link.
Additionally, D2XX commands can be used to program the MTP memory from within user applications. For more information on the commands available, please see the D2XX Programmers Guide below.

3.16 FT_SetFlowControl … 23
3.17 FT_SetDtr … 24
3.18 FT_ClrDtr … 25

Not readily apparent to me how you define a pin for the DTR function.

I can confirm that the FT230X works fine for Arduino programming, with no configuration needed. DTR support works fine. It's what I use on the LED Shades. Keep in mind that it is a 3.3V part, though.

The last I heard about the MCP2200, it didn't have correct support for the DTR line, at least in the Windows drivers...the Windows CDC driver left much to be desired, and that's what the MCP2200 leverages (the FTDI chips use their own VCP driver). Things may have improved since then.

Edit: Actually, I'm using the RTS line, not the DTR line. That works because so many FTDI adapters (including FTDI's own cables) broke out the RTS line instead of the DTR line. Therefore, avrdude has triggered both DTR and RTS at the same time to reset Arduinos for programming.

Thanks, the rest of my board is 3.3V - so no problem there.

I'm glad to be 'back in the FTDI' camp as I know their drivers do work very well...

I'll have a read re the DTR line when I get a moment, see what my interpretation of it is - not that I need it...

FT230X is a 5V powered part tho - don't be scared into thinking it can't be used as is in 5V systems:

  • 5V Single Supply Operation.

True 3.3V CMOS drive output and TTL input; operates down to 1V8 with external pull ups.
Tolerant of 5V input.

The FT230X runs fine on both 5 and 3.3V, I've used it in circuits with both.

There's a pin change needed (3V3OUT connects to VCC for 3.3V circuits and to VCCIO for 5V) but otherwise no issues.

As macegr points out you connect RTS to the Arduino's reset since it doesn't have a DTR line, but avrdude pulses both so programming works as expected.

It seems the "+ 5V Single Supply Operation." line on the first page of the datasheet was copy and pasted from another FT device datasheet - as clearly it operates ona 3v3 single supply too...

Regarding the CBUS GPI/O pins - I've got a question, I can't seem to pull the answer out of the datasheet however. Can one manipulate the I/O pins using commands sent from the MCUs UART to the FT230X? Or can they only be manipulated by USB commands sent from a host computer to the FT230X?

The reason I ask, is i'm using an attiny device, and in an ideal world would have another 2 GPI/O pins that can be used to force sleep / shutdown in another device, instead of relying on timeouts - so it's not an absolute requirement, but it would be nice to be able to use the GPI/O pins on the FT230X to do this...

I was thinking the same for the GPIO. Reading the DD2xx programmers guide it wasn't clear to me how one would control the GPIO lines.

I can see why you would want to be able to control the GP pins from the USB side, for things like MCU hard resets - but to make them uncontrollable from the UART side seems madness...

What would you have the slave device do on the GPIO pins?
The part is a USB/TTL serial controller. The slave device can send back Clear To Send (CTS), and maybe one other control signal, that's really all the RS232 interface supports in a 9-pin connector.

I can see why you would want to be able to control the GP pins from the USB side, for things like MCU hard resets - but to make them uncontrollable from the UART side seems madness...

Madness? THIS. IS. RS232.

It's a byte pipe. USB is able to control the GPIO pins because it sees the FTDI device as a structure with various elements, just one of which is a serial data link. On the uC side, it's just a hose containing bytes, there's no method for out-of-band signaling of other functions. Would you want the FTDI chip to contain some magic sequence of bytes that triggers the GPIO? What if in the course of transferring other data, that magic sequence occurs? Not a good idea.

Macegr, you make a very good point - if for some reason you're application needs to send the datastream that would toggle the GPIO, you're stuffed.