6

V-USB

 2 years ago
source link: https://www.obdev.at/products/vusb/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V-USB

V-USB is a software-only implementation of a low-speed USB device for Atmel’s AVR® microcontrollers, making it possible to build USB hardware with almost any AVR® microcontroller, not requiring any additional chip.

Features

  • Fully USB 1.1 compliant low-speed device, except handling of communication errors and electrical specifications.
  • Example projects demonstrate device and host driver implementations on Linux, Mac OS X and Windows.
  • Supports multiple endpoints: one control endpoint, two interrupt/bulk-in endpoints and up to 7 interrupt/bulk-out endpoints. (Note that the USB specification forbids bulk endpoints for low speed devices, but V-USB supports them to some degree.)
  • Transfer sizes up to 254 bytes by default, more as configuration option.
  • Comes with freely usable USB identifiers (Vendor-ID and Product-ID pairs).
  • Runs on any AVR microcontroller with at least 2 kB of Flash memory, 128 bytes RAM and a clock rate of at least 12 MHz.
  • No UART, timer, input capture unit or other special hardware is required (except one edge triggered interrupt).
  • Can be clocked with 12 MHz, 15 MHz, 16 MHz 18 MHz or 20 MHz crystal or from a 12.8 MHz or 16.5 MHz internal RC oscillator.
  • High level functionality is written in C and is well commented.
  • Only about 1150 to 1400 bytes code size.
  • You can choose the License: Open Source or commercial. Click here for details.

Hardware

This diagram shows a typical circuit for a bus powered device.

D1 and D2 are a low cost replacement for a low drop 3.3 V regulator chip, such as the LE33. Operating the AVR at higher voltages exceeds the common mode range of many USB chips. If you need to run the AVR at 5 V, add 3.6 V zener diodes at D+ and D- to limit the voltage.

For a prototyping board, please see metaboard.

Documentation Resources

Benefits over Alternative Solutions

Why not choose a microcontroller with built-in USB hardware? There are several of these available (see http://janaxelson.com). Or combine the microcontroller of your choice with a USB chip?

Advantages over Microcontrollers with USB Hardware

  • Standard AVR controllers are usually easier to obtain.
  • Most of the controllers with USB support are only available in SMD, which is almost impossible to handle for hobbyists.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • A good free ANSI-C compiler (GNU gcc) and a free development system for Windows (WinAVR) are available for AVR.
  • AVR controllers are faster than most of the controllers with integrated USB and cost less.
  • Stand-alone operation: Some of the USB controllers download their firmware from the host computer into RAM. They don’t work without connection to the host.
  • AVR controllers have on-chip EEPROM.

Advantages over separate USB Peripheral

  • No additional cost.
  • No additional hardware complexity: simpler PCB, less failures.
  • More freedom in the choice of USB descriptors.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • Little hardware resources used: only two to three I/O pins.
  • USB chips are often hard to obtain.

Advantages over other Firmware-Only Implementations

A similar driver for the AVR series of microcontrollers is available from Igor Češko. Our USB driver has the following advantages over Igor’s driver:

  • All customizable code written in ANSI-C and thus easier to maintain.
  • Modular concept: easier to integrate into existing designs.
  • Slightly smaller code size in spite of high level language modules.
  • Faster: All encoding/decoding (USB requires NRZI coding and bit stuffing) is done in real-time, not in the main loop after storing away the raw data stream.
  • More endpoints, USB descriptors can be better customized.
  • V-USB comes with a free shared Vendor- / Product-ID pair.
  • The level of standards conformance is documented (description of limitations and potential problems).
  • Licensed under the terms of the GNU General Public License or alternatively under a commercial license.

Dick Streefland has stripped down an older version of V-USB to the basics. His code is easier to read and understand, but lacks some of the features found in V-USB:

  • V-USB supports up to 4 endpoints. This allows implementing devices conforming to the HID or CDC device class.
  • V-USB passes the tests in usb.org’s test utility.
  • V-USB supports many different clock rates, some even with the internal RC oscillator.

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK