RoadTest: BASYS MX3 Trainer Board
Author: 14rhb
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?: No products appear as feature packed as this Digilent BASYS MX3. There are several Microchip Curiosity boards aimed at the PIC32MX but they really lack the integrated peripherals required for a single trainer board. The Microchip PIC32MX XLP starter kit has some good peripherals.
What were the biggest problems encountered?: Because the training materials and software are by different vendors they diverge and perhaps are only current for a short period of time. The same is true IMO when looking at ARM devices and the many 3rd party support tools. This can cause issues for self-taught newcomers where exact screenshots in a guide are vital to give confidence and guidance.
Detailed Review:
A long time ago I bought a PIC starter kit when they were just taking off complete with a 16F84 device. I liked the simplicity and ability to effectively undertake configurable logic/coding in the device whilst not having to develop an ASIC or undertake lots of board wiring. I carried on for years sticking with what I understood although my designs got more complex they also remained using the MPASM assembler rather than moving to the C compiler. Eventually I made that jump and was amazed at how easy code generation in a microcontroller could be. My projects in recent years have nearly all been 8-bit using the Microchip XC8 compiler.
This roadtest covers the Digilent BASYS MX3 development board which is based on a 32-bit microcontroller from the Microchip Inc PIC32MX range. When I saw this roadtest appear on Element14 I was very excited as the board appeared to have a huge wealth of peripherals as well as covering this more capable device range. I often prototype up code examples and breadboard them out which is far from ideal and can lead to wasted time when a wire slips out. A board like this BASYS MX3 appealed to me as it is a quick and easy 'grab' for developing an idea - should that prove interesting and viable I could move onto consolidating the component count and optimising the board size via a custom PCB.
I can also see this Digilent board having great appeal to educational institutions due to the inclusion of a broad range of useful peripherals.
Rather than overload this roadtest document with the finer technical detail I decided to write a series of separate blog posts and to pull the salient information from those blogs into this final roadtest report, I hope it works and would be interested to know what the community think.
Whilst waiting for the board to arrive I wrote a pre-roadtest blog and afterwards I have been experimenting with the board for the last month and have written three more blogs. These blogs are:
Whilst waiting for the Digilent BASYS MX3 board to arrive I decided to write an introduction blog post detailing some of the history behind the PIC microcontroller range, how the software is generated, how they are programmed and any other helpful ideas I have accumulated over the years while I have been using them. I think this approach works well and I will adopt it on any future roadtests applications I am successful at; it also helps prepare for the testing phase.
The BASYS MX3 board arrived via UPS. I detailed the following aims for myself in this blog post#1 :
It was difficult not to jump straight in and so after a quick check of the power requirements I did end up powering-up the board almost straight away. It came up with a very nice demo where the LEDs flashed and a welcome message was displayed.
I then had a look at the Digilent website which is very detailed and well laid out. The user manual is provided as both online and PDF, and what I particularly liked was that it was of a reasonable length for a starter document...however it soon left me lost as a newcomer. My point being here that a newcomer benefits from seeing the exact screen shots they have on their own computer screen: with instructions of "click here", "add this" etc. After some searching around I was able to find several discussions about project startup and with my previous knowledge of how PIC and MPLAB worked I was soon able to progress over this initial hurdle.
I think one of the problems here is that the board is Digilent whereas the MLBAB X IDE is via Microchp Inc. and the latter will get updated to newer versions in time, at which point any training material screenshots and instructions start to diverge. It might have been better to explain that concept very early on to the newcomer - suggesting the way of finding the latest MPLAB X IDE instructions. Although whatever approach is taken I am sure after a few months the two still show inconsistencies and so a difficult issue to remedy without a constant effort by the 3rd party vendor to update their material everytime the IDE is updated.
The 'Tutorials' section of the Digilent website, shown above, only has a link to using this board with the Arduino IDE. Now that is a great addition as that Arduino IDE is very easy to use and popular. IMO this section should have an additional link detailing "Digilent BASYS MX3: Beginners Guide" where the whole process of MLAB X IDE install is better laid out and the reader guided through. There is some really good material but I found it hidden in the Seattle University and Digilent training materials.
Moving on I had a closer look at what was on the board and hopefully my diagram below explains much of the board's broad capability. Additionally the board has a 3-axis accelerometer, reset button, the PIC32MX370 and 4GB SPI Flash RAM. There is also a unique Diligent debug header on the rear of the board which works with the Digilent Analog Discovery 2 debug unit Analog Discovery 2 + LabView Home Bundle .
The board is feature rich and ideal for testing out and learning many different concepts that can later be applied to a bespoke board design or application. I particularly like the addition of Pmod breakouts, although I would have also been surprised if they were not included as they are a Digilent standard.
There are several pieces of software that can assist in the development of a PIC32MX application and these are:
My software install went very smoothly. First I installed the MPLAB X IDE v5.25, which also installed MPLAB X IPE. These are:
Following that step I installed the XC32 C compiler from the Microchip website. Installation on a 64-bit Windows machine was also easy and without incident.
For building my own projects later there are so many registers involved in a modern PIC device that it would be a difficult task ensuring they are all setup correctly. The MCC is a plugin for Netbeans MPLAB X IDE and allows a graphical method to set up peripheral register values before creating header and source files for the finished project to call upon. It is actually quite neat and allows the developer to move back and forth between the two systems.
Additional software called Harmony is available from the Microchip website and is specifically aimed at 32-bit MCU. On first glance it is a software framework for embedded 32-bit PIC solutions and helps the software engineer to abstract away from device hardware. For anyone familiar with ARM programming on Keil etc then this is probably very similar and for STM devices their STM32Cube software libraries. I only briefly looked at using this in my blogs as I was not creating a project from scratch. In the coming moths as I experiment further with this board I can see myself making use of the Harmony 3 code plugin.
In my blog Digilent BASYS MX3: #1 Software Setup and Development Cycle I was able to successfully load a project from the LibPack (detailed below) and run it on the Digilent BASYS MX3 board. To be fully convinced I was generating the code I then modified the simple IO demo to include a couple of other push button and LED colour combinations.
More detail on the software install, including screen shots can be found in my Digilent BASYS MX3: #1 Software Setup and Development Cycle blog.
In this blog post I aimed to achieve the following:
The LibPack was downloaded and unzipped from the Digilent website. It contains C source and header files for each of the onboard peripherals and helps abstract the low level functions required to operate those peripherals into easier to use C functions. Within the LibPack download there are twelve MPLAB X IDE projects that can be loaded up and programmed to the BASYS MX3 board. These projects are:
The LibPack negates much of the hard work for the developer by providing a consistent framework of peripheral functions that are guaranteed to work. For anyone familiar with the STM32 ARM development they will know a similar setup called STM32Cube.
I loaded each of these projects into MPLAB X IDE and explored what they did prior to downloading the binary file to the BASYS MX3 board. This blog#2 contains videos of each project in operation and I found the Pmod section very interesting as I plan to use this for my own projects:
I found using and exploring the LibPack demos to be a great introduction as I could see the full capability of the board whilst not having issues copying or writing any code. Instead I could use that time to explore how the code was written and what files were located where in the MPLAB X IDE project structure. To me this was an invaluable learning experience. What was apparent was that all the code in these projects was being undertaken in a 'non-Real-time Operating System' methodology. Perhaps that simplicity was also good for me, as at this point I was still unclear what the RTOS was.
My aims for this blog were:
The online tutorial by Seattle University covers five topics which are:
Unfortunately for me I found I was unable to undertake several of these activities as I didn't have the required hardware. However the training material is excellent quality and also included a final video, so people like me could see what it was meant to do. Each activity came with a downloadable zip file of the project which allowed the activity to be run quickly, getting that instant 'wow' factor. There are some really good engineering topics covered in these five tutorials and my plan is to get the parts I need and then return to try them out.
These activities used the Real-time Operating System (RTOS) and were, IMO, a great introduction - being able to see it achieve something straight away rather than spend hours of coding only to end with a page of error codes! I'm sure we can all relate to that experience on a new board/system.
Activity five utilised FFT's and was particularly interesting to me and something I want to delve back into to really understand the concepts and code.
The Digilent training for the BASYS MX3 consisted of seven learning units:
The style of the Digilent tutorial was a bit confusing at first as there were so many hyperlinks it was easy to get sidetracked and lost on the actual aim. After a while I got used to that change in style and it really wasn't an issue, in fact probably quite nice that I could link out to Wikipedia etc as and when I needed some extra help.
Each unit consists of many pages of training material before linking off to some equally detailed assignments. I undertook the two activities in Unit 1 which included the following simple binary calculator (using RTOS functions):
I concluded from this investigation there is a huge wealth of great information in this Digilent training material but it is also much more than can be undertaken and covered in the time period for this roadtest review. This material is more akin to the Path II Programmable or other training package. I then skimmed through the material so I knew what was in each unit as I plan to then read them later when I need a particular functions in my own projects.
Some of these learning units in the Digilent range were very comprehensive. What I did notice was that the technical discussions were very device and manufacturer agnostic - therefore if you like making things with microcontrollers I really suggest you read through some of this detailed training material. If you want the full experience then I suggest you also get a Digilent BASYS MX3 board.
The Digilent BASYS MX3 board is feature packed - it contains many integrated peripherals and breakout connectors to enable fast prototyping of designs and concepts.
It is compact and easy to power. I ran my board almost entirely via the USB debug port, apart from when I undertook some DC motor experiments.
I was lucky enough not to have to buy my board as Element14 kindly gave me it as part of their RoadTests & Reviews. But it is a low-cost board and, if I had spent that money out of my own pocket, on reflection I would be very pleased with this product and the value-for-money it gives.
Being based on Microchip's MPLAB X IDE the software is entirely free (unless you wish to optimise the compiler code) and has a good wide user-base of support. There are many examples of code for both this Digilent BASYS MX3 board and the PIC32MX devices themselves.
Much of the Digilent training material is agnostic of device and manufacturer - a very worthy read to anyone making microcontroller projects.
Although initially very impressed with the documentation I did struggle through the Digilent website at first. The reference manual didn't really explain how to setup a project for the complete newcomer. It reminded me of my past struggles with ARM boards where those roadtesters that were already familiar with similar boards sped ahead in their roadtests whilst I initially struggled to get past the selection of IDE.
I also didn't find the inclusion of the accelerometer IC to be the best choice of peripheral for this product. This is because to implement any project that measures shaking or shock requires the board to be subjected to harsh movement. Whilst that is fine for a battery powered production unit this development board is tethered to a PC for comms and power...and those micro-USB have little solder pads holding them to the PCB. Therefore I was reluctant to wave my BASYS MX3 board around during one of the demo projects opting instead for a few thumps of the table it was sat on. I've ripped the micro-USB off a previous roadtest board but luckily I was able to repair it. I could imagine many educators skipping past that section rather than have a class of students waving the boards around. I believe a magnetometer would have been a better choice of peripheral as it would incur gentler movement and less risk of damage to the board.
Another device I think would have benefited the Digilent BASYS MX3 board would have been a Real-time Clock Counter (RTCC) and that could have allowed some really great projects to be developed, especially with the availability of the LCD display. There appears to be plenty of PCB spare for the coin cell backup supply, so maybe something that can be added to future boards?
My two points can easily be mitigated with the addition of Pmod devices:
I was also reluctant to use the motor drive capability as I didn't want to carelessly damage the board during the roadtest. In time I will likely explore that capability some more. What would have been great is to have the motor drive as a DIL IC so replacement could be undertaken easily.
Early on I had issues with the programming of the board. It worked once and then refused to allow a reprogram. The work around was often simply turning the board off and back on, although that took time. As I progressed I didn't notice this happening so often and perhaps I found a better way of selecting the board - I'm not really sure what the issue was or how I remedied it, sorry.
There is very little for anyone with an interest in micrcocontrollers not to like about this product. I found the development board a real joy to use: it is compact yet feature packed, the training materials and support libraries are very comprehensive. The additional ports and buses such as Pmod allow expansion as the developer requires with additional, and low-cost, Pmod boards. The board has the potential to support many projects and has a good amount of processing power (for a microcontroller) whilst remaining simple enough to understand.
And lastly I have gained that appreciation of RTOS that I was so eager to learn about - I am far far away from fully understanding it but I can see the potential of what it can achieve.
As I read my roadtest marks for each category I found it extremely difficult to not award full marks on each. A 60/60 would imply it was perfect and as there are a few little adjustments that I would like to see so I decided to remove a couple of marks. This gives the Digilent BASYS MX3 board 57/60 from me. It is a very worthy investment to anyone looking at learning PIC microcontrollers.
I was undecided whether to write this roadtest report in the middle of the alocated review period or to carry on and undertake my own project. In the end I decided to write this up based on the investigation undertaken so far, then with less timescale pressures I can build my project to fruition and blog about that in the future.
I have recently bought several Pmod units so I can build my own projects, although the choice is vast and a selection would make a great roadtest in its own right. The Pmod is also supplied on several of the Digilent FPGA trainer boards and so should help expand my understanding and utility of those. My chosen Pmod units currently include:
This unit contains a 3-axis accelerometer, 3-axis magnetometer, 3-axis gyroscope and a barometer.
This unit contains a 128 x 32 pixel OLED display.
If you want one of these Digilent BASYS MX3 boards you can purchase one from Product LinkProduct Link
The Digilent Analog Discovery 2 unit is available Product LinkProduct Link or in other larger/smaller bundles.
"Did I read you got your Digilent BASYS MX3 for free?" - yes I did under this roadtest programme. If you like the sound of that and are new to Element 14 Community may I suggest you set up an account, have some fun blogging and taking part in conversations and then apply for a roadtest you like under the RoadTests & Reviews section .
I would like to thank:
[minor edit of formatting: 7th Nov 2019]
Top Comments
Dear 14rhb,
I am going to write RoadTest in different way i.e., "How to Use Basys-mx3 as Standalone System". You have covered all fundamentals related to development side. I think, there should not be…
Comprehensive and very well written! It is what a RoadTest should be. I have not used PIC micros so it was a useful read for me.
Frank
Wow! Your review blew me away! This is more like a compilation of reviews than a single review. You really squeeze every bit of experience out of the Basys MX3, and I am really impressed. Reading your…