Last updated July 22, 2011
See the newest version of this demo at:
The embedded platforms like smart-phone, e-book and net-book use many digital sensors to provide a modern and amazing user experience. STMicroelectronics STEVAL-MKI062V1 is a good platform to explore this class of embedded application.
Why don't use the multitasking approach to discover the sensors world?
- STEVAL-MKI062V1 evaluation board - powered by STM32F103RE MCU.
- FreeRTOS.org real time scheduler. Tested with version 6.0.1.
- STMicroelectronics USB library. Tested with version 2.2.1.
- OpenOCD On-Chip debug solution for embedded target system. Tested with version 0.4.0 RELEASE.
- Eclipse open development platform. Tested with Galileo release.
- Versaloon hardware IF.
These bits of code are based on the firmware package provided by STMicroelectronics. It provides the same functionality and can be used with the PC software application that can be downloaded starting from ST's evaluation board web page
Developer environment setup
To build the firmware and to program the board I use the same Eclipse based IDE of all others demo in this web site. Feel free to look at the Eclipse demo (STM32)
for more information on how to setup the IDE.
Running the demo
To test the demo you can use the software application provided by STMicroelectronics.
- To download the software application visit the ST's evaluation board web page, or use this direct link.
- Install the software.
- Launch the iNEMO Software Tool application from the Start | All Programs | STMicroelectronics | iNemo Application menù.
- Connect the board to PC.
- Press the Connect button (the first on the right of the toolbar. See Fig. 1) or choose the Connect command from the Tools | Communication menù. Look the log on the bottom to be sure that the board is connected to the software.
- You can now start to acquiring data from the board, plot the data and save the data into a file for further analysis.
Fig.1 - INEMO application
NOTE: the software come with an SDK to build custom PC application communicating with the board. For more information, please refer to the software documentation.
The tasks organization
The application runs three tasks as displayed in Fig.2
Fig.2 - Tasks
- The Test task is implemented in the file test.c. It has the highest priority. When the system start it waits about 5 second for the key pressed event. If the user button is pressed the Test task perform an hardware test on the board. Note that a pre-formatted microSD card must be in the slot during the test execution. If the test ends with success the user led on the board is kept on for two second, else the user led blink for a while. In each case the Test task ends and the Command task take the control.
- The Command task is implemented in the file iNemo.c in the iNemo folder. It wait for a frame from the PC application. When the USB driver receive a full frame, it wake-up the Command task that parse the frame and send the ACK back to the PC.
- The Data task is also implemented in the file iNemo.c in the iNemo folder. It is synchronized with the timer 2 interrupt. When the Command task receives a START_ACQUISITION command, it enables the timer. Now the Data task reads all sensors data and sends the data to the Pc at the user specified frequency.
The latest version of the demo file is located in the Download
page of the site. To build the demo are needed the following components:
- The FreeRTOS source files: Source.zip
- The files shared by all demos: Common.zip
- The demo specific files: iNEMO.zip
Please look at the Download
web page for more details.
All known bugs will be reported in this section.
Questions, Suggestions, Bugs, and...
Every feedback is welcome. If you have a suggestion to improve a demo or the web pages, it's ok. If you found a bug in a demo, please let me know. If you have an idea to improve a demo, I'm pleasure to discuss about it. If you have any questions about a demo, I hope to have the answer!
Users wishing to obtain support or have new ideas to discuss should use the Open Forum
- Sensing the World.
All the code is developed for test purpose and it is unsupported. The author assumes no responsibility for any damage caused by improper uses.