While ago I backed up a SPIDriver’s crowd supply campaign to make an open-source, open-hardware SPI tool. Even though I have plenty of professional tools to do this job, but at $30 it was worth buying this tool even if I never end up using it, right? Two weeks ago I received it in the mail and gave it a quick demo run; it looked great, worked as expected but I didn’t had a real chance to put it to the test. Last week there was an issue on the production line and few bricked units ended up on my table. Since I needed to extract data from the SPI Flash and analyze it, I though this was a perfect opportunity to put the SPIDriver to the test.
Overview of SPI Driver
SPIDriver lets you easily drive SPI devices from your computer by enabling you to control SPI lines and also has two output pins named A and B. A and B pins come in handy when you need to control additional signals like write protect, reset line or just use as two additional chip select signals. Also it can provide 3.3V and 5V to power your device (as well as measure the current consumption from those lines)
What makes it stand out from the crowd
Below are some of the nice features that I enjoyed after playing with SPIDriver for a while
- Color Display
Being able to “see” what is going on and also have data decoded right in front of you allows you to quickly assess if something is working or not and also you can see if date makes sense or not.
- Additional control lines
Having A and B control lines and being able to use them to drive write protect and reset lines or just using them as two extra chip select signals comes in very handy
- Python libraries and examples
SPIDriver comes with Python module that you can install directly from Python’s
pippackage manager. Also there are plenty of examples to show you how to read and write to SPI Flash, communicate with SPI sensors or modules and also you should have no issues using it as ICSP.
Awesome, right?! So are there any downsides?
Well, yes and no, depends how you look at it. SPIDrivers biggest feature is also it’s biggest “downside”; the display. While it’s fantastic to quickly look at it and see what’s going on with the data going in and out of the SPI device, drawing it on the display takes time and this makes SPIDriver very slow when it comes to reading/writing large chunks of data. So for reading something like 4MB of flash or writing it to your ESP8266, you will need some patience because it’s going to take a while. However in my opinion, having that display makes it stand out and also provides additional ease-of-use for hobbyists and beginners, which is exactly what we need from open-source and open-hardware project like this.
This is a great tool and I’m looking forward to next revisions of hardware as well as firmware/software. Some improvements that I would love to see are
- Add support to “freeze” the display through Python script
This should speed up the data transfer significantly. For example, if you are reading or writing large chunks of data you can disable screen update and enable it once it’s done. Reason being that you don’t need to keep updating the screen as often as if you were sending few bytes to try to read device ID.
- Level translation / Level shifter
It would be fantastic to have an option to connect your device’s VCC to SPIDriver and it would translate 3V or 5V signals from SPIDriver to your devices, for example 1.8V rail.
- Mounting holes
SPIDriver does not have any mounting holes. Now while that doesn’t functionally affect anything, it prevents you from laser cutting piece of acrylic and placing it on top of the display to prevent scratches or potentially damaging to the device. Now you could 3D print the enclosure for it but having mounting holes would still help.
Where to find more
You can find more information about SPIDriver on their website, crowd supply website as well as their Github repository, all of which are listed below