More FT232 Bit Banging with the Arduino Board

In our last article, we gave a brief introduction to bit banging the FT232R. As an example, we used the FT232 that comes installed on the Arduino board. In this article, we’ll provide a little more detail on bit banging and the associated pros and cons. We are still using the Arduino diecimila board for these tests.
The main topic we’d like to discuss is the perceived speed issue with bit banging. It’s true, manual banging of every toggle is pretty slow – as shown by the test clocks below. We can see that the peak speed of manual banging is about 1mS per transition or about 2mS per clock if we were developing SPI, JTAG, or some other serial protocol.

Unbuffered FT232 Writes only reach a few kHz

Fig 1 – Manual Bit Banging really IS slow. 500Hz/bit



We agree that this would load a bitstream pretty slow – however as a last resort, even this is still usable. But we have to wonder if all the haters really took the time to read the datasheet. Since USB is a packetized protocol, it is not very efficient to send one command at a time. You end up with pretty slow operation as shown in the scope shot above. But how about this next example?


Scope Shot of FT232 Bit Banging at 540nS per clock

Fig 2 – By using the buffer, the speed increases about 1,800x.


Above, you see the FT232R bit banging at 540nS per bit. While it’s not LVDS, it’s almost 2,000 times faster. In fact, it exceeds the I2C fast mode (400kHz) by over 2x so in some cases, running this bad boy in full auto is TOO fast. Read on to see the difference in these two cases, and to download the new bit twiddling tool so you can experiment yourself.


Continued on Next Page…

This entry was posted in Hacks. Bookmark the permalink.

4 Responses to "More FT232 Bit Banging with the Arduino Board"

Leave a replyLeave a Reply to Dave Newland