RoadTest: Maxim MAX32650-EVKIT
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?: STM32F4 LTDC
What were the biggest problems encountered?: Lack of libraries and/or examples to managed LCD. Lack of EVKIT PCB description.
The MAX32650 is an ARM based Microcontroller (Cortex-M4 achitecture based). This one happens to be an interesting combination of display capabilities, low power features, massive memory (3MB FLASH, 1MB SRAM – plus interfaces for scalable memory).
For a start, you have all the common features for a good microcontroller, all the usual serial interfaces (UART , SPI, I2C, I2S, 1-Wire), a 16-channel DMA and a decent 120MHz clock, so that’s assured. But what really makes MAX32650 peculiar, it’s the DARWIN series characteristics, which include, low-power consumption, powerful processors, advance cryptographic security and large memories – perfect for artificial intelligence applications with an anti-hacking vest. Honestly, when I realized what the DARWIN series was all about, I knew this was beyond my skills. But even so, I might help readers get a grasp of what MAX32650 is.
The MAX32650 EVKIT comes with a breakout board that lets you access 4 ports with 16 IO pins each, 4 analog inputs and jumpers for all sort of controls (external RTC enable, UARTs in use, which USB connection is powering the micro+LCD and what I think might be the Hyperbus connections for the memory you may add).
You also get an OLIMEX ARM-USB-OCD-H programmer and debugger and two micro USB cables for the 2 connections EVKIT has.
To start programming you’ll need to install the ARMCortexToolchain.exe to have access to all the libraries and examples for the board and the Eclipse IDE to actual open those examples, run them and start making you code. I would provide the links but as it happened to me and may well happen to the readers, the provided links may not be when you read this, but an easy search will get you there.
Starting with the LCD, the job to operate it gets simplified by the fact that you have a driver for it embedded in the MAX32650and MAXIM made some pretty videos explaining how the driver operates with some code being explained while an example goes on, the links for the videos are displayed in numerous places, but just in case you haven't seen them, here they are. Although the videos are very well conceived, and it made me spent a few hours making squares and simple shapes floating around (other reviewer even made a simple game), this is not a solution for the long term. The tutorials will explain you how it all goes around defining the color (24 bits = 8 bits for red, 8 bits for green and 8 bits for blue) for each pixel, where you make a function that does loops across the pixels (one loop for all the columns inserted in a loop for all the rows), which is basically how it is done in all LCDs, but this is not how you’re going to build a professional application, or any other for that matter. Displaying an informative GUI for example, usually resorts to libraries or even dedicated programs that help you create what you want to display. Which, as other reviewers, I also did not find such tools and limited myself to play a little while with a dancing square and exemplified in the videos, and definitely this is not what this microcontroller is about.
But that’s not all for the LCD, as another reviewer described, you can display images stored in an SD card, trough the BMP images interpreter. This is very useful, but then again, stored images won't make an application,
LCD aside, I decided to give a small tour around the serial interfaces, and without much surprise I was able to communicate with peripheric devices trough I2C o SPI with the given examples, so that part is safe. But then again, this is not why you would buy the MAX32650.
There are in my opinion 2 major characteristics in this microcontroller that may decide you to buy it, its advance low-power features and the massive memory that an allow artificial intelligence algorithms.
Regarding the low-power features, personally I only new of sleep and deep-sleep modes – but MAX32650 it’s a whole new game! Initially you’ll have the Active mode where only the peripherals you haven’t initiated will be turned off, but if you cut off the CPU process you get Sleep mode. Turning off all peripherals will get you to Background mode, remove the DMA you get to Deep-sleep mode, and that’s no all, you can still decide to have to awake interruption resorting only to the VRTC instead of the main voltage to awake. These power saving modes can surely be useful, as MAXIM states, this is a microcontroller made for battery-powered applications, which brings to mind the importance of monitoring the source voltage, and that was already well reviewed here.
Finally, where would you need the MAX32650? I don’t think the TFT controller + LCD makes much sense in a low-power gadget – and given the current lack of libraries I wouldn’t see it a key feature, although it is an eye-catching feature. The IO and serial ports won’t be the decisive aspect either (every 32bit microcontroller has more or less the same capabilities). What really makes MAX32650 an solution, in my opinion is the memory that allows you to have massive algorithms, learning from their peripherals, adapting to each circumstance. MAXIM mentions regularly that this is a solution for all conditions, no matter how complex, such as industrial applications with continuous need for progressive learning.
An interesting reference to the DARWIN series is the protection from hacking in unexpected places with the cryptography security embedded, a MAXIM bloggers mentioned a case that seems a good example for this, in a world evermore internet-dependent (the IOT generation), a simple thermometer with WIFI connection was the entry door for a hack attack in a casino in London. This seems like a good reason for the DARWIN series, but then again, MAX32650 does not have an WIFI module, but ok, we could resort to another IC for the WIFI connection. But then again, although the webpage for the MAXIM32650 mentions the number randomization unit that provides the cryptography security layer, the datasheet states that this unit is only present in the MAX32651…so now you got as confused as I am.
In summary, I don’t see many situations where I would choose the MAX32650, but may well be because I don’t usually deal with the need for complex algorithms that can make use of the memory available. The TFT controller its great but without some good libraries, it feels like drawing in the old Microsoft Paint. I apologize for the absence of pictures, specially after the other reviewers posting such elaborative step-by-step analysis with picture guidance. But providing pictures of floating squares on the LCD or any serial communication won’t make a difference to the viewer.
I found this project challenging but quite disappointing. Perhaps later, with better skills I can develop an example of how useful this microcontroller can be for AI applications with and user-friendly GUI tool.
Cheers, Luís Pereira.