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:
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.
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:
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.
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.
As a complete beginner to the ST ecosystem I started working through the related web page documents:
Attempting to follow the UM2052 Getting Started instructions:
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.
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.
Top Comments
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…
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.
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…