Difference between revisions of "USB Communication using PIC microcontrollers"

From Mech
Jump to navigationJump to search
Line 2: Line 2:


==USB Overview==
==USB Overview==

Universal Serial Bus, or USB, is a very common method of communication between electronic devices. USB is universal, meaning that it's standard across all electronic devices, serial, meaning that data is transmitted on only one data line one bit at a time, and is a bus, meaning that all devices are connected through the same parallel electronic wires and therefore require addresses. A simple USB connection requires a host and a device. The host initiates all communication, assigns device addresses, and controls the flow of the data line in the connection. For our purposes, the USB host will be the PC and the USB device will be a PIC chip.

There are many different speeds associated with USB. USB 1.0 introduced data rates of 1.5 Mbits/s ('''Low-Speed''') and 12 Mbits/s ('''Full-Speed'''). With USB 2.0 and 3.0, data rates of 480 Mbits/s ('''Hi-Speed''') and 5 Gbits/s ('''Super-Speed'''), were added respectively. PIC chips have hardware capable of full speed USB.

===Hardware===

A USB cable has 4 wires: power (red), ground (black), D+ (green), and D- (white). You may notice that many USB plugs and receptacles have 5 pins. This fifth pin is called ID, and is often not connected, but has been added to the specifications for use with USB-OTG, or On-The-Go. OTG allows devices to also act as a host. Many PIC chips are compatible with USB-OTG communication, but we will not discuss this topic any further at this point.

The two data lines, D+ and D-, are used in a way to maximize the number of conditions. The electrical state of these lines gives signals about the conditions of the connection.

*Detached State, or SE0 - device is unplugged, both data lines are low, pulled down by 15 kOhm resistors within the host hardware.
*Attached State, Idle State, or J State - the device pulls up the D+ line (for a high-speed device) when it is attached.
*K State - opposite polarity from J State. To communicate, the host or device alternates the device between the J and K states in specific patterns.
*Illegal State, or SE1 - both data lines are high. If this happens, there is a hardware problem with the USB link.

All of these details are handled by the USB modules themselves, and the developer seldom needs to know these things. However, they are useful to those who are debugging hardware issues. More information about USB can be found at the [http://www.usbmadesimple.co.uk/index.html USB Made Simple] site.


==Microchip USB Stack==
==Microchip USB Stack==

Revision as of 13:09, 21 June 2012

***Under Construction***

USB Overview

Universal Serial Bus, or USB, is a very common method of communication between electronic devices. USB is universal, meaning that it's standard across all electronic devices, serial, meaning that data is transmitted on only one data line one bit at a time, and is a bus, meaning that all devices are connected through the same parallel electronic wires and therefore require addresses. A simple USB connection requires a host and a device. The host initiates all communication, assigns device addresses, and controls the flow of the data line in the connection. For our purposes, the USB host will be the PC and the USB device will be a PIC chip.

There are many different speeds associated with USB. USB 1.0 introduced data rates of 1.5 Mbits/s (Low-Speed) and 12 Mbits/s (Full-Speed). With USB 2.0 and 3.0, data rates of 480 Mbits/s (Hi-Speed) and 5 Gbits/s (Super-Speed), were added respectively. PIC chips have hardware capable of full speed USB.

Hardware

A USB cable has 4 wires: power (red), ground (black), D+ (green), and D- (white). You may notice that many USB plugs and receptacles have 5 pins. This fifth pin is called ID, and is often not connected, but has been added to the specifications for use with USB-OTG, or On-The-Go. OTG allows devices to also act as a host. Many PIC chips are compatible with USB-OTG communication, but we will not discuss this topic any further at this point.

The two data lines, D+ and D-, are used in a way to maximize the number of conditions. The electrical state of these lines gives signals about the conditions of the connection.

  • Detached State, or SE0 - device is unplugged, both data lines are low, pulled down by 15 kOhm resistors within the host hardware.
  • Attached State, Idle State, or J State - the device pulls up the D+ line (for a high-speed device) when it is attached.
  • K State - opposite polarity from J State. To communicate, the host or device alternates the device between the J and K states in specific patterns.
  • Illegal State, or SE1 - both data lines are high. If this happens, there is a hardware problem with the USB link.

All of these details are handled by the USB modules themselves, and the developer seldom needs to know these things. However, they are useful to those who are debugging hardware issues. More information about USB can be found at the USB Made Simple site.

Microchip USB Stack

USB Enumeration

HID Descriptors