Review: Curiosity HPC development board


Today it’s review day. I have on my workbench the newest Curiosity HPC board from Microchip. With two DIP sockets on board (28 and respectively 40 pins) and two mikroBUS sockets, the new Curiosity High Pin Count board (part no. DM164136) looks as a nice development board for those who want a bit more than the Xpress and the Curiosity boards can offer, but still at a low cost.

This article is more than two years old and might contain obsolete information; it is still kept here for informational purposes.
Curiosity HPC development board

Curiosity HPC development board

Choice of microcontroller

If you are familiar with the first Curiosity board, that with part no. DM164137 you already know that it supports only 8, 14 and 20 pin devices.


The Curiosity High Pin Count (HPC) Development Board supports 28 and 40 pin, 8-bit PIC MCUs. Initially, it comes with a PIC16F18875, a microcontroller from the Enhanced Mid-range Core family, with 14kb of FLASH memory for program code, and with 1024 bytes of data memory. Other 28 or 40-pin 8-bit PIC microcontrollers with low voltage programming capability can be used too. A complete list of the supported microcontrollers can be found on the Curiosity HPC design center page:

  • PIC16F151X (PIC16F1512, PIC16F1513, PIC16F1516, PIC16F1517, PIC16F1518, PIC16F1519)
  • PIC16F171X (PIC16F1713, PIC16F1716, PIC16F1717, PIC16F1718, PIC16F1719­)
  • PIC16F178X (PIC16F1783, PIC16F1784, PIC16F1786, PIC16F1787, PIC16F1788, PIC16F1789)
  • PIC16F188XX (PIC16F18854, PIC16F18855, PIC16F18856, PIC16F18857, PIC16F18875, PIC16F18876, PIC16F1887)
  • PIC16F193X (PIC16F1933, PIC16F1934, PIC16F1936, PIC16F1937, PIC16F1938, PIC16F1939)
  • PIC18FXXK20 (PIC18F23K20, PIC18F24K20, PIC18F25K20, PIC18F26K20, PIC18F43K20, PIC18F44K20, PIC18F45K20, PIC18F46K20)
  • PIC18FXXK40 (PIC18F24K40, PIC18F25K40, PIC18F27K40, PIC18F47K40)

In total, there are 42 supported microcontrollers, 30 from different PIC16F families, and 12 from PIC18F families.

Two side notes regarding the supported microcontrollers:

First, when working with microcontrollers from the  PIC16F188XX range, one might find that PKOB cannot be selected under hardware tools. This issue is fixed in the latest MPLABX-v2016-11-09 build. Also, it works fine with MPLAB Xpress.

Second, when working with PIC18FXXK20 devices, you will receive “Invalid Device” ID & “Failed to program device” errors. This happens because these microcontrollers cannot work with PKOB. The solution is to use a PICkit 3 to program the K20s devices.

Considering the range of supported microcontrollers, I view this board as a complement to the older Curiosity. If you own both boards you can explore a wider range of microcontrollers, and certainly you can do a lot more with two mikroBUS sockets.

And if you look closely at the PIC16F18875, it’s from the same family as the PIC16F18855 featured on the Xpress board. The differences are in the number of I/O pins (36 vs 25) and the number of A/D channels (35 vs 24). This means that all code written for the Xpress demo board can run on the Curiosity HPC with only minor changes in the pin configuration.

mikroBUS sockets

Here comes the fun part. The Curiosity HPC comes with two mikroBUS sockets, so this board can be used in projects with increased complexity. Of course, one can take a look at my tutorial on stacking click boards – it applies to the Curiosity HPC too, if you feel that two mikroBUS sockets are not enough.

Another nice thing is the presence of solder jumpers (solder blobs) for the connection between the PIC microcontroller and the different hardware on the board. One can disable the LEDs, the buttons, the potentiometer, and, very important, it can reconfigure the connections to the mikroBUS sockets. That is a nice feature, especially for older microcontrollers without PPS (Peripheral Pin Select). Newer microcontrollers with PPS can be configured from software, so you can leave your soldering iron to cool down.

PKOB (PICkit On Board)

Same as in the older Curiosity board, programming is done via the PKOB, or PICkit On Board. That’s nothing else but a stripped down version of a PICkit 3. No circuits to generate the target voltage and a different firmware.

Curiosity HPC: PKOB detail

Curiosity HPC: PKOB detail

A big difference here as compared to the Xpress board: the PKOB doesn’t provide any USB-UART functionality. You will need a USB-UART click, plus a second USB port in your computer. Also, you will have to sacrifice one of the mikroBUS sockets (not funny).

Powering the Curiosity HPC board

The Curiosity HPC board is designed to receive power only from the USB bus. There’s a 500mA thermal protection, so this board offers some degree of protection for your precious USB ports. Nevertheless, using a USB powered hub is always a good idea. If things go wrong, it’s much cheaper to throw a USB hub in the garbage bin (OK, be nice to the environment, recycle it) rather than replacing your motherboard.

The Curiosity HPC board offers the choice of 5V or 3.3V power for the target microcontroller, via a selection jumper. The 3.3V power supply is implemented with an MCP1703 LDO regulator, able to provide up to 250mA. I’d say this is enough for most click™ boards.

You will have to use some external power supply for click™ boards that perform motor control – regardless of the type of motor. All other click™ boards should work fine with just the USB power.

One more thing, if you look closely on the schematic of the PKOB, you’ll notice that it uses a PIC 24FJ256GB106, same as in PICkit 3. That microcontroller works on 3.3V only; thus you will find a pair of SN74LVC1T45DCKR between the PKOB and the target microcontroller. With this approach, it will work fine, regardless of the voltage selection of the target microcontroller.

Code examples

Code examples for each of the supported microcontrollers are provided on the Curiosity HPC page. Some examples are common to all supported microcontrollers: Hello World (turns one LED on), Blink, Rotate, Analog to Digital Conversion, Variable Speed Rotate, Timers, Interrupts and Sleep/Wakeup.

Some code examples are specific to certain microcontroller families:

  • High Endurance Flash – on PIC16F151X
  • EEPROM – on PIC16F178X, PIC16F193X, PIC18FXXK20, PIC16F188XX, PIC18FXXK40 microcontrollers
  • Pulse Width Modulation – on PIC16F188XX, PIC18FXXK40

I took the time and run all the code examples on a PIC16F18875. I think that one can easily run a microcontroller lab using only the provided code examples, without anything else. And there are the mikroBUS sockets waiting for more complex applications…

Besides this, many of the Xpress board code examples will work with the Curiosity HPC too. All you need is a little reconfiguration in MCC to match the new pin settings. There is also some code in MPLAB Xpress examples area, so it’s also a good place to start.

1 2


  1. Avatar
    Hugo Costelha on

    You state that there is no support for the PIC18FXXK50 PICs, and I also recall seeing that previously in the Microchip site, but I can no longer find that information.
    Can you provide a link with official information from Microchip confirming that?

    Best regards

    • Avatar

      Hello Hugo,

      It looks that the web page with the list of supported microcontrollers is no longer available on website 🙁 On the Curiosity HPC page ( you can only find that it “Supports 28 or 40-pin 8-bit PIC® Microcontrollers with low voltage programming capability”.

      Furthermore, if you look into the provided HPC demo code, you will find there are no code examples for PIC18FXXK50 MCUs. Only K20, K22, and K40 families have code examples.

      Oh, and if you take a look into the PIC18FxxK50, you’ll notice that some pins are dedicated to the USB controller rather than being general I/O pins as in PIC18FxxK40. For example, in PIC18F45K40 we have pin RC3 (SCL) and pin RC4 (SDA) used for I2C communication. Those pins are hardwired to the SCL and SDA lines on the click sockets. On PIC 18F45K50, instead of RC3, you will find VUSB_3V3, instead of pin RC4 you will have USB_D-, and instead of pin RC5 you will have USB_D+. That makes it incompatible with click boards that use I2C communication.

Leave A Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.