Tuesday, February 1, 2011

Vinculo - Arduino clone with USB slave / host capability

I just got hold of  FTDI chip's new Vinculo developing platform, so here's a quick review for you!

Vinculo is a 25€ development platform for the FTDI Vinculum II (VNC2) dual USB host/slave microcontroller. The board design has been copied from Arduino, and they even advertise it as Arduino-inspired and Arduino shield compatible. FTDI seems to have realized the potential that comes when having a large hobbyist userbase...

Vinculo could be called a USB-enabled Arduino, but that really doesn't do the board justice. There are many features that set it apart from the Arduino, and it also beats Arduino in all the specs (see below). Of course, it's not nearly as user-friendly as the Arduino as a first platform.

Look what I got in the mail!

Vinculo board with the programming header uncovered (the pins on the right).

Compared to Arduino, there are many differences:
 - The USB ports on the Vinculo can not used for programming the microcontroller - they are used for connecting host or slave devices.
 - You need also a 15€ USB programmer for the Vinculo (it's the small device on the right in the picture below)
 - Due to the flexibility of the VNC2 chip, the signals can be rerouted to different pins
 - Many feature & performance differences, more detail below.

Vinculo board and the programming & debugging module.

A close-up of the USB slave/host ports and the 9V jack.

Vinculo next to an Arduino Duemilanove.

 Vinculo board features:
 - 16-bit VNC2-64Q microcontroller (Arduino is 8-bit)
 - USB Type A connector for use in USB 2.0 host applications
 - USB Mini-B connector for use in USB 2.0 slave applications
 - Connector for external 9V power supply
 - Compatible with shields built by the Arduino community
 - 30 digital input/output pins (Arduino Duemilanove has 14)
 - 8 analog-to-digital converter inputs with 10 bit resolution (Arduino Duemilanove has 6 at same resolution)
 - 8 PWM outputs (Arduino Duemilanove has 6)
 - Variable clock speed: 12 / 24 / 48 MHz (Arduino Duemilanove is 16 MHz)
 - 256 kilobytes of FLASH memory (Arduino Duemilanove has 32 kbytes)
 - 16 kilobytes of RAM (Arduino Duemilanove has 2 kbytes)

Datasheets for the chips on board:
Vinculum-II Embedded Dual-USB Host Controller IC datasheet
MCP3008 8-channel 10-bit analog-to-digital converter datasheet

The pin headers in my Vinculo were all a bit crooked. I seem to have bad luck since my Duemilanoves look like this too. Here's the 8 ADC channels and Reset, 3V3, 5V, GND and Vin pins.
Also the two-row headers were a bit crooked. I'll have to use some force when installing the shields.


The language used to program the Vinculum is a subset of ANSI C. For Arduino users it should be no big challenge but still a bit more complex. The Arduino IDE actually goes so far that it completes the user code to be valid C++, with some extra header code. I don't think the Vinculum-II does any of that.

Unfortunately, the toolchain is only for Windows. This seems to be a very common grief in the embedded world. I'm not sure if it works under Wine. The development IDE can be downloaded for free from here. You need to register to download it. Be sure to install also the patch for the 1.2.2 version.

There's some firmware code examples on the FTDI chip page, with good documentation. You get examples for a 16x2 LCD interface, a graphical LCD interface and a Volt meter using an OLED screen.

If you make a USB slave device with this board, let's say for example some custom game controller, you'll need to use either the Virtual Com Port (VPC) driver or the D2XX direct USB access driver. I haven't gotten that far yet. See the links for the drivers, guides and programming examples.

Vinculo Prototyping shield

The Vinculo prototyping shield in it's package

I also got a 10€ prototyping shield for the Vinculo. The package contains a prototyping PCB, pin headers to fit the Vinculo board, and a minimal set of components: 2 pushbuttons, 2 green and 1 yellow leds and three resistors.

Contents of the prototyping package.

Related links
Vinculo board home
Vinculo board datasheet

Vinculum II homepage
Vinculum II datasheet
Vinculum II toolchain

That's it for now. Stay tuned for some more articles on this board!

EDIT 28. March 2011: Problems with the Vinculo platform.

I haven't had the time to work on this board yet, but others have. Unfortunately it seems that they're not very pleased with the toolchain and the documentation.

Josh Pieper has been hard at work exploring the various issues with the VNC2 Toolchain, and complains that the newly released version 1.4.0 didn't solve any of the many issues he has found & reported. Very good work!

In an element14 post, Josh also answers a question by nickname WestfW:
"Do any of the FTDI documents describe the architecture of the Vinculum2 CPU or chip/peripherals? I couldn't find anyhing in the docs I looked at, or anything that seemed likely on their web site.  They provide a C compiler and a bunch of libraries, but programming something of that complexity without more indication of how it works seems ... scary.

It seems like quite a lot of value stuffed into that chip.  About the same price as an FT232RL with a lot more capability..."

"FTDI appears to be keeping the architectural details closed.  I've been working on a project with the VNC2 and have run into serious problems in the compiler, linker, libraries, and IDE which make me think that the toolchain is just not that robust yet."

So, looks like Vinculo is a quite closed and immature platform. FTDI probably rushed the product to market. That's not strange at all, seems like nowadays every company does that. But not fixing the serious user-reported bugs in the toolchain - that's strange.

Let's hope FTDI fixes these problems in the next update and even gives some more information on this platform so the power of Vinculo could be fully unleashed among the hobbyists.


  1. Have you actually tried doing anything with this board yet? I've found the toolchain to be very immature.

  2. No, unfortunately I haven't had the time. At the point I wrote this I was planning to append the article as I get to actually try it. I've read similar complains about the toolchain elsewhere.

    Another complaint seems to be that the actual architechture of the Vinculum II is not explained anywhere, which makes designing on Vinculo a bit risky...

    Let's see if the folks at FTDI fix these problems or not...

    Anyway, I will update when I eventually get to do something on Vinculo... It's not going to be anything too complicated though.

  3. Actually the people at FTDI have bumped up the release to 1.4.2 and are working their (we all know what) off to make the device easier to program. It also comes with one Android device example, which sadly was tested on only two devices, an expensive Xoom tablet from Motorola, and a Samsung Nexus S phone. (Which while not really as expensive has a huge disadvantage aimed at it. The device maker.)

    Normally they answer e-mailed support questions within one or two business days, either here or in the UK. But I took the advantage and called the US office to discuss some issues.

    It has one strong advantage over the Arduino. It is easier to program.

  4. I did not reveive a rely from support1@ftdichip.com in 4 days for a feature enquiry. Since I have serious problems with the toolchain. The code generated is plain wrong with no errors or warnigs. One problem I found is the "sizeof" of something that is around 512 bytes, but it appears that there are other problems, but without a CPU instruction set such issues are a pain to debug. I did not find a chip with a USB host and slave with 16K RAM and flash/eeprom (the programing of which must be described) based on 8051 or other well-known CPU with this size ready made - any ideas?

  5. Please, please , please, change the name... in Italian, "Vinculo" sounds like "If*ckyou". Very funny to read in the first place, but I'm not quite sure if it's going to really help your business - in Italy at least! ;)