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
Premise:
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 (https://reference.digilentinc.com/reference/microprocessor/basys-mx3/start).
I will briefly list here what I found interesting:
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.
Conclusions:
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.