CuVoodoo

the sorcery of copper

User Tools

Site Tools


busvoodoo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
busvoodoo [2017/12/23 11:16] – [features] correct power output kingkevinbusvoodoo [2018/03/11 22:29] (current) – delete page kingkevin
Line 1: Line 1:
-{{ :busvoodoo:mini_light_adapter.jpg?300|BusVoodoo adapter}} 
- 
-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) 
- 
-[{{ :busvoodoo:mini_full_kit.jpg?360|BusVoodoo full}}] 
-[{{:busvoodoo:mini_light_kit.jpg?400|BusVoodoo light}}] 
- 
-{{ :busvoodoo:mini_light_adapter.jpg?250|BusVoodoo adapter}} 
-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 [[#firmwares|special purpose firmwares]] 
- 
-{{ :busvoodoo:mini_adapter_ports_io.jpg?250|I/O connector}} 
-I/O connector: 
-  * 2x5 pins header (IDC, 2.54 mm pitch) 
-  * pinout (from top left to bottom right): 
-    - ground 
-    - 5 V output (up to 400 mA), software switchable 
-    - 3.3 V output (up to 250 mA), software switchable 
-    - 0 to 4.8V adjustable voltage output (up to 450mA), 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) 
- 
-{{ :busvoodoo:mini_adapter_ports_rscan.jpg?250|RS/CAN connector}} 
-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/RS-422 port (not terminated) 
-  * CAN port (not terminated) 
- 
-{{ :busvoodoo:mini_board_prog.jpg?250|programming connector}} 
-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 [[#flashing|flash over USB]] (short to the neighbouring 5V pin while powering up) 
-  * UART port to use the BusVoodo as protocol bridge (it provides the same menu as over USB), or [[#flashing|flash using the embedded bootloader]] 
-  * SWD port for [[#flashing|flashing]] or developing firmware 
- 
-=== not the World's first ever: === 
- 
-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 [[#protocols|protocol]], which makes it quite versatile. 
-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. 
-And if you want to debug high-speed protocols you will need a complete different class of adapter. 
- 
-=== 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). 
- 
-{{ :busvoodoo:io_pinout.png?700|I/O pinout}} 
- 
-^ 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 | | 
-| 1-Wire | software | | 
-| MicroWire | software | | 
-| WS2812b | sofware | dedicated LED light protocol | 
-| DHT11/DHT22 | software | dedicated humidity/temperature sensor protocol | 
-| TM1637 | software | dedicated 7-segment display protocol | 
-| IR | software | various InfraRed protocols, planned | 
-| JTAG | software | planned | 
-| SWD | software | planned | 
-| cJTAG | software | planned | 
- 
-No matter which protocol you are using, the hardware has been designed to provide one additional UART port 
- 
-{{ :busvoodoo:mini_adapter_ports_rscan_pin.jpg?300|RS/CAN pinout}} 
-The full version also supports additional higher voltage and differential protocols. 
- 
-^ protocol ^ support ^ comment ^ 
-| 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 | 
- 
- 
-note: the status of each protocol support is not documented yet (WiP) 
-===== 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://en.wikipedia.org/wiki/USB_communications_device_class|CDC ACM]] profile). 
-Just connect to it using your favorite serial terminal and off you go. 
-But since the BusVoodoo hardware uses native USB, it can be [[#flashing|re-flashed]] to clone other USB device. 
-This allows to convert the BusVoodoo into a dedicated/task specific adapter. 
- 
-alternative firmwares: 
-  * USBtinyISP or AVRISP to program Atmel AVR MCUs 
-  * [[https://github.com/blacksphere/blackmagic/wiki|Black Magic Probe]] for JTAG and SWD programming 
-  * PICkit2 to program PIC MCUs, using the high voltage output of the full version 
-  * AVR Dragon to rescue Atmal AVR MCUs using the [[http://www.atmel.com/webdoc/avrdragon/avrdragon.hvsp_description.html|High Voltage Serial Programming (HSVP)]], using the high voltage output of the full version 
-  * logic analyzer (low speed, with 6 digital and 1 analog channels) 
- 
-note: the alternative firmware are not implemented yet 
- 
-===== software & hardware ===== 
- 
-If you want to have a detailed look at the technology underneath you can have a look at the: 
-  * latest firmware release 
-  * [[https://git.cuvoodoo.info/busvoodoo_firmware/|source code for the firmware]] 
-  * {{:busvoodoo:busvoodoo_hardware-latest.zip|latest hardware release}} ([[busvoodoo_history|all releases]]) 
-  * [[https://git.cuvoodoo.info/busvoodoo_hardware/|source schematic and board layout]] 
- 
-If you find any issue, [[busvoodoo@cuvoodoo.info|let me known]]. 
-And if you are not happy with the state, feel free to fork it (according to the licences). 
- 
-===== flashing ===== 
- 
-The BusVoodoo is pretty much unbrickable. 
-It provides several flashing methods: 
-  - the main BusVoodoo firmware provides USB Device Firmware Upgrade (DFU) capabilities. [[http://dfu-util.sourceforge.net/|dfu-util]] will automatically switch the device from runtime mode to DFU mode and flash the firmware. 
-  - 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#embedded_bootloader|flash]] the DFU bootloader (or main application) over the serial port on the programming header. :!: The embedded UART bootloader uses the internal RC oscillator. If this is defective (e.g. part not coming from a trustworthy distributor) this method will not work 
-  - finally you can use the SWD pins on the programming connector to [[stm32f1xx#swj|flash using SWD]], provided you have and SWD adapter. This also allows to properly debug the firmware. :!: For some unknown reason sometimes after power-up the SWD adapter will not be able to find the micro-controller. Briefly reset the micro-controller by shorting RST to ground using tweezers (follow the RST indication on the board). From there on it will always be detected. 
-  - if none of the above methods work, the device is definitely bricked (or defective). congratulations. 
- 
-{{:busvoodoo:board_pinout_bottom.png?0x200|DFU contacts}} 
-{{:busvoodoo:board_pinout_top.png?0x200|ICP and RST contacts}} 
-{{:busvoodoo:mini_board_prog_pin.jpg?0x200|programing pinout}} 
- 
- 
-===== origin ===== 
- 
-{{ :busvoodoo:mini_adapters.jpg?0x160|assortment of adapters}} 
- 
-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#blue_pill|blue pill]]) with a general purpose micro-controller (a feature-rich [[stm32f1xx|STM32F1]]). 
-This comes with peripherals for the major protocols (UART, SPI, I2C) and for the rest I just to implement them is software ([[https://git.cuvoodoo.info/stm32f1/tree/lib|here my collection]]).\\ 
-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://github.com/npat-efault/picocom|picocom]] for Linux, [[http://www.putty.org/|putty]] for Windows), configure the protocol using the built-in menu, are ready you are to communicate with other devices. 
- 
-===== 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. 
- 
-{{ :busvoodoo:mini_bpv3.jpg?0x150|Bus Pirate v3b}} 
- 
-The closest alternative to the BusVoodoo is probably the [[http://dangerousprototypes.com/docs/Bus_Pirate|Bus Pirate]], and this is actually the device I used for a long time before I decided to make my own because the shortcomings piled up. 
-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://dangerousprototypes.com/docs/Features_overview|most common protocol]] 
-  * 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://dangerousprototypes.com/docs/Bus_Pirate_v4_design_overview|Bus Pirate v4]] also comes with native USB, but it never reached maturity 
-  * 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/differential protocols (RS-232, RS-485, RS-422, CAN) (not the light version) 
-  * no need to always have the [[http://dangerousprototypes.com/docs/Bus_Pirate_user_interface|Bus Pirate connector description]] at hand as the BusVoodoo shows the pinout within the menu and on the OLED screen (not in the light version) 
-  * 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://dangerousprototypes.com/docs/Bus_Pirate_user_interface|VT-100]] commands 
-  * and probably the most important aspect: it is actively developed and has user support 
- 
-The Bus Pirate and BusVoodoo are only designed for low speed protocols. 
-There is also the [[https://greatscottgadgets.com/greatfet/|GreatFET]], supporting high speed protocols, but is more of a development board than a ready to use tool. 
-And there is the [[http://datenkrake.org/|Datenkrake]] for even higher speed protocols (using an FPGA), but is also more of a development board than a ready to use tool. 
- 
-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. 
-