This is an old revision of the document!
Overview
The chipKIT Uno32 is based on the popular Arduino™ open-source hardware prototyping platform and adds the performance of the Microchip PIC32 microcontroller.
The Uno32 is the same form factor as the Arduino Uno board and is compatible with Arduino shields. It features a USB serial port interface for connection to the IDE and can be powered via USB or an external power supply.
The Uno32 board takes advantage of the powerful PIC32MX320F128 microcontroller. This microcontroller features a 32-bit MIPS processor core running at 80Mhz, 128K of flash program memory and 16K of SRAM data memory.
The Uno32 can be programmed using the Multi-Platform Integrated Development Environment (MPIDE), an environment based on the original Arduino IDE modified to support PIC32. It contains everything needed to start developing embedded applications.
In addition, the Uno32 is fully compatible with the advanced Microchip MPLAB® IDE and the PICKit3 in-system programmer/debugger. The Uno32 is easy to use and suitable for both beginners and advanced users experimenting with electronics and embedded control systems.
The Uno32 provides 42 I/O pins that support a number of peripheral functions, such as UART, SPI, and I2 C ports and pulse width modulated outputs. Twelve of the I/O pins can be used as analog inputs or as digital inputs and outputs.
Features include:
- Microchip® PIC32MX320F128H
- microcontroller (80 Mhz 32-bit MIPS, 128K Flash, 16K SRAM)
- compatible with many existing
- Arduino code samples and other resources
- Arduino Uno form factor
- compatible with many Arduino shields
- 42 available I/O pins
- two user LEDs
- PC connection uses a USB A > mini B cable (not included)
- 12 analog inputs
- 3.3V operating voltage
- 80Mhz operating frequency
- 75mA typical operating current
- 7V to 15V input voltage (recommended)
- 20V input voltage (maximum)
- 0V to 3.3V analog input voltage range
- +/-18mA DC current per pin
chipKIT Uno32 Hardware Overview
1. USB Connector for USB Serial Converter
This connects to a USB port on the PC to provide the communications port for the MPIDE to talk to the Uno32 board. This can also be used to power the Uno32 board when connected to the PC.
2. JP3 – Microchip Debug Tool Connecto
This connector is used to connect Microchip programmer/debugger tools, such as the PICkit™3. This allows the Uno32 board to be used as a traditional microcontroller development board using the Microchip MPLAB® IDE.
3. J4 – External Power Connector
This is a 5.5mm x 2.1mm barrel connector used to power the Uno32 board from an external power supply. It is wired with the center terminal as the positive supply voltage. The power supply voltage must be in the range 7V to 15V.
4. Power Supply – 3.3V Regulator
Voltage regulator for the 3.3V power supply. This power supply can provide up to 500mA of current.
5. JP2 – Power Select Jumper
This jumper is used to route power from the external power connector through the onboard 5V voltage regulator or to bypass the 5V regulator. The REG position routes power through the 5V regulator. The BYP position bypasses the on-board 5V regulator. With this jumper in the BYP position the maximum input voltage that can be applied at the external power connector is 6V.
6. Power Supply – 5V Regulator
This on-board 5V voltage regulator regulates the input voltage applied at the external power connector to 5V. This is used to power the 3.3V regulator and to provide 5V power to expansion shields. This regulator can provide up to 800mA of current.
7. J2 – Shield Power Connector
This connector provides power to I/O expansion shields connected to the board.
8. PIC32 Microcontroller
The PIC32MX320F128H microcontroller is the main processor for the board.
9. J7 – Analog Signal Connector
This connector provides access to analog/digital I/O pins on the microcontroller.
10. JP6/JP7 – A4/A5 Signal Select Jumpers
These jumpers are used to switch pins 9 and 11 on connector J7 between analog inputs A4 and A5 or the I2C signals SDA and SCL.
11. J8 – SPI Signal Connector
This connector provides alternative access to the SPI signals. This is used by some shields for access to the SPI bus.
12. JP5/JP7 – SPI Master/Slave Select Jumpers
These jumpers are used to switch the SPI signals for use of the Uno32 board as an SPI master device or as an SPI slave device. Both jumpers should be switched together. Place the shorting blocks in the MASTER position for master operation and in the SLAVE position for slave operation. Normally, these jumpers are in the MASTER position.
13. User LEDs
Two LEDs connected to digital signal pins 13 and 43.
14. J6 – Digital Signal Connector
This connector provides access to digital I/O pins on the microcontroller.
15. JP4 – Pin 10 Signal Select Jumper
This jumper is used to switch connector J5 pin 5 (digital signal 10) between pulse width modulator (PWM) operation and SPI operation. The jumper is placed in the RD4 position for PWM output and in the RG9 position for SPI slave operation. The shorting block on this jumper will normally be in the RD4 position. The only time it normally needs to be in the RG9 is when using the Uno32 board as an SPI slave device.
16. J5 – Digital Signal Connector
This connector provides access to digital I/O pins on the microcontroller.
17. Communications Status LEDs
These LEDs indicate activity on the USB serial interface.
18. Reset Button
This button can be used to reset the microcontroller, restarting operation from the boot loader.
chipKIT Uno32 Jumper Settings
The chipKIT development platforms use a Microchip PIC32 microcontroller. These are 32-bit products that bring unprecedented features to the Arduino community. In order to maintain compatibility with existing hardware and software, additional jumpers and row headers are provided. This document describes the functionality of the jumpers listed in the figure below.
JP2
Power select: Used to connect/bypass the on-board 5V regulator when using an external power supply connected to J4.
Note: To protect the PIC32 MCU, a 3.3V on-board regulator will always be enabled regardless of JP2 settings.
Note: If you’re not sure what POWER SELECT does, be safe and keep JP2 on the two right-most pins so the J4 supply is regulated.
JP4
PWM/SPI SLAVE: Configures pin 10 on J5 to be used as a PWM output or a Slave Select input for use as an SPI slave device.
JP5/JP7
SPI SELECT: Used to configure the chipKIT as either a Master or Slave when using the SPI. The chipKIT board can be connected to another device or even another chipKIT through the SPI connector (J8).
For more information on SPI, please visit Wikipedia’s SPI page: http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus#Mode_Numbers
JP6/JP8
I²C/ANALOG PIN SELECT: Used to configure A4 and A5 for functionality as an Analog input or to be used as I²C communication pins.
For more information on I²C, please visit Wikipedia’s I²C page at: http://en.wikipedia.org/wiki/I2C
chipKIT Uno32 Hardware Description
MPIDE and USB Serial Communications
The Uno32 board is designed to be used with the Multi-Platform IDE (MPIDE). Digilent produced the MPIDE development platform by modifying the Arduino™ IDE. It is backwardscompatible with the Arduino IDE.
The MPIDE uses a serial communications port to communicate with a boot loader running on the Uno32 board. The serial port on the Uno32 board is implemented using an FTDI FT232R USB serial converter. Before attempting to use the MPIDE to communicate with the Uno32, the appropriate USB device driver must be installed.
The Uno32 board uses a standard mini-USB connector for connection to a USB port on the PC.
When the MPIDE needs to communicate with the Uno32 board, the board is reset and starts running the boot loader. The MPIDE then establishes communications with the boot loader and downloads the program to the board.
When the MPIDE opens the serial communications connection on the PC, the DTR pin on the FT232R chip is driven low. This pin is coupled through a capacitor to the MCLR pin on the PIC32 microcontroller. Driving the MCLR line low resets the microcontroller, restarting execution with the boot loader.
This automatic reset action (when the serial communications connection is opened) can be disabled. To disable this operation, there is a cut-able trace on the bottom of the board between the pins on JP1. JP1 is normally not loaded. If the trace between the pins on JP1 has been cut, the automatic reset operation can be restored by loading JP1 and inserting a shorting block across it.
Two red LEDs (LD1 and LD2) will blink when data is being sent or received between the Uno32 and the PC over the serial connection.
The header connector J3 provides access to the other serial handshaking signals provided by the FT232R. Connector J3 is not loaded at the factory and can be installed by the user to access these signals.
Power Supply
The Uno32 is designed to be powered either via USB or from an external power supply. There is an automatic switch-over circuit that causes the external supply to be used if both supplies are present.
The power supply section in the Uno32 uses two voltage regulators. The first regulates the external voltage to 5V to power the VCC5V0 bus. The second regulates the VCC5V0 bus to 3.3V to provide power to the VCC3V3 bus that powers the PIC32 microcontroller.
The 5V voltage regulator is normally an NCP1117. The board is designed to be able to also use an LM1117, but the NCP1117 is the part normally used. The NCP1117 is rated for an output current of 1A (the LM1117 is rated for 800mA). The dropout voltage of the NCP1117 is a maximum of 1.2V at the rated output current (1.3V for the LM1117).
There is a reverse polarity protection diode in the external power supply circuit. Considering the diode drop plus the forward drop across the regulator, the minimum input voltage to the regulator should be 7V to produce a reliable 5V output. The absolute maximum input voltage of both the NCP1117 and the LM1117 is 20V. The recommended maximum operating voltage is 15V.
For input voltages above 9V, the regulator will get extremely hot when drawing high currents. Both the NCP1117 and the LM1117 have output short circuit protection and internal thermal protection and will shut down automatically to prevent damage.
The 3.3V regulator is a Microchip MCP1725. This regulator is rated for a maximum output current of 500mA. The absolute maximum input voltage for the MCP1725 is 6V. This regulator has internal short circuit protection and thermal protection. It will get noticeably warm when the current consumed by the VCC3V3 bus is close to the 500mA maximum.
The 5V power bus, VCC5V0 can be powered from one of three sources:
- the USB5V0 bus when the board is operating under USB power,
- the output of the on-board 5V regulator when operating from an external 7V-15V supply,
- directly from the external supply when operating from a regulated 5V external supply with jumper JP2 in the BYP position.
Switch-over from USB power to external power is done automatically and the external supply will be used if both are present.
Jumper JP2 is used to route the external power supply voltage through the on-board 5V regulator or directly to the VCC5V0 bus, bypassing the on-board 5V regulator. Normally, JP2 is in the REG position. This routes the external supply through the 5V regulator. Operation from an externally regulated 5V supply is provided by placing the jumper in the BYP position.
The forward drop across the MCP1725 is typically 210mV (350mV max) at 500mA output. With JP2 in the BYP position, this will allow correct operation of the 3.3V power supply from an input voltage down to 3.5V. This lets you power the board from batteries and other lower voltage power sources. In that case, the VCC5V0 power bus will not be powered at 5V.
Note: When JP2 is in the BYP position, do not apply more than 6V to the external power input. This can destroy the 3.3V regulator and possibly the PIC32 microcontroller as well.
The PIC32 microcontroller is rated to use a maximum of 75mA of current when operating at 80Mhz. This allows up to 425mA from the VCC3V3 bus and up to 925mA from the VCC5V0 bus to power external devices.
The POWER connector, J2, is used to power shields connected to the Uno32 board. The following pins are provided on this connector:
P32_RST (pin 1): This connects to the MCLR pin on the PIC32 microcontroller and can be used to reset the PIC32.
VCC3V3 (pin 2): This routes the 3.3V power bus to shields. This pin can provide ~425mA.
VCC5V0 (pin 3): This routes the 5V power bus to shields. This pin can provide up to ~900mA to shields, however the total provided by pins 2 and 3 shouldn’t exceed 925mA.
GND (pin 4, 5): This provides a common ground connection between the Uno32 and the shields.
VIN (pin 6): This connects to the voltage provided at the external power supply connector. This can be used to provide unregulated input power to the shield. It can also be used to power the Uno32 board from the shield instead of from the external power connector.
5V Compatibility
The PIC32 microcontroller operates at 3.3V. The original Arduino boards operate at 5V as do many Arduino shields.
There are two issues to consider when dealing with 5V compatibility for 3.3V logic. The first is protection of 3.3V inputs from damage caused by 5V signals. The second is whether the 3.3V output is high enough to be recognized as a logic high value by a 5V input.
The digital I/O pins on the PIC32 microcontroller are 5V tolerant. The analog capable I/O pins are not 5V tolerant. To provide 5V tolerance on those pins, the Uno32 contains clamp diodes and current limiting resistors to protect them from 5V input voltages.
The fact that all I/O pins are 5V tolerant means that it is safe to apply 5V logic levels to any pins on the board without risk of damaging the PIC32 microcontroller.
The minimum high-voltage output of the PIC32 microcontroller is rated at 2.4V when sourcing 12mA of current. When driving a high impedance input (typical of CMOS logic) the output high voltage will be close to 3.3V. Some 5V devices will recognize this voltage as a logic high input, and some won’t. Many 5V logic devices will work reliably with 3.3V inputs.
Input/Output Connections
The Uno32 board provides 42 of the I/O pins from the PIC32 microcontroller to pins on the input/output connectors J5, J6, and J7.
The PIC32 microcontroller can source or sink a maximum of 18mA on all digital I/O pins. However, to keep the output voltage within the specified voltage range (VOL 0.4V, VOH 2.4V) the pin current must be restricted to +7/-12mA. The maximum current that can be sourced or sunk across all I/O pins simultaneously is +/- 200mA. The maximum voltage that can be applied to any I/O pin is 5.5V. For more detailed specifications, refer to the PIC32MX3XX/4XX Data Sheet available from the Microchip web site.
Connectors J5 and J6 are 2×8 female pin header connectors that provide digital I/O signals. The outer row of pins (closer to the board edge) corresponds to the I/O connector pins on an Arduino Uno or Duemilanove board. The inner row of pins provides access to the extra I/O signals provided by the PIC32 microcontroller.
Connector J7 is a 2×6 female pin header connector that provides access to the analog input pins on the microcontroller. The outer row of pins corresponds to the six analog pins on an Arduino Uno or Duemilanove. The inner row of pins are the additional I/O signals provided by the PIC32 microcontroller. The analog pins on J7 can also be used as digital I/O pins.
The chipKIT/Arduino system uses logical pin numbers to identify digital I/O pins on the connectors. The logical pin numbers for the I/O pins on the Uno32 are 0-43. These pin numbers are labeled in the silk screen on the board.
Pin numbers 0-13 are the outer row of pins on J6 and J5, from right to left. Pin numbers 14-19 are the outer row of pins on J7 from left to right. Pins 20-25 are the inner row of pins on J7 from left to right. Pin numbers 26-41 are the inner row of pins on J6 and J5 from right to left. Pin 42 is the pin labeled A on J5. This pin is normally the reference voltage for the microcontroller’s A/D converter, but can also be used as a digital I/O pin.
In addition to the connector pin, Pin 13 also connects to the user LED LD4. Pin 43 connects to user LED LD5. Pin 43 pin does not go to any connector.
The analog inputs on connector J7 are assigned pin numbers. The outer row of pins on J7 are analog inputs A0-A5. The inner row of pins are A6-A11. These pins are also assigned digital pin numbers: A0-A5 are digital pins 14-19, and A6-A11 are 20-25.
Peripheral I/O Functions
The PIC32 microcontroller on the Uno32 board provides a number of peripheral functions. The following peripherals are provided:








