SLAA453A january 2011 – may 2023
The USB Human Interface Device (HID) class is one of the most widely-supported device classes among operating systems. Although originally developed for mice and keyboards, it has many advantages in general-purpose usage.
A common choice for general-purpose USB applications is the virtual COM port, which can be implemented using the Communications Device Class (CDC). COM ports are easy to implement on host platforms, and they are well understood by developers. A downside is that USB virtual COM port solutions for Windows machines require the end user to go through a device installation process. In addition to being a minor hassle, this process can go wrong if the user chooses the wrong options. Further, some users in corporate environments do not have administrative rights, so they are not able to do device installations without the help of a network administrator. In contrast, an HID device loads silently, bypassing all these issues.
HID does have a few disadvantages. Compared to virtual COM ports, many software engineers are unfamiliar with its use. HID relies on "reports" to carry the data, and often these complex formats provide no real value to a general-purpose application. The bandwidth on basic HID implementations is limited to 64KB/sec.
To make up for these disadvantages, TI provides a Windows HID API and demo project. It is streamlined for use with the datapipe interface that can be implemented by the MSP430 HID API stack, which eliminates the need to create HID reports. It works with composite HID devices, allowing multiple HID interfaces to easily be put in composite within the USB device, multiplying the bandwidth.
Used together, the MSP430 HID API stack and Windows HID API form an end-to-end solution that is more advantageous than virtual COM ports for many general-purpose applications.
For the USB support software for MSP430 MCUs, see the MSP430 USB Developers Package at https://www.ti.com/tool/MSP430USBDEVPACK.