{"id":4444,"date":"2012-05-26T20:26:10","date_gmt":"2012-05-27T00:26:10","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=4444"},"modified":"2012-07-30T09:29:11","modified_gmt":"2012-07-30T13:29:11","slug":"exploring-the-chipkit-uno32-board","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/exploring-the-chipkit-uno32-board\/","title":{"rendered":"Exploring the chipKIT Uno32 board"},"content":{"rendered":"<p>The chipKIT Uno32 development board is based on the powerful PIC32MX320F128 microcontroller, which features a 32-bit MIPS processor core running at 80MHz, 128K of flash program memory, and 16K of SRAM data memory. The board can be powered via USB or an external power supply. The on-board\u00a0USB-UART interface provides a communication path between the board and the MPIDE tool running on the PC. MPIDE stands for Multi-Platform Integrated Development Environment and is a complete tool for developing and downloading embedded applications into the chipKIT Uno32 board. Now let&#8217;s explore the chipKIT Uno32 board and its on-board features in more detail.<\/p>\n<div id=\"attachment_5007\" style=\"width: 570px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUno32.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5007\" class=\"size-full wp-image-5007\" title=\"chipKITUno32\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUno32.jpg\" alt=\"\" width=\"560\" height=\"431\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUno32.jpg 560w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUno32-550x423.jpg 550w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><p id=\"caption-attachment-5007\" class=\"wp-caption-text\">chipKIT Uno32 board<\/p><\/div>\n<p><!--more--><\/p>\n<p>The complete description of the chipKIT Uno32 board can be found in its <a href=\"http:\/\/www.digilentinc.com\/Data\/Products\/CHIPKIT-UNO32\/chipKITUno32_rm.pdf\" target=\"_blank\">hardware manual<\/a> available from the <a href=\"http:\/\/www.digilentinc.com\/Data\/Products\/CHIPKIT-UNO32\/chipKITUno32_rm.pdf\" target=\"_blank\">Digilent&#8217;s website<\/a>. I am summarizing only the most important features here. Shown below is a picture, drawn by me, that shows the layout of the major components, jumpers, and connectors on the chipKIT Uno32 board.<\/p>\n<div id=\"attachment_5097\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUNO32.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5097\" class=\"size-full wp-image-5097\" title=\"chipKITUNO32\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/chipKITUNO32.png\" alt=\"\" width=\"500\" height=\"562\" \/><\/a><p id=\"caption-attachment-5097\" class=\"wp-caption-text\">Layout of the major components, connectors, and jumpers<\/p><\/div>\n<p><strong>Connection to PC<\/strong><\/p>\n<p>The Uno32 board uses a standard Mini-B USB connector for connection to a USB port on the PC. The FTDI FT232RQ chip next to the USB connector provides an USB-UART interface for a two-way serial communication between the PC and the board. The same serial port is used by the MPIDE to communicate with the serial bootloader running on the Uno32 board while downloading user applications.<\/p>\n<p><strong>Power supply section<\/strong><\/p>\n<p>The Uno32 can be powered either via USB or from an external power supply.\u00a0The automatic switch-over circuit on-board\u00a0causes the external supply to be used if both\u00a0supplies are present. There are two voltage regulators present in the Uno32 board. The first regulates the external supply voltage to 5V and powers the +5V bus line (<strong>VCC5V0<\/strong>) on the board. The second regulates the <strong>VCC5V0<\/strong> bus to\u00a03.3V that goes to the 3.3V bus (<strong>VCC3V3)<\/strong> and also powers the PIC32 microcontroller.\u00a0A 5.5 mm x 2.1 mm barrel connector is available to power the Uno32 board from an\u00a0external power supply (wall adapter). The center terminal of the connector is wired as the positive supply voltage.\u00a0The external power supply voltage must be in the range 7V to 15V.<\/p>\n<p>Jumper <strong>JP2<\/strong> provides an option to route the external\u00a0power supply voltage through the on-board 5V\u00a0regulator or directly to the <strong>VCC5V0<\/strong> bus,\u00a0bypassing the on-board 5V regulator. Normally, <strong>JP2<\/strong> is in the <strong>REG<\/strong> position. This routes the external supply through the 5V regulator. If the external power supply is already a regulated +5V output, <strong>JP2<\/strong> can be placed in <strong>BYP<\/strong> position to power the <strong>VCC5V0<\/strong> bus directly from the external source.<\/p>\n<p>The 6-pin POWER connector, <strong>J2<\/strong>, is used to power external circuits or shields connected to the Uno32 board. Pin 1 (<strong>RESET<\/strong>) is connected\u00a0to the MCLR\u00a0pin on the PIC32 microcontroller. This pin can be\u00a0used to reset the PIC32 from an external circuit. The second and third pins provide 3.3V (maximum current 425 mA) and 5.0V (maximum current 900 mA) output, respectively, to power an external circuit or a shield plugged into the Uno32 board. The total current provided by pins 2 and 3 together, however, shouldn&#8217;t exceed 925 mA. Pins 4 and 5 (<strong>GND<\/strong>) provide common ground connections between the Uno32 and any external circuit. Pin 6 (<strong>VIN<\/strong>) is connected to the input of the external power supply connector. This pin can be used to provide the unregulated input voltage to the external circuit or the shield connected to Uno32.<\/p>\n<p><strong>Digital I\/O pins<\/strong><\/p>\n<p>The chipKIT and Arduino systems both use logical pin numbers to identify digital I\/O pins. The valid logical pin numbers for the Uno32 board are 0-43. The chipKIT Uno32 board provides altogether 42 I\/O pins that are accessible through connectors <strong>J5<\/strong>, <strong>J6<\/strong>, and <strong>J7<\/strong>. Each I\/O pin can source or sink a maximum of 18mA. However, to keep the output voltage within the specified voltage range (VOL = 0.4V, VOH = 2.4V), the pin current must be restricted to source and sink at most 7mA and 12mA, respectively. The maximum current that can be sourced or sunk across all I\/O pins simultaneously is 200mA.<\/p>\n<p>Connectors <strong>J5<\/strong> and <strong>J6<\/strong> are 2&#215;8 female pin header connectors that provide access to 30 I\/O pins. The outer row of pins (labeled 0 through 13, A, and G) corresponds to the I\/O connector pins on an Arduino Uno board. The inner row of pins (labeled 26 through 41) are the extra I\/O signals provided by the chipKIT Uno32.<\/p>\n<p>Similarly, connector <strong>J7<\/strong> is a 2&#215;6 female pin header that provides access to the analog input pins on the PIC32 microcontroller. The outer row of pins corresponds to the six analog pins (A0-A5) on an Arduino Uno board, whereas the inner row of pins are the additional analog channels (A6-A11) provided by the Uno32. These analog pins can also be used as digital I\/O pins. In that case, the logical pin numbers of A0-A11 would be 14-25.<\/p>\n<p>So the total 42 I\/O pins are distributed as follows:<\/p>\n<ul>\n<li>Outer row of <strong>J6<\/strong> and <strong>J5<\/strong> -&gt; 14 pins (logical pin numbers 0-13)<\/li>\n<li>Outer row of <strong>J7<\/strong> -&gt; 6 pins (logical pin numbers 14-19)<\/li>\n<li>Inner row of <strong>J7<\/strong> -&gt; 6 pins (logical pin numbers 20-25)<\/li>\n<li>Inner row of <strong>J6<\/strong> and <strong>J5<\/strong> -&gt; 16 pins (logical pin numbers 26-41)<\/li>\n<\/ul>\n<p>The pin labeled as <strong>A<\/strong> on <strong>J5<\/strong> is used to provide an external reference voltage for the microcontroller&#8217;s A\/D converter. But it can also be used as a digital I\/O pin, and its logical pin number is 42.<\/p>\n<p><strong>Pulse width modulation (PWM) pins<\/strong><\/p>\n<p>The I\/O pins 3, 5, 6, 9, and 10 can also be configured to provide PWM outputs.<\/p>\n<p><strong>LEDs on the board<\/strong><\/p>\n<p>There are 5 LEDs (labeled as <strong>LED1<\/strong> through <strong>LED5<\/strong>) on the chipKIT Uno32 board. <strong>LED1<\/strong> and <strong>LED2<\/strong> are communication status LEDs and they will blink when data is being sent or received between the<br \/>\nUno32 and the PC over the serial connection. <strong>LED3<\/strong> is located next to the barrel connector for external DC supply, and is basically the power-on indicator LED. The Uno32 board has two user LEDs, labeled <strong>LED4<\/strong> and <strong>LED5<\/strong>, that are connected to digital I\/O Pins 13 and 43. It should be noted that Pin 43 only goes to\u00a0<strong>LED5<\/strong> and not any connector pin. Driving the pin high turns <strong>LED5<\/strong> on, driving it low turns it off.<\/p>\n<p><strong>Peripheral functions<\/strong><\/p>\n<p>The PIC32 microcontroller on the Uno32 board provides a number of peripheral functions. The following peripherals are provided:<\/p>\n<ul>\n<li><em><strong>Asynchronous serial communication ports:<\/strong><\/em> There are two UART ports (<strong>UART port1<\/strong> and U<strong>ART port2<\/strong>) available on the Uno32 board. Pin 0 and Pin 1 serves as RX and TX for <strong>UART port1<\/strong> and are also connected to the FT232R USB-to-Serial converter on board. It is possible to use these pins to connect to an external serial device when not using the USB serial interface. This uses UART1 (U1RX, U1TX) on the PIC32 microcontroller. Similarly, <strong>UART port2<\/strong> uses Pin 39 and Pin 40 for RX and TX functions respectively. This uses UART2 (U2RX, U2TX) on the PIC32 microcontroller.<\/li>\n<\/ul>\n<ul>\n<li><em><strong>Serial Peripheral Interface (SPI):<\/strong><\/em>\u00a0 SPI requires four signal lines (SS-slave select, MOSI-master output slave input, MISO-master input slave output, and SCLK-serial clock) to perform a full duplex communication between a master and a slave. These are provided by Pin 10 (SS), Pin 11 (MOSI), Pin 12 (MISO), and Pin 13 (SCK) on the Uno32 board. These signals also appear on connector J8, which may be used by some shields to access the SPI bus. Jumpers <strong>JP5<\/strong> and <strong>JP7<\/strong> are used to select whether the Uno32 operates as a <strong>Master<\/strong> (transmit on MOSI, receive on MISO) or a <strong>Slave<\/strong> (transmit on MISO, receive on MOSI) device. The shorting blocks on <strong>JP5<\/strong> and <strong>JP7<\/strong> are normally placed in the Master position for the Uno32 to function as an SPI master. Also, jumper <strong>JP4<\/strong> is used to select PWM output or the SPI SS function on Pin 10. The jumper on <strong>JP4<\/strong> should be in the RD4 position to select PWM output. It should be in the RG9 position to select the SPI SS function.<\/li>\n<\/ul>\n<ul>\n<li><em><strong>Inter-Integrated Communication (I2C):<\/strong><\/em> The PIC32 microcontroller shares the analog input pins A4 and A5 with the two I2C signals SDA and SCL. Jumpers <strong>JP6<\/strong> and <strong>JP8<\/strong> are used to select whether the analog pin functions or the I2C pin functions are being used. The shorting blocks are placed in the A4\/A5 position to select the analog input function or general digital I\/O. They are placed in the RG3\/RG2 position to use the pins for I2C operation. This uses I2C1 (SDA1, SCL1) on the PIC32 microcontroller.The I2C bus uses open collector drivers to allow multiple devices to drive the bus signals. This means that pull-up resistors must be provided to supply the logic high state for the signals. The Uno32 board does not have any pull-up resistors for the I2C bus and therefore, must be provided externally.<\/li>\n<\/ul>\n<ul>\n<li><em><strong>External Interrupts:<\/strong><\/em> The five external interrupt pins of the PIC32 microcontroller are accessible through Pin 38 (INT0), Pin 2 (INT1), Pin 7 (INT2), Pin 8 (INT3), and Pin 35 (INT4).<\/li>\n<\/ul>\n<ul>\n<li><em><strong>Real time clock calender (RTCC):<\/strong><\/em> The PIC32 microcontroller contains an RTCC circuit that can be used to maintain time and date information. The operation of the RTCC requires a clock frequency of 32.768Khz. A space is provided (X2), just above and to the right of the PIC32 microcontroller IC, to solder a 32Khz watch crystal.<\/li>\n<\/ul>\n<ul>\n<li><em><strong>RESET:<\/strong><\/em> A reset button is available at the upper left corner of the board. Pressing this button resets the PIC32 microcontroller.<\/li>\n<\/ul>\n<div>The picture below summarizes the various jumper settings and their functions.<\/div>\n<div>\n<div id=\"attachment_5100\" style=\"width: 559px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/JumperSetting.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5100\" class=\"size-full wp-image-5100\" title=\"JumperSetting\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/JumperSetting.jpg\" alt=\"\" width=\"549\" height=\"753\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/JumperSetting.jpg 549w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2012\/05\/JumperSetting-473x650.jpg 473w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/a><p id=\"caption-attachment-5100\" class=\"wp-caption-text\">chipKIT Uno32 jumper settings<\/p><\/div>\n<p>Go to the main tutorial page : <strong><a href=\"http:\/\/embedded-lab.com\/blog\/?page_id=4705\">chipKIT Programming and Interfacing<\/a><\/strong><\/p>\n<p>Go to the next tutorial page :\u00a0<strong>chipKIT Uno32 VS Arduino Uno<\/strong><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The chipKIT Uno32 development board is based on the powerful PIC32MX320F128 microcontroller, which features a 32-bit MIPS processor core running at 80MHz, 128K of flash program memory, and 16K of SRAM data memory. The board can be powered via USB or an external power supply. The on-board\u00a0USB-UART interface provides a communication path between the board and the MPIDE tool running on the PC. MPIDE stands for Multi-Platform Integrated Development Environment and is a complete tool for developing and downloading embedded applications into the chipKIT Uno32 board. Now let&#8217;s explore the chipKIT Uno32 board and its on-board features in more detail.<\/p>\n","protected":false},"author":1,"featured_media":4445,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[401],"tags":[404,402,403],"class_list":["post-4444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chipkit","tag-32-bit-platform","tag-chipkit-uno32","tag-embedded-systems"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/4444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=4444"}],"version-history":[{"count":39,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/4444\/revisions"}],"predecessor-version":[{"id":5345,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/4444\/revisions\/5345"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/4445"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=4444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=4444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=4444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}