USB Human Interface Device Communication with PIC Microcontroller – MikroC

Figure 1: USB Communication Circuit Diagram

The HID device class code is “0x03, this class is used for devices operated by human, devices like keyboard, mouse, joystick and so forth.
The advantage of HID devices is that, they don’t require to install drivers, in most modern operating systems, the device will be detected without any problem.
MikroC Pro for PIC provides USB HID library that make it easy for a host device to communicate with a slave device on a USB bus.

Before you can go through this article, please read the USB Communication with PIC Microcontroller article.

USB Human Interface Device Communication with PIC Microcontroller - MikroCDescriptors

When a new USB device is plugged into a bus, the USB host uses address 0 to ask basic information from the device. Then the host assigns it a unique USB address. After the host asks for and receives further information about the device, such as the name of the manufacturer, device capabilities, and product ID, two-way transactions can only begin.
All USB devices have a hierarchy of descriptors that describe various features of the device like the manufacturer ID, the version of the device, the version of USB it supports, what the device is, its power requirements, and so forth. The most common USB descriptors are:

  • Device descriptors
  • Configuration descriptors
  • Interface descriptors
  • HID descriptors
  • Endpoint descriptors

The USB HID protocol allows a personal computer to recognize a USB HID connected to it without the need to create a device driver, this is the same like when you connect a USB optical mouse or a USB keyboard you don’t need to install drivers for that. Windows operating system will load the required drivers, all that is needed is to to supply the PC with a descriptor file containing some information from the device like Vendor ID (VID), Product ID (PID), Manufacture name and so forth.

To create a descriptor file in mikroC Pro, open your mikroC Pro project go to Tools menu and click HID Terminal then click the Descriptor tab.

Figure 2: Creating a Descriptor file

–> VID (vendor ID) and PID (product ID): Each USB device must have a unique set of PID and VID codes.
The default PID and VID values can be used for development and experimental purposes only but to release your own USB devices you must purchase a unique VID and PID from the USB specifications organization. The default VID is 1234 and PID 0001

USB Human Interface Device Communication with PIC Microcontroller - MikroC Schematic–> Input and Output data length: This is the input and output buffer size. the default is 64 character.
–> Vendor Name and Product Name: here you can write your vendor name and product name.
–> Bus power: Tick this option to give a permission for your PIC to take its power from PC.
–> Select the correct compiler: mikroC
–> Click on “Save descriptor” and save it in any place you want, in our example we are going to save it in the same directory as the project and you can save it with any name you like.
–> Now you need to include your descriptor file to your project: In project manager, click on Add file to project, browse to the location where you saved your descriptor file, select it and click Open.


For more detail: USB Human Interface Device Communication with PIC Microcontroller – MikroC

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us: