chipKIT® Development Platform

Inspired by Arduino™


Created Mon, 04 Aug 2014 02:46:21 +0000 by Jermcb


Mon, 04 Aug 2014 02:46:21 +0000

Can the chipkit board with the digilent ethernet shield (that has the USB on it) be set-up to be a Mass Storage Device and an HID device at the same time (Like the microchip application libraries can do)?

Thank you,


Mon, 04 Aug 2014 15:29:51 +0000

This is a fairly complex question and requires knowledge of the USB spec to understand exactly how to do that. Digilent just routes the D+/D- and USBID signals to the USB connectors pretty much directly from the PIC32, so pretty much if the PIC32 can do it, our boards support it.

I assume in your question you are saying that the PIC32 is both a MSD (device) and HID (device) and not acting as a MSD (host). The answer would be yes, the PIC32 just responds to the host saying it supports 2 device interfaces, MSD and HID. It is all in how you set up your USB device tables and USB endpoints, and how you respond to the USB Host during enumeration. To do this, a good knowledge of the USB spec is needed. The details is beyond my personal experience. The Network Shield; or any of our boards that support USB, will allow this as this is a software thing... not really a hardware thing.

If I read more into your question than I think you are asking... Our boards also support USB OTG which allows you to dynamically negotiate between being a Host or a Device on the fly. However, you must use the Micro A/B connector on the bottom of the board, AND put the jumper in the device/OTG position.

Jacob Christ

Mon, 04 Aug 2014 16:10:11 +0000

You can alwasy use mplab with the chipKIT boarda and bypass the chipKIT functionality.



Fri, 08 Aug 2014 13:12:15 +0000

Thank you for the responses. I know that the chipkit board has the hardware to do it (direct connection to the PIC.)

I was curious if the USB libraries would provide the "easy wrapper" to do this, rather than doing all the low level coding myself.

I was talking about making the chipkit board USB MSD (device) and HID (device).

If the chipkit libraries do not support this, that is fine. Using chipkit really makes projects very easy. I was just wondering if it could help me with this one...

Thank you.