NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Why is Arduino so popular? To put it in one sentence, successful products are similar, while failed products each have their own failures.

Arduino is undoubtedly successful, but we won’t discuss the reasons for its success; let’s just look at the current flourishing situation of Arduino.

On one hand, there are Arduino’s own products, including the classic Arduino UNO, LEONARDO, ZERO, ROBOT…

Below is a family photo provided by Arduino.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

You won’t know until you look, and you’ll be shocked!

On the other hand, various embedded development boards launched by different manufacturers all take pride in being compatible with Arduino interfaces. Although each manufacturer promotes their own interfaces, they still retain a degree of compatibility with Arduino.

The new NuMaker UNO launched by Nuvoton Technology is even more direct, directly using Arduino as a prototype in both software and hardware, creating a brand new development board with its own NUC131SD2AE, referencing the hardware of Arduino UNO R3 and using Arduino IDE for development.

Let’s take a closer look at this evaluation board released in the name of Arduino.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Using recyclable plastic packaging, the product model is NK-UNO-131, a new product from the NuMicro family, with a clear name; NK stands for NuMaker, and UNO likely refers to Arduino UNO, while 131 indicates that the MCU used is the NU131 MCU.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

The back of the packaging lists a quick start guide and some main features of the development board, such as hardware features and software environment, guiding users on where to start.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

The PCB design style and appearance are similar to ST’s NUCLEO64. It is divided into two main parts: the left side is the MCU and the exposed interfaces, and the right side is Nuvoton’s Nu-Link-Me, which integrates power supply/download/debugging functions.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Aside from some silkscreen markings, there are no other components on the back, and the NuMaker UNO itself has few components.

However, the internals of NuMaker UNO are quite different from Arduino. This is because NuMaker UNO uses Nuvoton’s own MCU, and it has also integrated its design philosophy into the hardware interfaces.

The MCU used in NuMaker UNO is the NUC131SD2AE, which is based on the 32-bit ARM® Cortex™-M0 core. 32-bit MCUs have become mainstream in modern MCUs, while traditional 8-bit and 16-bit are still in use but are gradually fading away.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

The NUC131SD2AE is a high-end product in the Nuvoton NUC131 family, with a maximum operating frequency of 50MHz, 68KB Flash memory, 8KB SRAM, and can operate at voltages from 2.5V to 5.5V.

The NUC131SD2AE internally includes a wealth of on-chip devices, mainly including:

  • Up to 8 ADC channels, 12-bit resolution, with a maximum sampling rate of 1MSPS;

  • 24 PWM outputs or 4 complementary PWM output functions, supporting capture interrupt functions, which can be used to control motors, etc.;

  • 1 CAN interface, 1 SPI interface, 2 I2C interfaces, and 6 UART interfaces.

The NUC131SD2AE is packaged in an LQFP 64-pin format, approximately 7x7mm in size. It is mainly aimed at industrial control, communication subsystems, and motor control.

The internal logic block diagram of the NUC131SD2AE is as follows.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

In comparison, the ATmega328P used in Arduino UNI R3 has the specifications of: 5V, 8-bit, 16Mhz, with FLASH and SRAM sizes of 32KB and 1KB respectively. Other resources such as PWM/ADC are relatively limited; in contrast, the NUC131SD2AE excels in hardware resources.

Apart from the differences in the MCU, NuMaker UNO also has its own philosophy in hardware design. Below is the distribution of components on the front of the NuMaker UNO development board, allowing it to maintain compatibility with Arduino interfaces while featuring its own design characteristics.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

One of the features is the power supply design. NuMaker UNO provides three power supply methods. The first method is to power through Nu-Link-Me, outputting 3.3V through LDO, and the value of VDD can be adjusted to either 5V or 3.3V via JPR1, with the default value being 5V. This method balances the power supply for both Nu-Link-Me and the development board and is the preferred option.

The second method is to implement power supply through JP1 on the development board, allowing an external input source of 2.5V to 5.5V to directly supply VDD. The last method is to use the onboard DC-IN interface with an external power supply of 7V-12V, outputting 5V after conversion. This method requires a short circuit on J2; see the circuit diagram below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Another feature is the integrated Nu-Link-Me downloader/debugger on the development board, which also has power supply/download/debugging functions, similar to ST’s ST-LINK, each excelling in their own way.

On one hand, Nu-Link-Me can power the development board through ICE_VCC, eliminating the need for an additional power supply for the board. To enable this function, the ICE_VCC switch on SW2 must be set to the ON position, which is in the ON state by default.

Additionally, Nu-Link-Me also offers VCOM, a virtual serial port function, connecting the USB RX/TX to the MCU TX/RX, allowing the MCU to communicate with external devices like PCs via USB, greatly facilitating downloading and debugging.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

To enable the VCOM function, the switches on SW2 must also be set to ON for VCOM_En, VCOM_TX, and VCOM_RX, which are all set to ON by default.

Furthermore, all interfaces of the MCU are exposed on the PCB, with pads reserved for soldering, although pin headers are not soldered. If users need them, they can solder them themselves using standard 2.54mm pitch connectors.

NuMaker UNO not only achieves compatibility with Arduino in hardware but also maintains consistency with Arduino in software, providing a development method based on the Arduino IDE.

Next, let’s experience the authentic Arduino development mode by downloading the latest Arduino IDE from arduino.cc; this article uses version V1.8.1.

Before opening the Arduino IDE, we need to install the Nu-Link-Me driver; the installation process is not detailed here, but after installation, the device manager should look like this.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Launch the Arduino IDE to prepare hardware platform support for the IDE. Start the Arduino IDE, select the menu File/Preferences, and in the pop-up dialog, enter the following URL in the red box:

https://raw.githubusercontent.com/OpenNuvoton/NuMaker-UNO/master/package_nuvoton_index.json

As shown in the figure below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

This setting adds NuMaker UNO hardware support to the Arduino IDE. Then, under the Tools menu, add board support, and install the NuMaker UNO support package in the BoardsManager dialog at the bottom, as shown in the figure below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

The configuration process is not over yet; next, select NuMaker UNO as the current hardware platform and configure the serial port name for communication, as shown in the figure below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

The configuration part is now complete, and we can create a simple LED test program. The code is as follows:

const int ledPin = 13;

void setup() {

// put your setup code here, to run once:

pinMode(ledPin, OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

digitalWrite(ledPin, HIGH);

delay(500);

digitalWrite(ledPin, LOW);

delay(500);

}

Wait for the compilation and download to complete, as shown in the figure below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

You should see the LED on the development board start blinking at a frequency of 1Hz!

Since Nuvoton has provided comprehensive support for the Arduino software package, programming the NuMaker UNO on the Arduino IDE is very easy. However, just lighting an LED with the Cortex-M0 is a bit of a waste; next, let’s try something more advanced, using a timer combined with Arduino’s Serial Plotter to create something interesting.

The key code is as follows:

int clock = 12000000;

Timer1.open(PERIODIC, clock);

Timer1.setPrescaleFactor(0)

Timer1.setCompare(clock/1000); /* 1 microsecond per tick (1 s) */

Timer1.attachInterrupt(timer_ISR);

Timer1.start();

Using Timer1 to implement timing functions, initializing the clock frequency to 12MHz, no prescaling, with a timing period of 1 millisecond, then adding an interrupt function timer_ISR, and finally starting the timer to implement timing functionality.

The code for the interrupt function is as follows:

void timer_ISR(uint8_t num)

{

count1 ++;

count2 ++;

if(count1 == 499) {

count1 = 0;

digitalWrite(ledPin, level);

level = !level;

}

if(count2 == 49) {

count2 = 0;

flag = true;

}

}

In the interrupt function, two variables are incremented; count1 is used to control the LED (still controlling the LED!), flipping every 500 milliseconds; the other variable count2 is used to output the drawn data, which is drawn every 50 milliseconds.

The results obtained are as follows:

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

To better understand the details hidden behind the Arduino API, it is still necessary to dig into the underlying code. The official installation script places these lower-level support libraries in the user’s appdata\local directory, which is hidden by default and needs to be manually entered to find. It contains CMSIS and other hardware-related C library files, as shown below.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

If you are interested, feel free to explore this code; you might have unexpected gains.

Of course, Nuvoton also provides development support packages and examples for NuMaker UNO based on KEIL and IAR. The location of the NUC131 SDK provided in the appendix for downloading examples prepared for KEIL and IAR is also given, but I won’t go into details here.

In summary, the NuMaker UNO development board is released in the name of Arduino, but embodies its own design philosophy, adding a highly playable development board to the Arduino family.

However, from the hardware comparison between the two, it can be seen that the ARM Cortex-M0 based NuMaker UNO has brought it to a whole new level, with a maximum MCU clock frequency of 50MHz, larger storage space, and more comprehensive on-chip peripherals, while integrating the Nu-Link-Me debugger, plus full compatibility with Arduino in terms of software and hardware, providing Arduino enthusiasts and makers with a new choice!

Additionally, the official price of the NuMaker UNO development board is 72 RMB, which is worth getting!

Feel free to click to read the original text.

Check out the 2017 Mouser Innovation Forum event.

NuMaker UNO Development Board Review: A New High for Arduino-Compatible Boards

Leave a Comment

Your email address will not be published. Required fields are marked *