18 Replies Latest reply on Aug 27, 2015 12:42 AM by czabhinav

    Review: PIC32 Ethernet Starter Kit

      I have received a PIC32 Ethernet Starter Kit from Farnell for road testing. The PIC32 Ethernet Starter Kit provides easy and cheap way to make Ethernet development with PIC32. The PIC32 MCU is a family of 32-bit microcontrollers with 80 MHz MIPS M4K core.


      Package content

      The kit came in a handy book-sized black plastic box. It contained the following items:
      • PIC32 Ethernet Starter Kit Board
      • USB mini B  to  standard A cable - to debug and powering the board
      • USB micro B  to standard A cable - for USB application development (to communicate between the PIC32 and the PC)
      • RJ-45 CAT5 patch ("straight") cable for Ethernet connection
      • Software CD
      • Registration card


      The PIC32 Ethernet Starter Kit board is a small, compact circuit board containing an PIC32MX795F512L 32-bit microcontroller, an on-board debugger (surprisingly the debugger is realized with a PIC32MX440F512HT-80I/MRPIC32MX440F512HT-80I/MR MCU so the Ethernet Starter board actually contains two PIC32 MCUs), an Ethernet PHY, a 3,3 V regulator, connectors, LEDs for state displaying, and three LEDs and pushbuttons for user interaction.  The board has compatible form factor and expansion connector as other PIC32 Starter Kits. The circuit can be supplemented with an 32 kHz oscillator for the RTCC (see the unpopulated place for Y3, C15 and C16).


      The PIC32MX795F512L microcontroller has 512KB Flash/128 KB RAM, on chip 10/100 Ethernet MAC with MII/RMII interfaces, 2 x CAN2.0b modules with 1024 buffers, USB host/OTG/device connectivity, 6 UART, 4 SPI, 5 I2C, 5 timers with CCP, 16 ADC channels, RTCC etc.


      The block scheme and the circuit diagram in the PIC32 Ethernet Starter Kit Schematics.pdf helps to understand the role of the connectors: the USB mini-B connector is used for debugging. It can be also used to provide +5V supply for the board as well as for the USB host applications (in the latter case the JP2 jumper should be installed). The USB micro-B connector (on the back side of the board) is used for USB device or OTG applications or to provide power for the board. The USB type A connector is used for USB host applications. The VBUS power can be obtained from the computer through the debugger cable (in this case JP2 should be installed) or from an external +5 V source through the 132 pin extension connector (in this case the JP2 jumper should be removed).

      Software installation

      The software CD bundled in the kit is a bit outdated, a newer version of the software is available at Microchip's PIC32 Starter Kit Software Update page. Downloading the Updated PIC32 Starter Kits Software (v2.0A).zip package (155 MB) requires sign in at microchip.com (the registration is free) . After unzipping the package to a local  directory one have to start the setup.exe program. The installation requires system administrator privileges.


      The installation is simple and automatic: one only have to specify the installation directory and to accept the license terms and conditions. The "all in one" package contains every program and  documentation you need for experimenting with all kind of the PIC32 Starter Kits (including the PIC32 Ethernet Starter Kit). You will get the MPLAB Integrated Development System (MPLAB IDE v8.43), the demo version of the C32 compiler (v1.10B), example programs (starting from the LED blinking to the Ethernet TCPIP BSD web server, including USB device and host applications) tailored for the PIC32 Starter Kits, and a lot of documentation (PIC32 Starter Kits User Guide, PIC32 datasheets, software manuals etc.). The downloaded package does not contain the PIC32MX Family Reference Manual, you will find only a link to it at the Microchip's web page. The CD, however, contains it.

      Possible interference with earlier installations

      The MPLAB IDE and the C32 compiler will be installed even in that case you have already a newer (or older) version installed on your computer. They can coexist and work alternately without any trouble. I had a special problem, however, due to my earlier experimenting with the SourceBoost IDE and C/C++ compilers. Though these software have been uninstalled quite a long ago, there were remained records in the Windows Registry database. At every startup of the MPLAB IDE installed with the PIC32 Starter Kit software I have got a lot of error messages complaining about Legacy language files. I had to remove all records containing the word "boost" from the Windows Registry database  (except of Micboost which belongs to the microphone input of the audio subsystem). An alternative (and lazy) solution would be to copy the missing files from the old MPLAB IDE installation...

      Device driver for the on-board debugger

      The last step of the installation is the installation of the device driver of the debugger. Connect the USB mini-B cable to the Debug port (the J1 connector on the board) and connect the other end of the cable to the computer. The operating system will recognize the new hardware and ask for the proper driver. The relevant files are in the <installation directory>\MPLAB IDE\PIC32MXSKit\Drivers subdirectory, but some files may be also needed from the <installation directory>\MPLAB IDE\PIC32MXSKit\bin subdirectory as well.

      Where to find the information?

      The most important pieces of information needed for getting started are in the PIC32MX Starter Kit User's Guide.pdf document which walks newcomers through the first steps in developing for the PIC32MX Starter Kits. This document is a combo, it contains information for the PIC32 (General Purpose) Starter Kit, for the PIC32 USB Starter Kit II and also for the PIC32 Ethernet Starter Kit we are interested in. You have to learn to skip the irrelevant part and pick up the information valid for the Ethernet Starter board.


      The PIC32MX Starter Kit Release Notes contains very important technical information, a PIC32MX Starter Kit FAQs section and information about PIC32MX Device Re-Flash Utility, PIC32 Peripheral Library support, Debug Print Library support and Debugging/stand alone applications.


      Each demo project contains a separate information page in the project  directory (Getting started - Running  the Device/Host xxxxx demo.html). These files explains how to  configure the board and how to use the application. Don't miss these  pages!

      Copy-paste effects

      Being the fourth member of the  PIC32 Starter Kits, the PIC32 Ethernet  Starter Kit is a product of an evolution process. The documentation, however is slightly behind in the evolution of the hardware. Few examples:
      • The  documentation refers to a PIC18F4550 debugger but the PIC32 Ethernet  Starter Kit have a PIC32MX440F512H MCU for debugging.
      • The Getting Started - Running the  Starter_Kit_Tutorial Demo.html says that "The source code for this demo is available in the <Install  Directory>\PIC32 Starter Kits\Blink_Leds directory" though is  in the Starter_Kit_Tutorial subdirectory.
      • Several demo recommends to use the OTG cable to connect the board to a  PC, however, you have to use the debugger  cable instead, since the debug  print facility requires the communication with the debugger. For example the Bink LEDS demo was not even started if the debugger cable was not connected to the PC.
      Obviously, all these errors are copy-paste  effects and you have to learn to override these things in  the  documentation.

      Using the board out of the box

      The PIC32 Ethernet Starter Kit may be used directly from the box as a demonstration board for the PIC32 device. The PIC32 is preprogrammed with the classic “Simon Says” game. The goal is to imitate the light patterns as long as you can without getting frazzled Refer to the PIC32MX Starter Kit User's Guide for the details.

      Building projects

      The most simple project  is the Hello world example which demonstrates the usage of the Debug Print Library. You should include the plib.h file, and to call DBINIT() first before any other Debug Print Library macros. After that you can communicate between the PIC32 and the MPLAB through the debugger cable. In the Hello world example the main program uses the DBPRINTF("Hello World !\n"); command to print out a message in the Output window of the MPLAB IDE.


      The Blink LEDs example demonstrates the handling of the hardware (the user LEDs are toggled).


      The Starter Kit Tutorial project demonstrates a simple menu-driven console application, using the PIC32 Debug Print Library macros, to turn on/off the PIC32MX Starter Kit LEDs and echo text when the user responds to a menu hosted in MPLAB IDE Starter Kit console window. Refer to the PIC32MX Starter Kit User's Guide for the details.

      Programming the PIC32 MCU

      After the successful compilation of a project the generated hex code should be written into the flash memory of the PIC32 MCU. This can be done by the on board debugger. Select Debugger>Select Tool>PIC32 Starter Kit from the menu bar of the MPLAB IDE, then click on the Program all Memory icon or select the Debugger>Programming>Program all Memory menu item.

      USB projects

      There are several USB demo projects bundled into the PIC32 Starter Kits Software package which can be divided into two classes: USB device projects (in which the PC is the host and the PIC32 acts as an USB device) and USB host applications (where the PIC32 is the host). Among these projects I have tested the USB device - CDC Basic demo and the USB Host - Mass Storage - Thumb Drive Demo. The CDC Basic demo worked the same way as its PIC18 predecessor. The USB host application, however, was completely new for me. This was the first occasion I could see a PIC microcontroller to handle the content of my pen drive.

      Ethernet project

      Unfortunately there is only one Ethernet demo project available for the PIC32 Ethernet Starter Kit, the Ethernet - TCPIP-BSD - HTTP Server Demo. I was curious mostly about this project. The default host address ( was not suitable for me, since my home network uses the 192.168.1.*  IP range. Therefore I modified the definition of the host address to and the gateway address to 8 (this is the IP of my router). The project was compiled without any hassle. The RJ-45 connector of the Starter board was connected to the router by the UTP patch cable. A connection (using either the debug cable or the USB OTG cable) to a PC is also necessary in order to supply power for the board. After directing a browser to the host address ( in my case) the demo page appeared on the screen.You can connect the board directly to your PC (if you don't have a router available), however, you should use a crosswired cable in that case.


      The Ethernet - TCPIP-BSD - HTTP Server Demo/Getting Started - Running the Device - TCPIP-BSD - HTTP Server Demo.html file contained all information I needed to build and run the project successfully.


      Both hardware and software worked perfectly, the demo project were compiled and running without any trouble. The engineers of Microchip have done an excellent job. In my earlier experiences I have had much more troubles with the Explorer 16 board (where the on board debugger was not provided with firmware by the manufacturer) or with the MPLAB IDE until I learned tos configure the directory paths for a given language toolkit. I think the key of the success of the PIC32 Starter Kits Software is that it contains everything (IDE, compiler, software libraries and demo projects) in a consistent single  package. If you were installed all these components from independent packages, you would expect much more troubles!


      The PIC32 Ethernet Starter Kit is an ideal tool for education. It can be best used to learn about programming the PIC32 MCU or to develop USB or Ethernet applications. The board has only one drawback: it is very difficult to connect it to your own circuit. Even if you want to extend the board with a single LED you have to buy the PIC32 I/O Expansion Board which may not exactly fit your needs and may be too expensive for your simple project. Of course, the PIC32 I/O Expansion Board is very useful, if you want to make experiments (or development) by using PICtail Plus cards. However, I would like to see some other (and simpler) solutions as well.


      Revised by: Istvan Cserny at 11:46 CET on July 27, 2010.

        • Re: Review: PIC32 Ethernet Starter Kit

          How to create your own webpage for the Ethernet - TCPIP-BSD - HTTP Server Demo?

          In the Ethernet - TCPIP-BSD - HTTP Server Demo project the files are stored in the progrm memory as character arrays, therefore a utility program is necessary to convert your files (including all .htm, .jpg and .gif files) into C32 source format, like this:


          #include "./flash_storage.h"

          // store the files here

          const char BGA_Dime[] =
          0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46,

          0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48,
          0x00, 0x48, 0x00, 0x00, 0xff, 0xe1, 0x12, 0x12,

          0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x4d, 0x4d,
          0x00, 0x2a,0x00, 0x00, 0x00, 0x08, 0x00, 0x07,

          0x01, 0x12, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01,




          At the end of the file, a Table of Content should be assembled as well, in the following format:


          // storage of the files
          const fileDcpt    fileFlashTbl[]=
              {"C:\\Index.htm", sizeof(Index_htm), Index_htm},
              {"C:\\PIC32_Eth_SK.gif", sizeof(PIC32_Eth_SK), PIC32_Eth_SK},
              {"C:\\pic32chip.gif", sizeof(pic32chip), pic32chip},
              {"C:\\BGA_Dime.jpg", sizeof(BGA_Dime), BGA_Dime},
              {"C:\\PIC32Trp.jpg", sizeof(PIC32Trp), PIC32Trp},
              {"C:\\USBPhoto.jpg", sizeof(USBPhoto), USBPhoto},
              {0, 0, 0}        // always end with 0

          I wrote a small utility program which can do this. You can reproduce the original flash_storage.c file by issuing the following command:


          fileconverter.exe Index.htm PIC32_Eth_SK.gif pic32chip.gif BGA_Dime.jpg PIC32Trp.jpg USBPhoto.jpg > flash_storage.c


          Both fileconverter.exe and the source files should be located in the current directory. If you use your own source files, you can create your own version of flash_storage.c, and then compile your own project...


          The source and the binary of the utility program are here. Visual Studio 2005 Express Edition was used to compile the code, so the executible requires the .NET 2.0 framework. However, the program can be compiled with any other C compiler with a little modification of the source (change header files, and replace exit by return ). Good luck!

            • Re: Review: PIC32 Ethernet Starter Kit

              I've already made  the conversion of my files into C32 source format with a static page.
              Now  I need make a Dynamic web page. my work consist of turn on  two leds  making use  the web page and of course the pic32. But I don't know If the steps are similar to a static page. I'm very lost because I don't have enough experience with this kind of PIC and web pages
              Please I would be very thankful if you could help me .. because I've tried in many way But I've not had any kind of progres



              I've already made  the conversion of my files into C32 source format with a static page.


              Now  I need make a Dynamic web page. my work consist of turn on  two leds  making use of the web page and of course the pic32. But I don't know If the steps are similar to a static page. I'm very lost because I don't have enough experience with this kind of PIC and web pages



              Please I would be very thankful if you could help me .. because I've tried in many way But I've not had any kind of progres.


              • Re: Review: PIC32 Ethernet Starter Kit

                Isn't it easier to use Microchip utility MPFS2 which is included in their TCP/IP stack release? I tried it on PIC18 project, web page with dynamic variables, and it works without a problem? 

                  • Re: Review: PIC32 Ethernet Starter Kit
                    Isn't it easier to use Microchip utility MPFS2 which is included in their TCP/IP stack release?

                    It is not compatible with that HTTPD demo which comes with the PIC32 Ethernet Starter Kit. That's why I had to develop my own utility program. This demo whic comes in the PIC32 Starter Kit Software (v2.0A) is a(n over)simplified version of an earlier version of the TCP-IP stack, I think. It is much smaller and dumber, therefore it is much easier to read it. But the storage conventions are different from the present "full" versions of the  TCP-IP demo.

                      • Re: Review: PIC32 Ethernet Starter Kit

                        That explains it:) I thought that they used the full blown stack, since PIC32 has more than enough "horse power" to process it.

                        Thanks for the explanation.

                          • Re: Review: PIC32 Ethernet Starter Kit

                            You are right. The "full blown" stack is also usable for the PIC32 Ethernet Starter kit. But it is a separate distribution, and is not part of the software package accompaining of the Kit i have reviewed. I can only guess the philosophy behind this policy. The developers probably wanted to provide an easy-to-use package for the beginners. For this reasin even the MPLAB IDE and the C32 compiler were packaged in a non-conventional way in the PIC32 Starter Kit Software - together with the example projects. All in one package...

                      • Re: Review: PIC32 Ethernet Starter Kit






                        I AM VERY THNK FUL EOR YOUR KIND SUPPORT.

                          • Re: Review: PIC32 Ethernet Starter Kit

                            I was not able to create any dynamic page with the software which comes with the Starter Kit. A much better solution is  to download the  Microchip Application Libraries (see at www.mirochip.com/MAL) which has interesting demo programs. Note however that you shoud install the "full" MPLAB IDE and the C32 compiler (i.e. not that special version which comes with the PIC32 Ethernet Starter Kit). Note also, tha the MAL demos store the webpages in a different format. Fortunately MAL contains a tool for the conversion.

                        • Re: Review: PIC32 Ethernet Starter Kit

                          Very good review, thank you

                          • Re: Review: PIC32 Ethernet Starter Kit

                            Hello all,

                            We are trying to use the PIC32 Ethernet Starter Kit PN  DM320004DM320004 board for a school project as a robot controller just to make clear this is not a homework We redesigned the board to add some relays and easily access the A/D ports Since we are not going to use it as a USB host we removed the following parts from the original dev kit design http://ww1.microchip.com/downloads/en/DeviceDoc/61166A.pdf”:


                            U3-TPS20X1B Current-Limited Switch (page 26)

                            U6-TPS20X1B Current-Limited Switch (page 24)

                            U4-MCP1253 Charge Pump (page 24)


                            Also, we decided to program the PIC32MX795F512L with a PICkit3 via the 6 pin J 6 programming header, rather than using the on board debugger, so we removed U1-PIC32MX440F512H debugger (page 25) and associated parts. Please see redesigned schematic “http://home.comcast.net/~printzis/PIC32%20Controller-15%20SCH.pdf””


                            Our setup is as follows:


                            PIC32 Ethernet Starter Kit PN  DM320004DM320004

                            Product Version: MPLAB X IDE v1.90

                            Java: 1.7.0_17; Java HotSpot(TM) Client VM 23.7-b01

                            System: Windows 7 version 6.1 running on x86; Cp1252; en_US (mplab)


                            Project: XC32-PIC32_ETH_SK_ETH795.mcp

                            Hardware: SKDE PIC32

                            Compiler: XC32(v1.21)


                            So far so good, we can program the “PIC32 Ethernet Starter Kit” using the on board debugger and able to see and modify the web page “http://mchpboard


                            Subsequently we try to program our redesign board utilizing the same setup as above except we use the PICkit3 since our board does not have an on board debugger.


                            We observe the following:

                            1. MPLAB X IDE v1.90 completed the programming with no errors.
                            2. 2)The LED_SPEED in on.
                            3. U8 pin 25 measured 50MHz, as expected since we are using a 50MHz oscillator.
                            4. The switch ports RD6, RD7 and RD13 are high.
                            5. Unfortunately, we can not see the web page “http://mchpboard


                            Thanks for any assistance you can give us, we all don't have any clue including our professor.


                            PIC32 Ethernet Starter Kit without on board debugger.

                            • Re: Review: PIC32 Ethernet Starter Kit

                              I've been using this board for a few weeks now for a project at work. I've got to say that the board is very neat, and the demo is relatively easy to get up and running. However, trying to implement your own software using Microchip's stack is an absolute pig - really, the only way you can hope to make any progress is to hack the demo app around rather than trying to write clean code from scratch. The TCP/IP stack is full of features to support a whole range of different demo boards with different PHY chips. There is no "template" project provided for starting your own TCP/IP application. The hardware is great, well priced, but the software and particularly the documentation lets it down. Still, the software is free...

                              • Re: Review: PIC32 Ethernet Starter Kit


                                I have compiled the Ethernet - TCPIP-BSD - HTTP Server Demo code without any problem.But now I am trying to communicate with the usart through this kit.The problem is I am unable to configure the port number.

                                If you have any idea of how to proceed please do guide me.