NUCLEO-F031K6 - Development Board - Review

Table of contents

RoadTest: NUCLEO-F031K6 - Development Board

Author: sakthi.1260

Creation date:

Evaluation Type: Evaluation Boards

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?: Arduino Nano

What were the biggest problems encountered?: - A few documentation were little vague from a amateur point of view. - Getting my first program compiled

Detailed Review:

Greetings,

 

Before I start with there review, I assumed myself to be a amateur in embedded systems and electronics at a few places in the Review process.

 

First Impressions

 

The parcel actually came in a good shape as usual. With a big expectation I unboxed and this was inside.

 

If you are a great fan of Arduino, don't set an expectation of getting a nice fancy box with DIY Love stickers and a nice document.

 

You get only the board and a printed card with "Pinouts and Main Features of the Board" . I felt the packing could have been better using a recyclable material than the Plastic one.

 

Well I was totally happy with build quality, the board is RoHS compliant and CE certified, those extra mm for headers are great for probing when you are using a mini bread board with no space around. Also the assembly on the PCB is great almost every component is replaceable (Passives are 0603 Packages, MCU LQFP32), just tweezers and hot air station is enough.The Legends would have been darker. I liked the Bicolor LED(Mentioned as tricolor in the User Manual) indicating Communication Status. I also see a couple of solder bridges, will see them later.

 

The Nucleo board has the same footprint and Pinout(mBED) of the Arduino Nano except for the length to be slightly longer.

(The I2C is on the A5 and A4 pins by default.

The Picture posted here is from mbed.org is STM32F303 Nucleo.

Certain small things like this are misguiding hope they fix it soon. Even the User Guide they provide is a generalized one)

The board input is 5V, the on board Regulator with maximum current of 500mA supplies the MCU with 3.3V also the VIN pin accepts a Voltage Range of 7V to 12V, with a current of 800mA for 7V.

 

 

Features

 

The MCU is Cortex M0 based STM32F031K6T6 running at 48MHz with a 32KB Flash and KB SRAM which is pretty good for mid sized Prototypes and Projects with smaller footprint.

 

The board has a total of 22  GPIO's 14 Digital IO and 8 Analog input similar the Arduino Nano. You also get 1 USART, 1 I2C(FM+) and 1 SPI Interfaces, the SPI interface also acts as a I2S. A couple of GPIO's are 5V tolerant.

 

The ADC are 12bit( .8mV per unit) with a sampling time of 17us which is pretty decent compared to the 10 bit ADC on Arduinos. There are four 16-bit timers, one 32-bit timer and one Advanced control timer. The board has 5 PWM pins.

 

You also have a user definable LED connected to D13 or PB3.

 

MCU also had RTC but after going through the datasheet either the Board or the MCU package doesn't has a separate VBAT pin. You also get a 5 Channel DMA.

 

Well the board itself is robust, I tried plugging into the micro USB slot in a couple of harsh ways but the Reset Push button might have issues in case of hard handling, they would have used a vertical type instead, they have provided with a larger solder pads so if you break the switch you can replace with a much reliable vertical one.

 

 

Almost everything is documented and available on the STM website including PCB design files,Gerber and BOM.

 

The solder bridges have defined purpose for enabling and disabling features on the board these can be found on the Nucleo user manual.

 

 

 

 

How to program this board?  What programmer to use?

Well your board comes with a integrated STLink v2 .

Another MCU STM32F103C8T6 (If you have those cheap boards from ebay you'd  possibly know about these) flashed with STLink v2 firmware acts as the programmer and interface to you PC.

 

The board actually comes with mbed enabled which is great  if you are an Arduino chap, mbed is a easy IDE from Arm all you need is a free signup on the site. Althought you need to spend some time to get your first successful program.

The board also supports Keil, IAS, Embedded Studio or any GCC based compiler you are convenient with.

 

Seems STM community has developed a lot and also the mbed community seems to be so active. So you do have a active community to post your queries.

 

There is tiny shunt underneath the board which is useful for measuring the MCU's current consumption which is a great feature,just pull it out and connect an ammeter.

The board does power up without the shunt but MCU doesn't power up, The shunt itself is too small I almost lost it and was searching it around and found it sticking to my forehand, keep it safe if you remove it.

 

 

Although its a great feature, its a pain to measure if you are using it in a breadboard since the terminals are underneath. This is where I felt it needs to be an improved in next revision.

 

The MCU in Idle consumes around 11mA. With on board user definable LED 'ON' 13mA.

 

I couldn't find any documentation mentioning the maximum current a single GPIO pin would provide. So I tried glowing some leds.

The GPIO pin was able to provide 20mA for a single 5mm Green Led. Tried adding multiple LED's in parallel at times the current value peaked up to 30mA, but settled with 25mA.

 

Features Testing

 

I'm like new to mbed platform, the reason why I wanted to test this board.

I tried a few simple projects and was totally impressed with the performance.

 

Made a Led chaser to see how long the loop runs ( I had issues with Arduinos where you loop stops after a couple of hours)

 

 

Although I could feel a rise in temperature on the MCU, It was running for almost a day and I couldn't witness any breakdown

 

Tried reading some ADC Voltage values of a NTC thermistor

 

RTC and Serial

#include "mbed.h"

DigitalOut myled(LED1);

int main() {
    
    printf("RTC example\n"); 
    set_time(1502808621);
    printf("Date and time are set.\n");

    while(1) {

        time_t seconds = time(NULL);

        
        printf("Time as a basic string = %s", ctime(&seconds));

        myled = !myled;      
        wait(1);
    }
}

But when you gonna pull the power out its gonna reset.

 

Some Servo

The PWM totally out performed my expectation, the servos could be perfectly and precisely controlled.

#include "mbed.h"
#include "Servo.h"

Servo myservo (PB_1);

int main() {    
    for(float p=0; p<1.0; p += 0.005) {
        myservo = p;
        wait(0.5);
    }
}

 

If you are thinking about RTOS or mbed OS its not supported  (memory constrain)

 

Summary:

 

Pros:

- Arduino Footprint

- 48MHz Clock speed

- mbeb enabled

- On board ST Link

- Simple Hardware

- Extra high headers on the top

- On board current measurement terminals

- RTC

- ADC

- PWM

- Cost

 

I also loved the email updates mbed send when changes are made to platforms and components

 

Cons:

- Delicate Reset Switch

- No Backup Supply or Vbat PIN for RTC ( well this is because of the Chip Package design itself)

- Current measurement terminals are hard to reach if used over breadboards.

- Generalized Documentations, I couldn't find any User manual specific for the board, it was all a long pdf for STM32 Nucleo boards, where you need to find the information for your board.Simplified and unique user manuals would save a lot of time for beginner who wants to learn fast.

 

STM32F031K6 Nucleo is a great board (with no doubt) with a very high price to performance ratio, best for anyone to get started with ARM and mbed for small and mid sized projects. I'm totally new to mbed and continously trying to find new things, would blog if i find something interesting.

 

Cheers

Anonymous