Digilent MX7cK User Manual

CCeerreebboott MMXX77ccK
K
BBooaarrdd
RReeffeerreennccee MMaannuuaal
l
Revision: June 24, 2013 Note: This document applies to REV B and C of the board.
1300 Henley Court | Pullman, WA 99163
(509) 334 6306 Voice and Fax
Cerebot MX7cK Circuit Diagram
Overview
The Cerebot MX7cK is a microcontroller development board based on the Microchip PIC32MX795F512L, a member of the 32-bit PIC32 microcontroller family. It is compatible
with Digilent’s line of Pmod™ peripheral
modules, and is suitable for use with the Microchip MPLAB® IDE tools. The Cerebot MX7cK is also compatible for use with the
chipKIT™ MPIDE development environment.
ChipKIT and MPIDE is a PIC32 based system compatible with many existing Arduino™ code examples, reference materials and other resources.
The Cerebot MX7cK is designed to be easy to use and suitable for use by anyone from beginners to advanced users for experimenting with embedded control and network communications application. A built in programming/debugging circuit compatible with the Microchip MPLAB® IDE is provided, so no additional hardware is required for use with MPLAB. The kit contains everything needed to start developing embedded applications using either the MPLAB® IDE or the MPIDE.
The Cerebot MX7cK provides 52 I/O pins that support a number of peripheral functions, such as UART, SPI and I pulse width modulated outputs and five external interrupt inputs. Its network and communications features also include a 10/100 Ethernet interface, Full Speed USB 2.0 OTG interface, and dual CAN network interfaces. Ten of the I/O pins can be used as analog inputs in addition to their use as digital inputs and outputs.
The Cerebot MX7cK can be powered in various ways via USB, or using an external AC-DC power adapter.
2
C™ ports as well as five
Doc: 502-223 page 1 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
Functional Description
The Cerebot MX7cK is designed for embedded control and network communications applications as well as for general microprocessor experimentation. Firmware suitable for many applications can be downloaded to the Cerebot MX7cK’s programmable PIC32 microcontroller.
Features of the Cerebot MX7cK include:
a PIC32MX795F512L microcontroller support for programming and
debugging within the Microchip MPLAB development environment
support for programming within the
chipKIT MPIDE development environment
six Pmod connectors for Digilent
peripheral module boards
10/100 Ethernet USB 2.0 compatible Device, Host, and
OTG support
two CAN network interfaces three push buttons four LEDs multiple power supply options, including
USB powered
ESD protection and short circuit
protection for all I/O pins.
Features of the PIC32MX795F512L include:
512KB internal program flash memory 128KB internal SRAM memory USB 2.0 compliant full-speed On-The-
Go (OTG) controller with dedicated DMA channel
10/100 Ethernet controller two CAN network controllers up to four serial peripheral interfaces
(SPI)
up to six UART serial interfaces up to four I2C serial interfaces five 16-bit timer/counters five timer capture inputs five compare/PWM outputs sixteen 10-bit analog inputs
two analog comparators
The Cerebot MX7cK has a number of input/output connection options, and is designed to work with the Digilent line of Pmod peripheral modules that provide various input and output functions. For more information, see www.digilentinc.com. In addition to the Pmod connectors, the board provides three push buttons and four LEDs for user I/O, as well as providing connections for two I2C busses. A serial EEPROM is provided on one of the I2C busses.
The Cerebot MX7cK features a flexible power supply system with a number of options for powering the board as well as powering peripheral devices connected to the board. It can be USB powered via the debug USB port, the USB UART serial port, or the USB device port. It can also be powered from an external 5V power supply.
Programming Tools
The Cerebot MX7cK can be used with either the Microchip MPLAB® development environment or the chipKIT MPIDE development environment. When used with the MPLAB® IDE, in-system-programming and debugging of firmware running on the PIC32MX795 microcontroller is supported using an on-board programming/debugging circuit licensed from Microchip.
The Cerebot MX7cK is immediately useable with either the MPLAB IDE or the chipKIT MPIDE. No additional hardware is required to use the board with the Microchip MPLAB tools.
Using the Cerebot MX7cK with Microchip Development Tools
The Microchip MPLAB® IDE or the MPLAB® X IDE can be used to program and debug code running on the Cerebot MX7cK board using the built-in programming/debugging circuit.
The MPLAB development environment can be downloaded from the Microchip web site. This software suite includes a free evaluation copy
www.digilentinc.com page 2 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
of the Microchip C32 compiler for use with the PIC32 microcontroller family. The licensed debugger is compatible with the MPLAB IDE version 8.63 or later or all versions of MPLAB X.
When creating a new project, use the Configure.Select Device…” menu to specify the PIC32 device being used. Ensure that the device is set to PIC32MX795F512L.
In order to use the on-board programming/debugging circuit it must be selected as the debugger or programmer within the MPLAB IDE. Use the
Debugger.Select Tool menu, or the Programmer.Select Tool menu, and select
“Licensed Debugger” as the programmer or debugger.
The licensed debugger interface uses USB connector J15, labeled DEBUG. Connector J15 is a USB micro-B connector located on the left side of the board below the Ethernet RJ45 connector. Use a USB-A to micro-B cable (provided with the board) to connect to an available USB port on the PC.
When the licensed debugger is selected as the programming or debugging device, the MPLAB IDE will check the version number of the firmware running on the debugger and offer to update if it is out of date with the version of MPLAB being used.
The PIC32 in-system programming/debugging interface uses two pins on the microcontroller. These devices support two alternate pin pairs for this interface: PGC1/PGD1 or PGC2/PGD2. The PGC2/PGD2 pair is used by default. Due to conflicting uses of the microcontroller pins, the Cerebot MX7cK is designed to use the PGC1/PGD1 pair of pins. Because of this, it is necessary to select the use of PGC1/PGD1 for the debugging interface. This is done using configuration variables set using the #pragma
config statement. The following statement
must be used to configure the microcontroller for use with the on-board licensed debugger circuit:
www.digilentinc.com page 3 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
#pragma config ICESEL = ICS_PGx1
The MPLAB IDE may report an error indicating that the device is not configured for debugging until a program containing this statement has been programmed into the board.
The MCLR pin on the PIC32 microcontroller is used by the hardware programming/debugging interface to reset the processor. This same pin is used by the USB serial converter to reset the processor when using the MPIDE. It is possible that the reset function from the USB serial interface can interfere with correct operation of the Microchip programming and debugging tools. If this happens, jumper JP11 can be used to disconnect the USB serial converter reset circuit. Remove the shorting block from JP11 to disable the reset circuit. If the shorting block has been removed, it is necessary to reinstall it on JP11 in order to use the Cerebot MX7cK board with the MPIDE again.
Using the Microchip development tools to program the Cerebot MX7cK will erase the chipKIT boot loader. To use the board with the chipKIT MPIDE again, it is necessary to program the boot loader back onto the board. The programming file for the boot loader programmed into the board by Digilent at the factory is available for download from the product page for the Cerebot MX7cK on the Digilent web site. Additionally, the boot loader source code is available in the chipKIT project repository at www.github.com/chipKIT32/pic32-
Arduino-Bootloader.
To reprogram the boot loader using MPLAB, perform the following steps:
Use the “Configure.Select Device …” menu to
select the PIC32MX795F512L
Use the “Programmer.Select Programmer”
menu to select the “Licensed Debugger”.
Use the “File Import…” dialog box to
navigate to and select the boot loader programming downloaded from the Digilent web site. The file name will be something like: chipKIT_Bootloader_MX7cK.hex
Use the “Programmer.Program” command to
program all memories on the device.
Cerebot MX7cK Reference Manual
Using the Cerebot MX7cK with the chipKIT MPIDE
ChipKIT and the MPIDE is a PIC32 based hardware and software system compatible with many existing Arduino code examples, reference materials and other resources. The MPIDE development platform was produced by
modifying the Arduino™ IDE and is fully
backward compatible with the Arduino IDE. The Cerebot MX7cK board is designed to be fully compatible with the chipKIT MPIDE system, version 20111221 or later.
The MPIDE uses a serial communications port to communicate with a boot loader running in the target board. The serial port on the MX7cK board is implemented using an FTDI FT232R USB serial converter. Before attempting to use the MPIDE with the MX7cK, the appropriate USB device driver must be installed.
The USB serial converter on the Cerebot MX7cK uses USB connector J2, labeled UART on the board. This connector is a USB micro­AB, and is located on the lower left side of the board adjacent to the power switch. Use a standard USB-A to micro-B cable (provided with the board) to connect the board to an available USB port on the PC.
In the MPIDE, use the “Tools.Board” command to select the Cerebot MX7cK from the list of available boards. Use the “Tools.Serial Port” command to choose the appropriate serial port from the list of available serial ports on the PC.
When the MPIDE needs to communicate with the MX7cK board, the PIC32 microcontroller is reset and starts running the boot loader. The MPIDE then establishes communications with the boot loader and downloads the user’s program, programming it into the flash memory in the microcontroller
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.
www.digilentinc.com page 4 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Driving the MCLR line low resets the microcontroller, restarting execution with the boot loader.
The automatic reset action when the serial communications connection is opened can be disabled. To disable this operation, remove the shorting block from jumper JP11. The shorting block is reinstalled on JP11 to restore operation with the MPIDE.
Two red LEDs (LD9 and LD10) will blink when data is being sent or received between the Cerebot MX7cK and the PC over the serial connection.
The header connector J1 provides access to the other serial handshaking signals provided by the FT232R. Connector J1 is not loaded at the factory but can be installed by the user to access these signals.
Additional Reference Documentation
Additional information about the Cerebot MX7cK board and the use and operation of the PIC32MX795F512L microcontroller can be obtained from the following sources.
The Cerebot MX7cK Schematic, as well as various support libraries, and example reference designs are available on the board product page on the Digilent web site:
www.digilentinc.com
The PIC32MX5XX/6XX/7XX Family Data Sheet and the PIC32MX Family Reference Manual available from the Microchip web site:
www.microchip.com
Reference material for the chipKIT MPIDE system is included in the MPIDE software download, and on-line in the chipKIT wiki. Help with questions and problems using the board with the chipKIT MPIDE software can also be obtained in the chipKIT forums:
www.github.com/chipKIT32 (software
download)
www.chipKIT.org/wiki www.chipKIT.org/forum
Cerebot MX7cK Reference Manual
Board Hardware Description
The following describes the various hardware features of the Cerebot MX7cK board and the PIC32XM795F512L microcontroller.
Board Power Supply
Switch SW1, in the lower left corner of the board is the power switch. Place this switch in the ON position to turn on board power and in the OFF position to turn off board power.
The Cerebot MX7cK may be USB powered via either the USB debug port, the USB UART port, or the USB device port. Alternatively, the board may be powered via dedicated, “external”, power supply connectors.
Jumper block J3 selects the power source used to provide power to the board. This jumper block provides the following four positions:
USB – power is supplied by USB device
connector J19. This is used when the Cerebot MX7cK is being used to implement a USB bus powered device.
EXT – Power is supplied by one of the
external power connectors.
DBG – Power is supplied by DEBUG USB
connector J15.
UART – Power is supplied by UART USB
connector J2.
Place the shorting block in the appropriate position on J3 for the desired power source for the board.
The Cerebot MX7cK is rated for external power from 3.6 to 5.5 volts DC. Using a voltage outside this range will damage the board and connected devices. For most purposes, when using external power, a regulated 5V supply should be used. If the board is operated from an external supply with a voltage less than 5V, some features won’t work correctly.
The USB specification requires that USB devices not draw more than 100mA of current
until they have enumerated on the USB bus and informed the host that they want to consume more current. To meet this specification, the debugger circuit turns on main board power by driving the PWR_ON signal high after successfully enumerating on the USB bus. The bus labeled on the schematic as VCC5V0 is powered when this occurs. The VCC5V0 bus powers the input to the main board voltage regulator, the input voltage to the USB bus voltage load switch used when using the board as a USB host, the power supply voltage for the CAN transceivers, and the 5V0 side of the power select jumpers for the Pmod connectors. The voltage on the VCC5V0 bus will be 5V when the board is being operated from USB power or an external regulated 5V supply. If a different external supply voltage is used, that voltage will appear on the VCC5V0 bus.
The power supply selected by the shorting block on J3 will appear on the input power supply bus, labeled VIN in the schematic. This voltage is regulated to 3.3V to power the licensed debugger circuit by IC11, a Microchip MCP1801 Low Dropout voltage regulator. This regulator is turned on and the debugger circuit is powered whenever the power switch is in the on position. The VIN power bus also supplies power to IC9, a PFET load switch used to turn main board power on or off.
When the power switch is turned on, transistor Q7A attempts to drive the ON/OFF pin of IC9 high to enable the main power supply.
If the licensed debugger is connected to an active USB port, it initially disables the main power supply by holding the PWR_ON signal low. This causes Q8B to hold the ON/OFF pin of IC9 low, forcing the main supply off. The licensed debugger will enumerate with the host computer and once it has successfully enumerated, will turn on the main board power supply by driving the PWR_ON signal high.
If the licensed debugger is not connected to an active USB port, the signal labeled DBG5V0 will not be powered. Transistor Q8B will be unable to hold the ON/OFF pin low and the
www.digilentinc.com page 5 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
main power supply will be turned on immediately when the power switch is turned on. When load switch IC9 is turned on, it powers the board unregulated power bus VCC5V0, which provides the input power to the main regulator.
The main board power supply is a switch mode voltage regulator implemented using a Microchip MCP16301 switch mode step-down regulator, IC10. This regulator provides 3.3V at up to 600 mA with approximately 96% efficiency. When the main power supply is enabled, it powers the regulated power bus VCC3V3
When powering the board from an external power supply, there are two connectors that can be used: J17 and J18.
The barrel connector, J17, is used to power the board from a “wall wart” style power supply. This type of power supply is available from many sources. Digilent has a power supply available, the 5V Switching Power Supply, that can be used with connector J17. Connector J17 is a 2.5mm x 5.5mm coaxial connector wired with the center terminal as the positive voltage.
Connector J18 is a screw terminal connector for an alternative power supply connection for use with battery packs, bench supplies or other power sources where use of a hard wired power supply is desirable.
Connectors J17 and J18 are wired in parallel and connect to the EXT position on the Power Select jumper block J3. A shorting block
should be placed on the “EXT” position of J3
when using this option for board power. Only one of the external power connectors should be used at a time. If multiple power supplies are connected simultaneously, damage to the board or the power supplies may occur.
When the Cerebot MX7cK is operating as a USB host, an external power supply connected to either J17 or J18 must be used to power the board. In addition to powering the logic on the
USB bus voltage supplied to any connected USB device and must be a regulated 5V with at least 500mA current capability to meet the USB specifications.
The CAN bus operates at 5V, and therefore the transceivers for the two CAN interfaces require 5V to operate correctly and within the CAN specification. When using the CAN network interfaces, the board should be operated from a 5V supply if using an external power supply.
The PIC32 microcontroller and on-board I/O devices operate at a supply voltage of 3.3V provided by the VCC3V3 bus. The main voltage regulator is capable of providing a maximum of 600mA of current. The PIC32 microcontroller will use approximately 85mA when running at 80MHz. The SMSC LAN8720 Ethernet PHY consumes approximately 45mA when operating at 100Mbps. The Microchip MCP2551 CAN transceivers can draw up to 75mA each when operating the CAN busses. The other circuitry on the board will draw 10-20 mA. The remaining current is available to provide power to attached Pmods and I2C devices.
The Cerebot MX7cK can provide power to any peripheral modules attached to the Pmod connectors, JA-JF, and to I2C devices powered from the I2C daisy chain connectors, J7 and J8. Each Pmod connector provides power pins that can be powered from either the switched main power bus, VCC5V0, or regulated voltage, VCC3V3, by setting the voltage jumper block to the desired position. The I2C connectors only provide the regulated voltage, VCC3V3.
Pmod™ Connectors
The Cerebot MX7cK has six connectors for connecting Digilent Pmod peripheral modules. The Pmod connectors, labeled JA–JF, are 2x6 pin, right-angle, female pin header connectors. Each connector has an associated power select jumper block labeled JPA–JPF.
Cerebot MX7cK board, this supply provides the
www.digilentinc.com page 6 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
Digilent Pmods are a line of small peripheral modules that provide various kinds of I/O interfaces. The Pmod product line includes such things as button, switch and LED modules, connector modules, LCD displays, high current output drivers, various kinds of RF interfaces, and many others.
There are two styles of Pmod connector: six­pin and twelve-pin. Both connectors use standard pin headers with 100mil spaced pins. The six-pin connectors have the pins in a 1x6 configuration, while the twelve-pin connectors use a 2x6 configuration. All of the Pmod connectors on the Cerebot MX7cK are twelve pin connectors.
Six-pin Pmod connectors provide four I/O signals, ground and a switchable power connection. The twelve-pin connectors provide eight I/O signals, two power and two ground pins. The twelve-pin connectors have the signals arranged so that one twelve-pin connector is equivalent to two of the six-pin connectors. Pins 1–4 and 7–10 are the signal pins, pins 5 and 11 are the ground pins and pins 6 & 12 are the power supply pins.
The pin numbering that Digilent uses on the twelve-pin Pmod connectors is non-standard. The upper row of pins are numbered 1–6, left to right (when viewed from the top of the board), and the lower row of pins are numbered 7–12, left to right. This is in keeping with the convention that the upper and lower rows of pins can be considered to be two six­pin connectors stacked. When viewed from the end of the connector, pin 1 is the upper right pin and pin 7 is immediately below it (closer to the PCB).
Each Pmod connector has an associated power select jumper. These are used to select the power supply voltage supplied to the power supply pins on the Pmod connector. They are switchable between either the unregulated power supply, VCC5V0 or the 3.3V main board supply, VCC3V3. Place the shorting block in the 3V3 position for regulated 3.3V and in the 5V0 position to use the unregulated supply.
Each signal pin on the Pmod connectors is connected to an input/output pin on the PIC32 microcontroller. Each pin has a 200 ohm series resistor and an ESD protection diode. The series resistor provides short circuit protection to prevent damaging the I/O block in the microcontroller if the pin is inadvertently shorted to VDD or GND, or two outputs are shorted together. The ESD protection diode protects the I/O block from damage due to electro-static discharge.
The 200 ohm resistor in series with each I/O pin limits the amount of current that can be sourced from the microcontroller pins. There will be a 200mV voltage drop per mA of current sourced by the pin. This will not be a problem when driving typical, high impedance, logic inputs, but can be problematic when trying to drive low impedance inputs. If some cases, it may be necessary to use external buffers when trying to drive low impedance inputs.
Although ESD protection is provided between the connector pins and the microcontroller pins, ESD safe handling procedures should be followed when handling the circuit board. The pins on the microcontroller and other circuits on the board are exposed and can be damaged through ESD when handling the board.
Digilent Pmod peripheral modules can either be plugged directly into the connectors on the Cerebot MX7cK or attached via cables. Digilent has a variety of Pmod interconnect cables available.
See the Pinout Tables in Appendix C, below, for more information about connecting peripheral modules and other devices to the Cerebot MX7cK. These tables describe the mapping between pins on the PIC32MX795 microcontroller and the pins on the various connectors.
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 input/output voltage range (VOL 0.4V, VOH 2.4V) the pin current must be restricted to
www.digilentinc.com page 7 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
+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 digital I/O pin is 5.5V. The maximum voltage that can be applied to any analog input capable pin is
3.6V. For more detailed specifications, refer to the PIC32MX5XX/6XX/7XX Family Data Sheet.
Digital Inputs and Outputs
The Cerebot MX7cK board provides access to 48 of the I/O pins from the PIC32MX795 microcontroller via the Pmod connectors. Four additional I/O pins can be accessed via the I2C connectors, J7 and J8. Any of the pins on the Pmod or I2C connectors can be individually accessed for digital input or output. Note that when the I2C signals on J7 or J8 are being used for I2C communications, they are not available for general purpose I/O.
On PIC32 microcontrollers, the input/output pins are grouped into I/O Ports and are accessed via peripheral registers in the microcontroller. There are seven I/O Ports numbered A–G and each is 16 bits wide. Depending on the particular PIC32 microcontroller, some of the I/O Ports are not present, and not all 16 bits are present in all I/O Ports.
Each I/O Port has four associated registers: TRIS, LAT, PORT, and ODC. The registers for I/O Port A are named TRISA, LATA, PORTA and ODCA. The registers for the other I/O Ports are named similarly.
The TRIS register is used to set the pin direction. Setting a TRIS bit to 0 makes the pin an output. Setting the TRIS bit to 1 makes the pin an input.
The LAT register is used to write to the I/O Port. Writing to the LAT register sets any pins configured as outputs. Reading from the LAT register returns the last value written.
The PORT register is used to read from the I/O
the current state of all of the pins in the I/O Port. Writing to the PORT register is equivalent to writing to the LAT register.
PIC32 microcontrollers allow any pin set as an output to be configured as either a normal totem-pole output or as an open-drain output. The ODC register is used to control the output type. Setting an ODC bit to 0 makes the pin a normal output and setting it to 1 makes the pin an open drain output.
Refer to the PIC32MX5XX/6XX/7XX Family Data Sheet, and the PIC32 Family Reference Manual, Section 12, IO Ports, for more detailed information about the operation of the I/O Ports in the microcontroller.
Pmod connector JF, pins 8, 9, and 10 are connected to the signals TCK/RA1, TDI/RA4, and TDO/RA5 respectively. These microcontroller pins are shared between general purpose I/O functions and use by the JTAG controller. The JTAG controller is enabled on reset, so these pins are not available for general purpose I/O until the JTAG controller is disabled. The following statement can be used to disable the JTAG controller:
DDPCONbits.JTAGEN = 0;
The JTAG controller is disabled by the startup initialization code in the MPIDE runtime. It is not necessary to disable the JTAG controller when using the board with MPIDE.
The chipKIT MPIDE system uses logical pin numbers to identify digital I/O pins on the connectors. These pin numbers start with pin 0 and are numbered up consecutively.
On the Cerebot MX7cK, pin numbers 0-47 are used to access the pins on the Pmod connectors and pin numbers 55-58 are used for the signal pins on the I2C connectors, J7 and J8. The pin numbers are assigned so that connector JA pin 1 (JA-01) is digital pin 0, JA pin 2 (JA-02) is digital pin 1, and so on.
Port. Reading from the PORT register returns
www.digilentinc.com page 8 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
Pins 0-7 are on connector JA, pins 8-15 on JB, pins 16-23 on JC, pins 24-31 and so on. Refer to the tables in Appendix B for detailed information about the pin mapping between Pmod connector, logical pin number, and PIC32 microcontroller pin number and pin function.
When using the Cerebot MX7cK with the chipKIT MPIDE the functions pinMode(), digitalRead(), and digitalWrite() are used for digital pin I/O.
The pinMode() function is used to set the pin direction. Pin direction can be set to: INPUT, OUTPUT, or OPEN. OPEN is used for open­drain and implies output.
The digitalRead() and digitalWrite() functions are used to read or write the pins. DigitalRead() returns the current state of the specified pin, and digitalWrite is used to set the state of an output pin. The pin state can be either HIGH or LOW.
Push Buttons and LEDs
The Cerebot MX7cK board provides three push button switches for user input and four LEDs for output. The buttons, BTN1 and BTN2 are connected to I/O Port G, bits 6 and 7 respectively. BTN3 is connected to I/O Port A, bit 0. To read the buttons, pins 6 and 7 of I/O Port G and pin 0 of I/O Port A must be configured as inputs by setting the corresponding bits in the TRISG and TRISA registers. The button state is then obtained by reading the PORTG or PORTA registers. When a button is pressed, the corresponding bit will be high (‘1’). The pins used by the buttons are dedicated to this use and do not appear on any connector.
Button BTN3 is connected to the signal TMS/RA0 on the PIC32 microcontroller. This microcontroller pin is shared between general purpose I/O functions and use by the JTAG controller. The JTAG controller is enabled on reset, and so BTN3 is not useable as a button input until the JTAG controller is disabled. The
following statement can be used to disable the JTAG controller:
DDPCONbits.JTAGEN = 0;
The JTAG controller is disabled by the startup initialization code in the MPIDE runtime. It is not necessary to disable the JTAG controller when using the board with MPIDE.
The four LEDs are connected to bits 12-15 of I/O Port G. LED 1 is connected to bit 12, LED 2 is connected to bit 13, and so on. These four pins are dedicated to use with the LEDs and do not appear on any connector pin. To use the LEDs, configure the desired bits as outputs by clearing the corresponding bits in the TRISG register. The state of an LED is set by writing values to the LATG register. Setting a bit to 1 will illuminate the LED and setting the bit to 0 will turn it off.
When using the MPIDE and the chipKIT system, the buttons are accessed using digitalRead() and the LEDs using digitalWrite(). Use the following pins to access them:
BTN1 – PIN_BTN1, pin 48, RG6 BTN2 – PIN_BTN2, pin 49, RG7 BTN3 – PIN_BTN3, pin 50, RA0 LD1 – PIN_LED1, pin 51, RG12 LD2 – PIN_LED2, pin 52, RG13 LD3 – PIN_LED3, pin 53, RG14 LD4 – PIN_LED4, pin 54, RG15
5V Signal Compatibility
The PIC32 microcontroller operates at 3.3V. And the I/O pins provide 3.3V logic levels. It is possible, in some circumstances, to use the Cerebot MX7cK to operate with 5V logic devices however.
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.
www.digilentinc.com page 9 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
The digital only I/O pins on the PIC32 microcontroller are 5V tolerant. It is safe to apply 5V logic signals directly to these pins without risk of damage to the microcontroller.
The analog capable I/O pins on the PIC32 are not 5V tolerant. The absolute maximum voltage rating for the analog pins is 3.6V. Generally, the analog pins are the pins on I/O
with pins that are not 5V tolerant on the PIC32 microcontroller.
RESET
A reset button is at the upper right corner of the board. Pressing this button will reset the PIC32 microcontroller.
port B, however, there are other non-5V tolerant pins on the device.
Refer to the PIC32MX5XX/6XX/7XX Family Data Sheet for more information about which pins on the device are 5V tolerant before applying input signals higher than 3.3V to any pin on the Cerebot MX7cK board.
If a 5V signal is applied to a non-5V tolerant pin, some external means must be used to limit the applied voltage to 3.6V or less. The Cerebot MX7cK board provides 200 ohm series resistors between the microcontroller pins and the Pmod connector pins. These resistors are primarily intended to provide short circuit protection on the outputs, but will also provide limited protection if a 5V signal is inadvertently applied to a non-5V tolerant pin.
One technique that can be used to limit an input voltage to a safe level is to use a 200 ohm series resistor and Shottky diode connected to the 3.3V supply to clamp the voltage.
The minimum output high voltage 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 inputs will work reliably with 3.3V inputs. If the 3.3V logic output is not sufficient for 5V
logic input to be reliably seen as a logic high input signal, some external means must be used to raise the output level. In some cases, a pull-up resistor to 5V is sufficient. A pull-up resistor in the range of 2Kohm–10kOhm can be used. This technique should not be used
www.digilentinc.com page 10 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Cerebot MX7cK Reference Manual
PIC32 Peripheral Devices
The following describes the peripheral devices available in the PIC32MX795F512L microcontroller and how they are accessed on the Cerebot MX7cK board.
CPU Clock Source
The PIC32 microcontroller supports numerous clock source options for the main processor operating clock. The Cerebot MX7cK board is designed to operate with either a silicon resonator from Discera, IC2, for use with the EC oscillator option, or an external crystal, X1, for use with the XT oscillator option. Standard production boards will have an 8Mhz Discera silicon resonator loaded and the EC oscillator option should be used. If IC2 is not loaded, an 8Mhz crystal will be loaded for X1 (on the bottom of the board) and the XT oscillator option should be used. Oscillator options are selected via the configuration settings specified using the #pragma config statement. Use #pragma config POSCMOD=EC to select the EC option and #pragma config POSCMOD=XT to select the XT option.
Using the internal system clock phase-locked loop (PLL), it is possible to select numerous multiples or divisions of the 8Mhz oscillator to produce CPU operating frequencies up to 80Mhz. The clock circuit PLL provides an input divider, multiplier, and output divider. The external clock frequency (8Mhz) is first divided by the input divider value selected. This is multiplied by the selected multiplier value and then finally divided by the selected output divider. The result is the system clock, SYSCLK, frequency. The SYSCLK frequency is used by the CPU, DMA controller, interrupt controller and pre-fetch cache.
The operating frequency is selected using the PIC32MX795 configuration variables. These are set using the #pragma config statement. Use #pragma config FPLLIDIV to set the input divider, #pragma config
FPLLMUL to set the multiplication factor and #pragma config FPLLODIV to set the
output divider. Refer to the PIC32MX5XX/6XX/7XX Family Data Sheet and the PIC32MX Family Reference Manual, Section 6. Oscillators for information on how to choose the correct values, as not all combinations of multiplication and division factors will work.
In addition to configuring the SYSCLK frequency, the peripheral bus clock, PBCLK, frequency is also configurable. The peripheral bus clock is used for most peripheral devices, and in particular is the clock used by the timers, and serial controllers (UART, SPI, I2C). The PBLCK frequency is a division of the SYSCLK frequency selected using #pragma
config FPBDIV. The PBCLK divider can be
set to divide by 1, 2, 4, or 8. The following example will set up the Cerebot
MX7cK for operation with a SYSCLK frequency of 80Mhz and a PBCLK frequency of 10Mhz:
#pragma config FNOSC = PRIPLL #pragma config POSCMOD = EC #pragma config FPLLIDIV = DIV_2 #pragma config FPLLMUL = MUL_20 #pragma config FPLLODIV = DIV_1 #pragma config FPBDIV = DIV_8
Documentation for the PIC32 configuration variables can be found in the PIC32MX Configuration Settings guide. This is found using the “Help.Topics…” command in the MPLAB IDE. Also, refer to Appendix C for an example of setting the configuration variables.
When using the Cerebot MX7cK with the chipKIT MPIDE software, the clock source is set by the boot loader and no action is required.
Ethernet Interface
The Cerebot MX7cK provides the ability to interface with 10Mbps or 100Mbps Ethernet networks. The PIC32MX795 microcontroller contains a 10/100 Ethernet Medium Access Controller (MAC). External to the PIC32 microcontroller, the Cerebot MX7cK board provides an SMSC LAN8720 Ethernet Physical
www.digilentinc.com page 11 of 36
Copyright Digilent, Inc. All rights reserved. Other product and company names mentioned may be trademarks of their respective owners.
Loading...
+ 25 hidden pages