STM Discovery Board for Makers - Review

Table of contents

RoadTest: STM Discovery Board for Makers

Author: tamarb

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?: Renesas Synergy micros and development platform

What were the biggest problems encountered?: Lack of dedicated getting started guide for the kit, that would include a simple program to create using the higher level tools, load and debug.

Detailed Review:

Reviewer background and personal objectives

I have 20 years+ experience in electronic product design and am very knowledgeable in the Atmel AVR family, having designed this architecture into several successful products. My programming experience is mostly in C with some assembly code, for performance optimisation.  I have no real experience with ARM micros or using middleware tools.  My employer has identified a new product development for which we are currently in a specification and feasibility stage.  A decent performance ARM micro with extensive communication peripherals is highly suited to the product and devices from the STM32F family will be a good fit.  Before committing to a particular family, I wanted to get a feel for the tool-chain, supporting documentation and app notes etc. together with the online support resources.  I am the sole hardware/firmware designer within the organisation and am in that regard technically totally isolated; ease of finding information in datasheets and documentation is very important.  Moving from coding at a very low level, to the use of APIs etc. will involve some fairly steep learning curves. I want to spend my time learning, not struggling to find the relevant information.  How information is presented and organised becomes very important, this will be a personal viewpoint, what works for me may not suit another, but nonetheless this is important to me in deciding whether to invest more time into the ST ARM micros and development ecosystem.

 

I want to use the Discovery Kit as a development tool and learning platform. I intend to modify and debug code examples and generate a new project to do something simple such as create a UI button, capture a touch event and flash a LED.

 

Kit Hardware      

Documentation included with the kit is limited to a packaging card detailing pin outs, key components on the board.  The Getting Started instructions can be summarised is plug it into a USB port and have a play with the on-screen applications.  This is what I did.  The hardware is clearly well thought through and very capable, as is the pre-loaded demo application.  The touchscreen and UI examples work very well.  The Discovery Kit web page has a good ‘Getting Started’ video that describes the board features and demo application very well, I’ll not duplicate the information here.  A quick link to the relevant web page:

http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f769idiscovery.html

I would have preferred a dedicated virtual COM port on the board, rather than sharing the debug link USB connection and a simple buzzer, but these are minor criticisms.  Overall the range of functionality and interfaces supported is very, very good.

 

Unfortunately the hardware also emits a very uncomfortable high pitched noise.  This isn’t loud but it is at a very unpleasant frequency.  After a few minutes it becomes unbearable; I resorted to covering the board with a small towel to muffle out the sound, or wore headphones with music playing to mask it out.  Subsequent use of the Discovery board showed the noise is related to the display, the noise isn’t there when the display is off.

 

Quick Summary

I found using the Discovery Kit to be a very frustrating experience.  The hardware itself is very capable with a really good set of features that I believe is let down by inadequate guides for new users.  If you are very familiar with the ST documentation methodology you’ll likely get on with the kit much better than I was able to. If you have experience with the STMCubeMX tool and have some HAL level coding experience you’ll no doubt be really pleased with it.  I’d hesitate to recommend the Discovery Kit if, like me, you have no ST ecosystem experience and normally code at a low level; you'll need to be prepared for a right battle.

 

My difficulties in using the kit would be easily rectified with a decent getting started guide. This should take a user through building up a simple application from scratch, include using the STMCodeMX and then adding some additional functionality. This should also be specifically written for the target board, I don’t think a generic guide, covering all kits is sufficient for a hardware/firmware platform of this complexity and capability.  I’d also suggest the guide includes using the 3rd party tools for touch and graphics.

 

A simple batch installer for all the relevant ST and 3rd party tools and packages would also be a real time saver.  I found the ST documentation very good at describing the hardware and firmware tools but lacking in how to develop with them, especially at describing the interfaces between the tools.

 

I was however very impressed with the Embedded Wizard graphical framework tool, finding it comprehensive and easy to use.

 

Potential users of the kit should also be aware that the demo app exceeds the 32kB code restriction of some IDEs and the ST/Atollic IDE does not properly support it with projects targeted for the the Discovery Kit ready to go.

 

Read on for an account of my efforts to work with the kit and the barriers encountered.

 

Discovery Kit Use Experience

As a complete beginner to the ST ecosystem I started working through the related web page documents:

  • DB2876 Product Spec: A fairly useless document, states what the kit is & key features, this information is duplicated elsewhere.
  • TN1235 ST-LINK note: An overview of the ST-LINK in-circuit debugger programmer functionality for ST micros with a description of the different versions.
  • UM2033 Discover Kit User Manual: Overviews the hardware features of the kit with schematics. It provides a good detailed description but does not cover its use.
  • UM2052 Getting Started with STM32 Discovery Kits:  This is a generic guide to STM32 kits, rather than a dedicated document for the STM32F769 kit.

Attempting to follow the UM2052 Getting Started instructions:

  • The Discovery Kit User Manual informs that a dedicated USB driver is needed with instructions to get it from the www.st.com website. A shame there’s no timesaving quick link to the correct page.  I search for ‘ST-LINK/V2-1’ and find 3 options; make a guess that STSW-LINK009 is the right one, click the link to a new page, find the software download but cannot proceed without a ST account.  OK, that’s reasonable.  I fill out the information for an account, click submit and nothing happens, I try several times and can’t proceed; this page does not seem to work with Firefox.  I try again from Chrome and all is well.  Installation of the driver stops my pen graphics tablet working and I need to hunt down a mouse to progress. Eventually the driver installs and the Device Manager shows the virtual com port and ST link dongle.  Step 1 is eventually done.
  • Now for a development environment; the getting started guide lists the 4 options for IDEs supporting STM32, there are no web links for downloads.  I opt for the Keil MDK-Lite IDE due to the absence of time restrictions. I incorrectly assume that the code size limitation wouldn’t be an issue at this stage (more on that later). I go to the Keil website I download and install the tool.  IDE sorted.
  • And finally the Firmware package; I presume the basic staring point is the STM32CubeF7, select this, download and extract the ZIP from the resultant STM32CubeF7 web page. Unhelpfully the extracted folder structure does not tie up with the package content description in the UM2052 Getting Started guide.
  • The next step in the Getting Started Guide is to use the tool chain.  Following the instructions to open up the IDE, find and open a demo project.  This I did with no expectations of being in the situation of having a fully functioning setup.  Cleary the IDE would need configuration information for the device and development board to make use of the higher level tools.  Nosing about the Keil IDE (uVision) I found the pack installer, locate the discovery kit and device and update the tool accordingly.  Not surprisingly reloading what I hoped was a project made no difference, am I opening the correct file?  Are other configuration settings required?

Conclusion: The UM2052 Getting Started Guide does not contain adequate information to get a new user, someone without prior experience of the ST tools, started with the STM32F769 Discovery Kit.

 

I decide to plod through the STM32CubeF7 package documentation on the STM32CubeF7 web page. There is no obvious beginner, or getting started guide.  I read App note ‘AN4731 STM32Cube firmware examples for STM32F7’.  The app note has a web link to related documents, only the web link doesn’t work.  The app note lists document UM1891 ‘Getting started with STM32CubeF7 firmware package for STM32F7 series user manual.  This would seem to be the most suitable document for the stage I am at.  This document isn’t listed in the STM32CubeF7 web page. I search the ST web site with the document number UM1981; no results are returned.  The AN4713 app note details which examples, apps, demos and templates included within the firmware pack relate to the particular STM32F7 hardware board.  There are 30 examples, 15 applications and 1 demo for the Discovery board.  Whilst the app note briefly describes the examples it doesn’t give information on how to use them.  This is getting very frustrating; the generic UM2052 getting started guide will not get a new user started with the discovery kit.  The UM1891 getting started guide for the firmware pack cannot be found or downloaded from the ST web site.  At this stage I use the ST online support facility to request a copy of the document.

 

The support request is answered in a timely way and day later I have a copy of the UM1891 guide (apparently st.com will be updated). I follow the steps for running ‘your first example’; it’s a simple LED toggling from a switch press, perfect. I’m able to load the project, build it and download it to the Discovery Kit target and run it.  At last I feel like progress is being made.  Looking through main.c and related source and header files it’s clear that a switch press causes and interrupt and the ISR toggles the LED just as one would expect.  I’m able to set a break point on the ISR upon a switch press and can see that the functions are automatically generated by the HAL and GPIO tools.  I’d like to modify the code to cause a LED flash (using a timer) on the switch press, but where do I find the documentation to help with this?

 

I decide to follow the next steps in the UM1891 guide for developing your own application.  Before doing so, I reload the original demo application shipped with the Discovery Kit, with the thought to rebuild it and load it into the board.  This fails. Trawling through the IDE output messages reveals that the demo exceeds the 32kB limitation.  Oh dear, I guess this means that the apps and demos using the display on the Discovery Kit are likely to be too large for the Keil IDE that I have been making progress with.

 

I think to try the Atollic IDE and discover that ST now owns Atollic, so this is likely to be a good option moving forwards.  I download and install Atollic.  This is where it now gets hard again.  The UM1891 Getting Started guide has step by step instructions for loading the switch press/LED toggle GPIO application for IAR EWARM, Keil MDK-ARM and the GCC SW4STM32 stuff, but no instructions for Atollic.  I look at the Atollic resources and find a video getting started tutorial; this uses a downloaded project as its example.  I follow the steps and locate the STMicroelectronics projects but the STM32F69 Discovery kit is missing from the list of discovery kits and eval hardware.  The Atollic ‘Information Center’ in the IDE shows a Quickstart Guide, I click on the link and nothing happens (I think my antivirus SW is blocking something low level in the background).  I go to the Atollic web site and search for ‘Quickstart guide’ and there are no returns. I attempt to import the Switch/LED example previously used, via the Import wizard and the process looks to complete OK.  However, I get a fatal error when building the project related to startup code and a linker script.  I give up on Atollic at this point and decide to go back to the Keil IDE and hope to work with sufficiently small code size projects.

 

So, picking up again on the UM1891 Getting Started Guide, I look to follow the instructions in section 4.2 for developing your own application.  But this is too hard given my experience with the ST higher level tools. I’m able to build the ‘empty’ project template and bring up the main ‘while (1)’ loop, but I need more step by step instructions on how to configure and use the HAL and middleware components. These instructions do however make a compelling reason to use the STM32CubeMX, so that’s what I do next. Up to this point I’ve not been unaware of this tools significance; the Discovery Kit UM2052 Getting Started document makes no mention of the STM32CubeMX tool.  Indeed the Discovery Kit webpage doesn’t include it within the Tools & Software & Tools section.  Surely this is an omission given that one purpose of the Discovery Kit is to showcase the support HAL and APIs etc.

 

With the STMCubeMX software installed, I have a quick look around the tool and everything seems fairly straight forward.  It’s easy to select the microcontroller or board and start configuring the peripherals. I think to open up the settings for the example previously loaded, the one that captures a switch press via interrupt and toggles the LED via the ISR.  (I still have it in mind to configure a timer and use that to flash the LED on a switch press).  I go to open the project, STMCubeMX uses the project file type .ioc but there are no .ioc files within the STM32cubeF7 files for the Discovery Kit.  OK, presumably the tool doesn’t work that way, but I don’t think it was an unreasonable expectation open and edit an existing example. But where is the Getting Started guide required take a new user through the first use of the tool?  There is a comprehensive User Guide UM1718 at 302 pages, this has what looks to be a well written tutorial at in section 7, but it’s for different hardware and the IAR compiler.

 

I consider working through this tutorial, making adaptions for the different hardware with the hope to bring the output files into the Keil IDE.  Against this is the fact that I’ve already used more time than had been allocated to working with this Discovery Kit.  I decide instead to have a go with one of the 3rd party tools; the graphics utility below, a good decision.

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-3rd-party-embedded-software/tara-embd-wizard.html

https://www.embedded-wizard.de/gui-development-on-stm32.html

This tool is really, really good.  There are a few things to install and un-package with the example instructions relying on the GCC-ARM compiler being used at the command line level.  The getting started guide is also very good; it gets straight to the point with sufficient detail to get everything for the development environment set up properly. I was quickly able to load in various graphic examples.  This tool also seamlessly integrates use of the touch interface with the display and has a large library of graphic elements, widgets and controls use and customise.  I was easily able to create my own UI/display with a button control as you can see below.

I’m still a way off my initial objective of creating a program that flashes a LED from a user interface button control.  It’s frustrating to stop at this point, but I’m out of time and the review must be posted.

Anonymous
  • Nice review of the STM32F7 discovery board.  I think it is important for the vendor to see both the good and the bad in a Road Test with the hopes that it helps them correct issues that others might run into.   It is quite interesting when someone with 20 experience has trouble just getting a basic example running, so it would be nice if STM takes note of that.

     

    Did you try their Forum to see if others had similar issues or to post the issues you ran into?

     

    One thing I find is that documents go out of date fairly quickly and adding a link to something like examples is just setting them up for failure. I did find the following link for the STM32CubeF7 examples that were referenced with the broken link in the doc you pointed out:

    http://www.st.com/en/embedded-software/stm32cubef7.html

     

    You need to scroll to the end of the page to get to the download link which we will have to create a user profile first before you can get the files.

     

    You might want to spend time with the following docs:

    UM1905: Description of STM32F7 HAL and Low-layer drivers

    AN4731: STM32Cube firmware examples for STM32F7 Series

    DB2601: STM32Cube MCU Package for STM32F7 Series with HAL, low-layer drivers and dedicated middleware

     

    STMCubeMx is another handy tool for creating start-up code for the STM boards and processors:

    http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

     

    Have you considered TI?  They have a vast array of options as well as a pretty good set of Booster packs for expanding the functionality of their dev kits.

     

    Good luck.

     

    Jon

  • Wow, it must be frustrating not being able to compile the demo code with the trial version of Keil. If I want to evaluate something I do not want to spend 3K to compile the demo.

  • Thank you Gene,

    I'm not sure that LED is going to blink on the STM Discovery board; I'm going to look at the Renesas Synergy stuff next.  A few of the S5 and S7 parts have the right peripheral set for our application and there seem to be some decent support resources to get engineers through in the initial tool set up and fist use (there's even a 'blinky' tutorial!).  It will be interesting to see how the getting started experience compares.

    Angela

  • Angela,

     

    Good roadtest review.  I completely understand your frustrations with lack of quick guides and good tools that would allow someone with good skills to pick up a product like this and be able to work an example from start to finish.  I have gone down this same road more than a few times and end up feeling like I have been beating my head against a wall, lots of pain and very little results. I love my Atmel AVR parts and associated tool sets.  I can get meaningful results quickly as every aspect is understandable and the documentation is very readable, with examples that clearly show how to word with the part.

     

    Hopefully, with time and considerable effort, you will be able to get you LED to blink (not that it should ever be that hard).

     

    Good job and good luck!

    Gene