Sponsored by

Navigate

Check these out

Tag: saleae

Most electronics DIY projects I’ve worked in the past have involved digital communication protocols such as USB, UART or PS/2. Sometimes when first twiddling with a new protocols, everything works nicely. Other times, things don’t quite work the way they should. In the latter case, a logic analyzer is an invaluable tool, essentially a multi-channel logger of digital signals, which you can use to hopefully pinpoint where things are not going as they should. Nowadays most of these are connected to PC, so you can capture a piece of communications between two devices, and analyze what is happening with a dedicated software.

I started my logic analysis with the inexpensive Bus Pirate, but after a while also got Saleae Logic unit I used to view the PS/2 traffic in my knock sensor project. Later on, I have gotten the PicoScope 2208B which has both analog oscilloscope functionality, as well as digital logic analysis capabilities.

So when I was contacted by IKALOGIC, the makers of ScanaQuad series of logic analyzers, who offered to send me a unit to try out in return for a review, I though I was in a good position to give it a spin and also have previous experience to compare it against. I also had a project in mind to test drive the SQ200 unit I got: my recent MIDI-USB adapter, which is a combination of slow 32 KHz serial signals, and quite fast USB signalling.

Note: I received the review unit from Ikalogic without cost, but with freedom to form my own opinion about the device. I’m giving praise where it’s due, but not pulling any punches where something will nag me or compare unfavorably against the devices I’ve had first-hand experience in the past!

Unboxing the ScanaQuad SQ200

The unit arrived well packaged, and inside the plastic wrapping I uncovered a matte black cardboard box with the unit name. A grade above no-name Chinese vendors, but of course not an iPhone “unwrapping ceremony” kind of thing either. Inside, there was the unit, USB cord and logic probes neatly packed (click for larger images).

There’s nothing complicated in taking the unit into use: Just attach the USB cable, the probes, and you’re set. Build quality of the unit is very good, with grey matte surface with nice finishing, four screws and a product spec sticker on the backside, and logo, markings and a power/activity LED on top.

Size-wise, the SQ200 is slightly larger than the very compact Logic unit I have from Saleae (it’s an old model, don’t recall the exact model code), which I rate as the gold standard in product casing, with Apple-esque metal feel (aluminum?) and solid construction. The Saleae unit actually has 8 channels despite it’s smaller size. On the comparison image you can also see PicoScope 2208B with 16-channel MSO capability. Compared to that, both IKALOGIC and Saleae units are quity tiny (still, the palm-sized 2208B is extremely compact as well, given the 2 high frequency analog channels and waveform generator).

While banging my head against the wall with debugging my PS/2 keyboard thingy, I really wished I had a dedicated logic analyzer (preferably with PS/2 decoder, but even raw binary data would’ve been fine). So I decided to try out a long hatched idea – combine an ATtiny2313 and FTDI for some unlimited-length logic capturing with a PC. You’ll only need:

ATtiny2313 is ideal for this, as it has all eight port B pins on one side in numerical order – attaching up to 8 logic lines is really straightforward. With 20 MHz crystal, baud rates close to 1 Mbps can be achieved in fast serial mode. I used Adafruit’s FTDI Friend for really simple (and way faster than most cheap serial adapter dongles) serial to USB conversion – just connect ATtiny RXD pin to TX, and TXD to RX, and you can even get power from the Friend so you’re all set! For crystal and that other stuff, see my ATtiny2313 breadboard header post for schematic, the picture above should fill you in with the rest.

Firmware code

This device has some of the smallest firmware codebases ever (firmware is 128 bytes). All we need to do is to set up UART with desired speed, and have the AVR chip to fire up an interrupt whenever data has been sent, and then use that to send current state of port B (using PINB):