Project update 7 of 14
There’s less than a day to go for the Tigard Campaign - afterwards, Tigard, Bitmagic, and Training will still be available at regular prices. We’ll update you with some logistics details once the campaign closes - for now, we have some more details about Tigard and Bitmagic to share.
Worst news first: All of the Bitmagic logic analyzers for the pledges were stolen from my front porch minutes after being delivered:
The bad news is that this was the entire world’s supply of Bitmagic. The worst of it is that most likely, because they’re such specialized devices they’ll likely be tossed in a dumpster. The impact is that we won’t be able to replace them for several weeks to acquire more components and assemble them.
The good news is that the shipment was insured, and that, barring other unforeseen "Risks and Challenges" we hope to still ship long before the campaign commitment of Mid-February.
We’ve demonstrated in previous updates about UART, SPI, and I2C. We’ll focus in a future update on using both JTAG (with a raspberry pi as a target) and SWD (with an STM32 ‘blue pill’). Tigard also has a few ‘bonus’ features that might come in handy from time to time:
The Lattice iCE40 family of FPGAs are popular for small scale projects because of their low cost and the availability of an open toolchain. While this is a very specific target, Tigard is well suited for programming devices since it has all the necessary pins readily available.
We did make some minor hardware changes to support this use including adding the CDONE pin connected to FT2232H BD6. It’s the unpopulated pin at the end of the JTAG header (we DIDN’T want to have the JTAG and UART headers BOTH be 9 pins!). If you want to program an iCE40 board, you can either solder a header on that pin, or also use the UART RX pin.
More details in the docs
Thanks to @Matir who designed the TIMEP that directly inspired Tigard, we’ve also got a working AVRDUDE configuration file. This means you can use Tigard to program AVR-Based boards that don’t have a USB or Serial bootloader already installed. Thanks @Matir!
Details will make it into the Tigard documentation shortly.
Finally - in case Tigard doesn’t already support your specific protocol, you can write your own. PyFtdi is the quickest way I have found to work with FTDI devices from code, and what I used when building my Tigard self-test device.
PyFtdi’s GPIO API has 3 different modes: Asynchronous, Synchronous, and MPSSE. Asynchronous lets you write simple, blocking code that sets bits when the code runs. If you need more precision, the Asynchronous mode lets you pass a buffer of bits that will be streamed out at a fixed rate (we’re working on a demo using this to feed WS2812 LEDs). Finally, there’s the MPSSE mode which gives full access to all of the I/O pins at a lower data rate.
The campaign ends soon, but we’ll still be hard at work. We’ll need to manufacture additional Tigards to fulfill all the pledges, plus we’ll need to replace all the lost Bitmagics. We’ll keep you updated as we make progress.