SLAA457B September   2013  – October 2018 MSP430F5500 , MSP430F5501 , MSP430F5502 , MSP430F5503 , MSP430F5504 , MSP430F5505 , MSP430F5506 , MSP430F5507 , MSP430F5508 , MSP430F5509 , MSP430F5510 , MSP430F5513 , MSP430F5514 , MSP430F5515 , MSP430F5517 , MSP430F5519 , MSP430F5521 , MSP430F5522 , MSP430F5524 , MSP430F5525 , MSP430F5526 , MSP430F5527 , MSP430F5528 , MSP430F5529 , MSP430F5630 , MSP430F5631 , MSP430F5632 , MSP430F5633 , MSP430F5634 , MSP430F5635 , MSP430F5636 , MSP430F5637 , MSP430F5638 , MSP430F5658 , MSP430F5659 , MSP430F6630 , MSP430F6631 , MSP430F6632 , MSP430F6633 , MSP430F6634 , MSP430F6635 , MSP430F6636 , MSP430F6637 , MSP430F6638 , MSP430F6658 , MSP430F6659 , MSP430FG6425 , MSP430FG6426 , MSP430FG6625 , MSP430FG6626

 

  1.   Starting a USB Design Using MSP430™ MCUs
    1.     Trademarks
    2. 1 USB and the Art of Making Something Complex Look Simple
      1. 1.1 What Has Made USB So Successful?
      2. 1.2 But It Looks So Simple!
      3. 1.3 TI's Approach for MSP430 USB
    3. 2 MSP430 USB Silicon
      1. 2.1 How MSP430 Devices are Documented
      2. 2.2 USB-Equipped MSP430 Derivatives
      3. 2.3 MSP430 USB Module
      4. 2.4 USB Certification of the Silicon
    4. 3 Software
      1. 3.1 USB Developers Package: Overview
      2. 3.2 USB API Stacks: Features
      3. 3.3 MSP430 USB Descriptor Tool
      4. 3.4 Host Software, and the Java HID Demo App
      5. 3.5 USB API Programmer's Guide and Examples Guide
      6. 3.6 MSP430 USB Field Firmware Upgrade Tools
    5. 4 MSP430 USB Hardware Design
      1. 4.1 TI Reference Design for USB Interface
      2. 4.2 Selecting a Power Configuration
      3. 4.3 Selecting a Clock Configuration
        1. 4.3.1 Choosing a Source
        2. 4.3.2 Choosing a Frequency
      4. 4.4 Other Reference Design Commentary
    6. 5 MSP430 USB Software Design
      1. 5.1 How to Choose a USB Device Class
      2. 5.2 How to Select a Vendor ID (VID) and Product ID (PID)
        1. 5.2.1 What are the VID and PID?
        2. 5.2.2 How are They Chosen (or Obtained)?
        3. 5.2.3 Using VIDs and PIDs During Development
    7. 6 Getting Started: Evaluating MSP430 USB
      1. 6.1 Software Development Environments
      2. 6.2 F5529 LaunchPad Development Kit
      3. 6.3 MSP430F5529 USB Experimenter's Board
      4. 6.4 FET Target Boards
    8. 7 More Information
  2.   A USB Glossary
  3.   Revision History

USB API Stacks: Features

The API is the foundation of the MSP430 USB Developers Package. It supports three of the most common USB device classes:

  • Communications Device Class (CDC): (ACM class) Results in a virtual COM port on the host
  • Human Interface Device class (HID): The MSP430 USB Developers Package defines four subtypes:
    • Datapipe (an unformatted general-purpose interface resembling CDC)
    • Mouse
    • Keyboard
    • Custom
  • Mass Storage Class (MSC): When the host sees an MSC interface, it begins mounting a storage volume from it.

These classes provide a good selection for general-purpose use. See Section 5.1 for a discussion of how to choose your interface.

Features of the API include:

  • Small peripheral footprint (only the USB module and XT2 oscillator)
  • Small memory footprint
  • Can use either the DMA or CPU to move data
  • Provided as source code
  • BSD-licensed, providing maximum flexibility

CDC and HID-Datapipe provide the developer a simple data exchange interface. As a brief example of this interface, a simple application follows.

VOID main(VOID) { // Init clocks, power, ports WDT_A_hold(WDT_A_BASE); PMM_setVCore(PMM_BASE, PMM_CORE_LEVEL_2); initPorts(); initClocks(8000000); // CPU frequency, in Hz initTimer(); // Set up one-second intervals to wake from LPM0 USB_setup(TRUE,TRUE); // USB API call; initializes USB and connects to the host __enable_interrupt(); while (1) { __bis_SR_register(LPM0_bits + GIE); // Enter LPM0 sleep if (cdcSendDataInBackground(helloWorldStr, 12, CDC0_INTFNUM, 1000)) { handleFailedSend(); // Might fail if cable is disconnected, bus is // busy, or host has become unresponsive } } }

This application wakes up once per second (using a timer interrupt, not shown) and sends a string over USB to a virtual COM port on the host.

To send data over a CDC interface (to a virtual COM port), you can simply build the interface with the Descriptor Tool, prepare your data, and call the API construct function cdcSendDataInBackground(), which accepts these parameters:

  • Data buffer
  • The buffer's size
  • Which CDC interface
  • The number of retries before the attempt is considered a failure.

This is only one simple example; much more is possible with the USB API. See the MSP430 USB API Programmer's Guide and examples in the MSP430 USB Developers Package for more information.