busvoodoo
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
busvoodoo [2017/12/22 16:55] – [protocols] add max. speedr kingkevin | busvoodoo [2018/03/11 22:29] (current) – delete page kingkevin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | The BusVoodoo is a multi-protocol debugging adapter. | ||
- | This tool allows to quickly communicate with various other electronic devices. | ||
- | |||
- | ===== features ===== | ||
- | |||
- | 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 case: 56.0x27.7x14.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) | ||
- | |||
- | programming connector: | ||
- | * on the board (in the bottom left corner) there is a 2x4 connector (2 mm pitch) | ||
- | * DFU pin to force the DFU mode and [[# | ||
- | * UART port to use the BusVoodo as protocol bridge (it provides the same menu as over USB), or [[# | ||
- | * SWD port for [[# | ||
- | |||
- | === 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 BusVoodoo implements numerous low-speed protocols. | ||
- | The hardware is only designed for signals speeds up to 20 MHz. | ||
- | 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 ===== | ||
- | |||
- | By default the BusVoodoo adapter comes with the main BusVoodoo firmware. | ||
- | When connected to USB it is detected as a serial device (using the standard [[https:// | ||
- | Just connect to it using your favorite serial terminal and off you go. | ||
- | But since the BusVoodoo hardware uses native USB, it can be [[# | ||
- | 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 | ||
- | |||
- | ===== flashing ===== | ||
- | |||
- | The BusVoodoo is pretty much unbrickable. | ||
- | It provides several flashing methods: | ||
- | - the main BusVoodoo firmware provides USB Device Firmware Upgrade (DFU) capabilities. [[http:// | ||
- | - if switching from runtime to DFU mode does not work, connect to the BusVoodoo using the serial terminal and switch to DFU mode using the menu | ||
- | - if the BusVoodoo does not appears as USB serial device, there is still a serial port on the debugging connector. Connect to it using an USB to serial adapter and switch to DFU mode using the menu | ||
- | - if the main firmware is broken and the menu is not accessible over the USB or serial port, short the 5V and DFU pins on the programming connector (follow the DFU indication on the board) while powering the device. This will force booting the DFU bootloader instead of the main application | ||
- | - if the DFU bootloader (or USB) is broken, short the ICP pad to ground using twizzers (follow the ICP indication on the board) while powering the device. This will start the STM32 embedded UART bootloader, allowing you to [[stm32f1xx# | ||
- | - finally you can use the SWD pins on the programming connector to [[stm32f1xx# | ||
- | - if none of the above methods work, the device is definitely bricked (or defective). congratulations. | ||
- | ===== history ===== | ||
- | |||
- | 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 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:// | ||
- | 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. | ||
- | |||
- | The BusVoodoo is a USB adapter with pre-programmed support for numerous protocols, allowing to communicate with other device without hassle. | ||
- | It appears as a serial device. | ||
- | Use a terminal emulation program to connect to it (e.g. [[https:// | ||
- | |||
- | ===== 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't) | ||
- | * 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:// | ||
- | |||
- | 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. | ||
- | |||