BASYS MX3 Trainer Board - Review

Table of contents

RoadTest: BASYS MX3 Trainer Board

Author: richi810

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?:

What were the biggest problems encountered?:

Detailed Review:

Digilent BASYS MX3 Road Test



Digilent BASYS MX3 is an MCU trainer board based on the PIC32MX370F512L 32-bit  Microcontroller from Microchip, intended for teaching the basics of embedded systems programming by providing a set of on-board peripherals the MCU can interact with. As an engineering student with some experience in PIC microcontrollers, during the road test, I tried to ask myself if BASYS MX3 is actually a suitable and effectual instrument for that purpose and what kind of user it addresses.


Getting started:

In order to program and debug the board, you will need to download and install MPLAB X IDE, the integrated development environment by Microchip. You also need the XC32 C compiler in order to convert your C program into a binary format that the MCU can read and execute. Both the IDE and the compiler are made available by Microchip for free.


Support material:

Digilent provides a lot of support material for the board (

I will briefly list here what I found interesting:


  • The reference manual: this is mainly focused on the structure of the board and on the description of the connectivity and functionality of each peripheral. I found it a useful way to have a quick look at the pin mappings while programming the board. It also provides some information about the syntax of basic C language instructions such as those needed to access individual bits in the registers, which may be unknown to newcomers who deal with PICs for the first time;


  • Example projects and libraries: this includes libraries that allow you to manage the on-board peripherals with high-level C functions, which is useful if you want to reach a high level of abstraction and focus more on the control flow of your project rather than spending time in optimizing a low-level program. You just have to include the C and header files you need in your MPLAB X project and you can straightaway make use of the peripherals. Information about the libraries (such as files to be included, descriptions of the functions, syntax to be used, ecc.) can be found in a 94 pages .docx document included in the downloadable files. Together with the libraries, demo projects are made available: you can quickly upload them to your board in order to have a look at what the peripherals can be used for, and you can explore the code so to see what an actual embedded project looks like, which I find very useful from a didactic point of view.


  • Workshop by Professor Frank Mason from Seattle University: this includes five activities dealing with embedded systems related concepts, yet they require additional hardware such as PMod boards or DC motors. However, you can consult them so to gather some interesting information about how to set up an MCU to face an engineering problem and to go through example codes. Moreover, they provide instructions on how to create an MPLAB X project and upload it to the board, which in my opinion was not very clear from the reference manual, especially for a complete newcomer.


  • Digilent Coursework: this consists of seven learning units guiding the user through very important embedded systems related contents, ranging from the basics of managing digital I/Os, to more complex concepts like interrupts and serial communication, to audio signal processing, which is a quite advanced topic and allows to show the high processing power of the PIC32 microcontroller. It also provides advice on how to set up a project in MPLAB X in order for it to be uploaded to the BASYS MX3, although some information may be out of date due to updates of the software. Nevertheless, lots of hyperlinks to official Microchip resources are included. Each unit concludes with a couple of laboratory activities guiding the reader through the development of a project based on the previously addressed notions. I believe this coursework is definitely worth giving a look, especially for those who want to learn how to develop embedded systems with PICs.



The board:

BASYS MX3 comes with a compact and easy-to-open cardboard package, containing the board enclosed in two layers of (possibly ESD) foam. No cables are included, but that is not a big problem: you can connect the board to your laptop with a micro-USB cable, which you can get from an old phone charger. Make sure not to use a power-only cable, or you are going to lose half an hour searching online for why your laptop does not recognize the board when you plug it in (true story, I regret to admit). Once you have done that, you are ready for programming and debugging BASYS MX3. The presence of micro-USB ports on the board surprised me, as I had taken for granted standard B-type USB ports to be present and did not notice this from the pictures online: in my opinion, this is a cool feature, contributing to the compactness of the board.


The upper side of the board features the PIC microcontroller surrounded by the peripherals: despite the compactness of the board, everything appears to be well spaced and accessible. Simple peripherals like LEDs, pushbuttons and switches are present, allowing the user to practice with basic digital I/O. I was a bit disappointed by the 8 switches not being connected to contiguous I/O port pins of the microcontrollers (like the 8 LEDs are), since this prevents the switches to be set as a group: the pins must be individually assigned, which makes the code prone to errors. This also applies for the anodes and cathodes of the LEDs of the 7-segment display. However, this issue can be handled by making use of library functions. Other 'standard' peripherals (in my experience, at least), are the 4-digit 7-segment display and the LCD display (2 rows, 16 characters per row), whose backlight can be turned on and off via a dedicated switch. The board also features a potentiometer, allowing you to provide an analog voltage value (0 to 3.3V) to the ADC. Loop wires are present, so that you can also probe the potentiometer with an oscilloscope.

What makes this board peculiar are the uncommon peripherals it comes with. These include: a MEMS microphone and a speaker (which can be driven by a PWM digital signal), both equipped with potentiometers to adjust the volume. A female jack connector allows you to by-pass the on-board speaker and connect your own loudspeaker or headphones; a very bright RGB LED, which is fun to drive with PWM, but could also be used just as an additional LED for digital outputs; two servo connectors and a motor control module (which unfortunately I was not able to test since I am totally inexperienced with motors); a 3-axis accelerometer connected to the MCU via I2C interface: this may seem a strange peripheral to be included on a board like BASYS MX3, since it is likely to be used while laid on a desk and plugged into a laptop's USB port rather than woven around the room, but actually it offers valuable didactic opportunities related to I2C serial communication and sensor managing; an IrDA module: it is so tiny that I almost did not notice it while inspecting the board for the first time, but it is the peripheral that surprised me the most, since I had never seen a microcontroller board featuring one. It allows you to practice with infrared communication, which in my opinions opens the way for lots of interesting applications.



Programming and debugging:

Writing code and programming the board only requires MPLAB X IDE, the integrated development environment which can be downloaded for free from the Microchip website: no additional programming tools are needed. MPLAB X IDE is in my view a very simple and intuitive software to use, although it may be a little tricky for a complete newcomer to become familiar with it. In case of need, the coursework by Digilent guides the user through the setup of a standard project, which requires, among other things, setting the configuration bits for the MCU and adding header and C source files. Once you have done that, you can start coding and finally program the board so to see your embedded project come to life.

What I really like about this software is the debugger, which is, in my opinion, an indispensable tool for those who are into embedded systems design: it allows you to follow the execution of your software step by step, one code line at a time. This is really helpful when you are trying to find errors in your code since it lets you understand when exactly things start to go wrong during execution: you can both see how the board behaves and keep track of which registers and variables are updated at each step. I believe this is much better than reading through the code again and again.




BASYS MX3 is definitely a high-quality tool, suitable for the purpose for which it is intended, that is, for teaching embedded systems. It is compact, tidy, easy to use, and its wide range of on-board peripherals offer oodles of possibilities to explore the capabilities of embedded systems. The large amount of online resources is a key factor in making BASYS MX3 employable by a wide range of users, from learners to more experienced designers. In fact, in my view this board is suitable also for those who are already experienced in embedded systems programming and are looking for a good quality development tool for fast prototyping, without having to set up breadboard circuits and connections: developing a complete embedded system only takes one board and one cable with BASYS MX3.