busvoodoo
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionNext revisionBoth sides next revision | ||
busvoodoo [2017/12/06 22:06] – created kingkevin | busvoodoo [2017/12/15 11:08] – [firmwares] kingkevin | ||
---|---|---|---|
Line 2: | Line 2: | ||
This tool allows to quickly communicate with various other electronic devices. | This tool allows to quickly communicate with various other electronic devices. | ||
- | ==== protocols | + | ===== features ===== |
- | ==== history ==== | + | The BusVoodoo is a multi-protocol debugging adapter. |
+ | |||
+ | It comes it two versions: | ||
+ | * light: provides everything to works with up to 5V protocols using the 2x5 pins I/O connector. It comes in a case (with general pinout label), USB cable, and a 10 pins female to female dupont cable (20 cm). | ||
+ | * full: adds RS/CAN functionality and dedicated RS/CAN connector (with HV output) with 5 pins female to female dupont cable (20 cm), an OLED display (e.g. to indicate protocol specific pinouts), a proper 2x5 colored IDC cable to 10 pins dupont (30 cm), and a 8-channel 24 MHz logic analyzer (sigrok compatible Saleae Logic 8 clone). | ||
+ | The light version can be converter to a full version by populating the components on the bottom side of the PCB (and cutting the display and RS/CAN slots in the case) | ||
+ | |||
+ | Device features: | ||
+ | * compact rigid case: 49.3x27.7 mm | ||
+ | * host connection: USB 2.0 (mini-B, full speed: 11 Mb/s) | ||
+ | * 2 light indicators: red for power, red+blue for activity | ||
+ | * 2 target device connectors: general purpose I/O connector (0 to 5.5 V) and specialised RS/CAN connector (not populated on light version) | ||
+ | * 1 display connector (OLED screen provided in full version) | ||
+ | * 1 internal debugging and automation connector (2x4 pins with 2 mm pitch) | ||
+ | * re-flashable with [[# | ||
+ | |||
+ | I/O connector: | ||
+ | * 2x5 pins header (IDC, 2.54 mm pitch) | ||
+ | * pinout (from top left to bottom right): | ||
+ | - ground | ||
+ | - 5 V output (directly from USB), software switchable | ||
+ | - 3.3 V output (up to 250 mA), software switchable | ||
+ | - 0 to 4.8V adjustable voltage output (up to 500mA), connected to the embedded pull-up resistors (target device voltage can be input), 0 to 6 V ADC | ||
+ | - 6 I/O pins, 3.3 V in push-pull mode (protected using 220 Ohm resistors), 1.6 to 5.5 V in open-drain mode using strong 2 kOhm embedded pull-up resistors (with internal adjustable voltage regulator or external power source) | ||
+ | |||
+ | RS/CAN connector: | ||
+ | * 1x5 pin header (IDC, 2.54 mm pitch) | ||
+ | * 3.3 to 18 V adjustable voltage output (up to 30 mA), to program devices using high voltages | ||
+ | * RS-232 port (with hardware flow control) | ||
+ | * RS-485/ | ||
+ | * CAN port (not terminated) | ||
+ | |||
+ | === not the World' | ||
+ | |||
+ | Since the begging of electronics probably every engineer developed his own dedicated programming or debugging tool. | ||
+ | This is just mine, packed with features and made available for all. | ||
+ | |||
+ | === not a smart device: === | ||
+ | |||
+ | While it is packed with features, it is just a debugging and hacking tool and you are the brain behind it. | ||
+ | You still need to know about electronics (e.g. the difference between push-pull and open-drain driving modes) and have a basic understanding of the protocol you want to talk. | ||
+ | |||
+ | === not an Internet-of-Things device: === | ||
+ | |||
+ | It comes with no network connectivity. | ||
+ | Its purpose is to debug and hack devices locally, not to provide a gateway to remotely control other devices. | ||
+ | |||
+ | === not the ultimate all-in-one device: === | ||
+ | |||
+ | The BusVoodoo is a compact device which supports a lot of [[# | ||
+ | But it is not intended to replace all the other special purpose adapters (USB to UART, JTAG, ...) which probably can better solve specific task because their are: more stable, simpler, more powerful, faster, more stable, cheaper, or more available. | ||
+ | Thus the BusVoodoo is a good choice to start with, but if you want better performances switch to a device designed for each particular task. | ||
+ | |||
+ | === not community driven: === | ||
+ | |||
+ | This device is not the result of a collaborative work in a forum with 1000 pages and chaotic status. | ||
+ | I developed it and actively support it. | ||
+ | I also actually also use it in my everyday work, and thus have an interest of keeping the quality high.\\ | ||
+ | Nothing prevents you from building it yourself or forking it though. | ||
+ | Both hardware and software are open-source and available here, and you are welcome to submit bug reports or patches. | ||
+ | |||
+ | ===== protocols ===== | ||
+ | |||
+ | The signals can be driven using 3.3 V push-pull mode, or 1.6 to 5.5 V open-drain mode with 2 kOhm embedded pull-up resistors (can be increased using external resistor). | ||
+ | |||
+ | ^ protocol ^ support ^ comment ^ | ||
+ | | UART | hardware | 2 UARTs available, 1 with hardware flow control | | ||
+ | | SPI | hardware | with multiple Chip Select | | ||
+ | | I²C | hardware | with embedded pull-up resistors | | ||
+ | | I²S | hardware | with master clock | | ||
+ | | SD/eMMC | hardware | with 1 or 4 data lines | | ||
+ | | SMBus | hardware | with embedded pull-up resistors | | ||
+ | | LIN | hardware | | | ||
+ | | ISO-7816 | hardware | | | ||
+ | | RS-232 | hardware | with hardware flow control, only in full version | | ||
+ | | RS-485 | hardware | no termination resistor, only in full version | | ||
+ | | RS-422 | hardware | no termination resistor, only in full version | | ||
+ | | CAN | hardware | no termination resistor, only in full version | | ||
+ | | 1-Wire | software | | | ||
+ | | MicroWire | software | | | ||
+ | | WS2812b | sofware | dedicated LED light protocol | | ||
+ | | DHT11/DHT22 | software | dedicated humidity/ | ||
+ | | TM1637 | software | dedicated 7-segment display protocol | | ||
+ | | IR | software | various InfraRed protocols, planned | | ||
+ | | JTAG | software | planned | | ||
+ | | SWD | software | planned | | ||
+ | | cJTAG | software | planned | | ||
+ | |||
+ | note: the status of each protocol support is not documented yet (WiP) | ||
+ | |||
+ | no matter which protocol you are using, the hardware has been designed to provide one additional UART port | ||
+ | |||
+ | ===== firmwares ===== | ||
+ | |||
+ | Since the BusVoodoo uses native USB, it can be [[flashing|re-flashed]] to clone other USB device. | ||
+ | This allows to convert the BusVoodoo into a dedicated/ | ||
+ | |||
+ | alternative firmwares: | ||
+ | * USBtinyISP or AVRISP to program Atmel AVR MCUs | ||
+ | * [[https:// | ||
+ | * PICkit2 to program PIC MCUs, using the high voltage output of the full version | ||
+ | * AVR Dragon to rescue Atmal AVR MCUs using the [[http:// | ||
+ | |||
+ | note: the alternative firmware are not implemented yet | ||
+ | ===== history | ||
Whenever I go to conferences I like to take apart devices I find there. | Whenever I go to conferences I like to take apart devices I find there. | ||
- | The problem is that I can't bring always bring all the adapters: UART, JTAG, I2C, ... there are just too many, and in the end I never have the right one. | + | The problem is that I can't bring always bring all the adapters: UART, JTAG, I2C, ... there are just too many, and in the end I never have the right one.\\ |
The alternative I found was just to take a development board (e.g. the cheap and compact [[stm32f1xx# | The alternative I found was just to take a development board (e.g. the cheap and compact [[stm32f1xx# | ||
- | This comes with peripherals for the major protocols (UART, SPI, I2C) and for the rest I just to implement them is software ([[https:// | + | This comes with peripherals for the major protocols (UART, SPI, I2C) and for the rest I just to implement them is software ([[https:// |
The drawback is that I need to program the micro-controller every time, reference manual at hand, and this takes at least 30 not so exiting minutes. | The drawback is that I need to program the micro-controller every time, reference manual at hand, and this takes at least 30 not so exiting minutes. | ||
Now come the BusVoodoo. | Now come the BusVoodoo. | ||
Line 17: | Line 121: | ||
Use a terminal emulation program to connect to it (e.g. [[https:// | Use a terminal emulation program to connect to it (e.g. [[https:// | ||
- | ==== alternatives ==== | + | ===== alternatives ===== |
+ | |||
+ | I am not the first one having this problem and creating such a device. | ||
+ | Probably every hardware hacker comes to the same point and develops his own solution, using parts he is familiar with, and suited for the tasks his is struggling with. | ||
+ | And there probably never will be a perfect device capable of everything since the needs are different, but a bit of help is always welcome. | ||
+ | |||
+ | The closest alternative to the BusVoodoo is probably the [[http:// | ||
+ | The name BusVoodoo is also inspired from the Bus Pirate and is kind of an homage, and the more I develop the BusVoodoo the more I learn about the Bus Pirate and like it again. | ||
+ | |||
+ | Advantages of the Bus Pirate over the BusVoodoo: | ||
+ | * it is a mature product (v3 is, v4 isn' | ||
+ | * it supports the [[http:// | ||
+ | * it is cheap ($30) and readily available | ||
+ | |||
+ | Advantages of the BusVoodoo over the Bus Pirate: | ||
+ | * it uses a native USB interface instead of a USB to UART chip, allowing for greater speeds and to be flashed as other devices (using the clone firmwares). The [[http:// | ||
+ | * it has an adjustable voltage regulator for the pull-up resistors, allowing 1.6-5.0V logic | ||
+ | * it supports more protocol in hardware (eMMC, SMBus, I2S, ...) | ||
+ | * it also supports other protocols in software | ||
+ | * it supports higher voltage/ | ||
+ | * no need to always have the [[http:// | ||
+ | * it comes in a nice and compact case (and some other accessories like USB cable and I/O cable) | ||
+ | * it supports CTRL+C and CTRL+D on top of the [[http:// | ||
+ | * and probably the most important aspect: it is actively developed and has user support | ||
+ | |||
+ | The Bus Pirate is not the only alternative though. | ||
+ | There is also the [[https:// | ||
+ | And there is the [[http:// | ||
- | ==== presentation ==== | + | But BusVoodoo will never replace dedicated tools (USB to UART dongle, JTAG adapter, flash programmer, ...) or prevent from using a development board to control all nifty protocol details. |
+ | The BusVoodoo is more of a quick all-in-one first approach tool. | ||