### cd00290919

```AN3311
Application note
In-home display for ZigBee® smartplug
Introduction
This application note describes the demonstration firmware running on the STM3210CEVAL for the STM32F107VC to manage a smartplug network system.
An embedded graphical user interface (GUI) based on the “multi-input embedded GUI
library 2.0 for STM32F10xxx” described in the AN3128 application note, and working on an
LCD TFT 320 x 240 display and 5-position joystick, allows the user to interact with the
smartplug system made up of one coordinator and two smartplugs connected.
Section 1 describes the document and library rules.
Section 2 highlights the features of the ZigBee smartplug and explains its hardware
interface with a device microcontroller (STM32).
Section 3 describes briefly the “multi-input embedded GUI library”.
Section 4 describes the relevant blocks of the STM3210C-EVAL demonstration board.
Section 5 shows the demonstration firmware/board system setup.
Section 6 describes, in detail, how the “in-home display” firmware is structured, its
architecture and its exported APIs.
Section 7 explains how to get started with the system, how to configure and use the IAR
workspace, and contains an example application source code.
Section 8 illustrates how the “in-home display” GUI application works.
Section 9 illustrates the hardware schematics.
December 2010
Doc ID 18209 Rev 1
1/58
www.st.com
Contents
AN3311
Contents
1
Document and library rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1
2
3
ZigBee smartplug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1
Smartplug description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2
ZigBee module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Multi-input embedded GUI library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1
4
5
2/58
Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
STM3210C-EVAL demonstration board . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2
STM32 peripherals mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3
Power supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4
Boot option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.5
Clock source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.6
Reset source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.7
Joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.8
Pushbuttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.9
Storage memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.10
Development and debug support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.11
Display and input devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.12
JTAG debugging connector CN13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.13
Daughterboard extension connector CN8 and CN9 . . . . . . . . . . . . . . . . . 19
4.14
TFT LCD connector CN14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.15
Power connector CN18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Demonstration firmware system setup . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1
Hardware requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2
STM3210C-EVAL demonstration board setup . . . . . . . . . . . . . . . . . . . . . 24
5.3
STM3210C-EVAL and ZigBee adapter with M24LR62-r memory . . . . . . 24
5.4
How to navigate the demo menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Doc ID 18209 Rev 1
AN3311
6
7
Contents
In-home display firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1
Firmware architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2
main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2.1
vSmartPlugSamplingTask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2.2
vGraphicLibraryTask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.3
prvApplicationTask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2.4
prvSetupHardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2.5
vBoardInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Getting started with the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1
Configure IAR tool for building, debugging, and programming the application
31
7.2
Example application - main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8
In-home display GUI application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9
Schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.1
Smartplug board schematics and layout . . . . . . . . . . . . . . . . . . . . . . . . . 45
9.2
ZigBee/RF adapter for smartplug and dual interface memory . . . . . . . . . 46
9.3
STM3210C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
9.4
MCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9.5
LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9.6
I/O expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
9.7
I/O peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
9.8
Extension connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.9
JTAG and trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.10
Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.11
LCD 3.2" module with SPI and 16-bit interface 1 . . . . . . . . . . . . . . . . . . . 55
10
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
11
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Doc ID 18209 Rev 1
3/58
List of tables
AN3311
List of tables
Table 1.
Table 2.
Table 3.
Table 4.
Table 5.
Table 6.
Table 7.
Table 8.
Table 9.
Table 10.
Table 11.
Table 12.
Table 13.
Table 14.
Table 15.
Table 16.
4/58
List of acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Power related jumpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Boot related switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Reset related jumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
LCD module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
JTAG debugging connector CN13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Daughterboard extension connector CN8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Daughterboard extension connector CN9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ZigBee adapter pin description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Function description format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
vSmartPlugSamplingTask task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
vGraphicLibraryTask task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
prvApplicationTask task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
prvSetupHardware function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
vBoardInit function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Doc ID 18209 Rev 1
AN3311
List of figures
List of figures
Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure 6.
Figure 7.
Figure 8.
Figure 9.
Figure 10.
Figure 11.
Figure 12.
Figure 13.
Figure 14.
Figure 15.
Figure 16.
Figure 17.
Figure 18.
Figure 19.
Figure 20.
Figure 21.
Figure 22.
Figure 23.
Figure 24.
Figure 25.
Figure 26.
Figure 27.
Figure 28.
Figure 29.
Figure 30.
Figure 31.
Figure 32.
Figure 33.
Figure 34.
Figure 35.
Figure 36.
STM3210C-EVAL block scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
I/O expander hardware configuration on the STM3210C-EVAL . . . . . . . . . . . . . . . . . . . . . 10
STM3210C-EVAL demonstration board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Hardware block diagram - STM32 peripherals mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . 13
STM3210C-EVAL demonstration board layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
JTAG debugging connector CN13 viewed from above the PCB . . . . . . . . . . . . . . . . . . . . 18
Power supply connector CN18 viewed from the front. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
In-home display firmware architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Application project files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
IAR embedded workbench main window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
IAR embedded workbench debugger options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ZigBee dongle connection problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Main menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Searching plugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
No plug detected. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Plugs detected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Label changing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
TRIAC smartplug management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Relay smartplug management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Smartplug statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Energy consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Global energy consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Power consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Global power consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
ZigBee and dual interface EEPROM adapter schematic for STM3210C-EVAL . . . . . . . . . 45
ZigBee and dual interface EEPROM adapter layout for STM3210C-EVAL . . . . . . . . . . . . 46
STM3210C main schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
MCU schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
LCD schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
I/O expander schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
I/O peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Extension connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
JTAG and trace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
LCD 3.2" module with SPI and 16-bit interface 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Doc ID 18209 Rev 1
5/58
Document and library rules
1
AN3311
Document and library rules
This document uses the conventions described in the sections below.
1.1
Acronyms
Table 1 lists the acronyms used in this document.
Table 1.
6/58
List of acronyms
Acronym
Meaning
API
Application programming interface
HAL
Hardware abstraction layer
MCU
Microcontroller unit
I2C
Inter-integrated circuit
SPI
Serial to parallel interface
OOP
Object oriented programming
Doc ID 18209 Rev 1
AN3311
ZigBee smartplug
2
ZigBee smartplug
2.1
Smartplug description
The smartplug coordinator is connected via an SPI to the STM3210C-EVAL through an “AdHoc” adapter.
In Figure 1 it is possible to take a quick look at the STM3210C-EVAL board and a smartplug
node block diagram.
Figure 1.
STM3210C-EVAL block scheme
An adapter is connected to the extended connectors CN8 and CN9 on the STM3210CEVAL (for more detailed information please refer to the UM0600 user manual), it allows the
connection of a ZigBee smartplug coordinator and the I2C/RF dual interface EEPROM
M24LR64-r. The Gerber files of the adapter board are included in the setup package of this
project.
The ZigBee smartplug board can be used as a guide to build a home/building automation
subsystem for energy management. In a typical application, the board is plugged into an
electrical wall socket and supplies an electrical load, monitoring the energy consumption;
using several smartplugs it is possible to monitor and control the home/building energy
consumption socket by socket. The board includes the following functions, shown in the
block diagram of Figure 2:
●
Energy measurement
●
●
Load driving by relay or TRIAC (dimming)
●
ZigBee communication capability.
Doc ID 18209 Rev 1
7/58
ZigBee smartplug
Figure 2.
AN3311
Block diagram
The STEVAL-IHP001V3 is a smartplug board based on an STM32F10x microcontroller, a
SPZB260 ZigBee module, and an STPM01 energy metering IC.
It implements a ZigBee metering node which allows the final user to monitor and manage
energy consumption.
The board has been developed as a guide to build a home/building automation subsystem
for energy management. In a typical home system implementation, the board is plugged into
an electrical wall socket and supplies a home appliance or other generic electrical load.
The current, power, energy, and other information, related to the electrical load connected to
the smartplug board, can be displayed locally on an LCD screen, and are sent to a ZigBee
data concentrator through the home/building ZigBee network.
2.2
ZigBee module
ZigBee smartplug communication is based on the SPZB260 module with a DIL adapter. The
module is FCC compliant (FCC ID:S9NZB260A). The module is based on the SN260
ZigBee network processor which integrates a 2.4 GHz, IEEE 802.15.4 compliant
transceiver, as well as IEEE 802.15.4 PHY and MAC. The main features are:
●
0dBm nominal TX output power
●
-92dBm RX sensitivity
●
+2dBm TX output power in boost mode
●
RX filtering for co-existence with IEEE 802.11g and Bluetooth® devices.
For further details please refer to the SPZB260 module and the SN260 network processor
datasheet.
Note:
8/58
diagram, and AN2993 application note.
Doc ID 18209 Rev 1
AN3311
Multi-input embedded GUI library
3
Multi-input embedded GUI library
3.1
Description
This solution enables users, comfortable with the use of standard microcontrollers, to create
higher-end “look and feel” human interfaces by replacing conventional electromechanical
switches with touch-sensing controls.
Users can combine touch-sensing functions using multiple configurations (touchscreen,
joystick, and keys) with traditional MCU features (communication, beeper, LCD control, etc.).
The E-multi-input graphic library is part of the application firmware.
The graphic objects are a set of controls that can be printed on the screen and associated to
an action when pressed.
The library has been developed and tested on an LCD panel of QWGA resolution (320x240)
which is the default, but the library is independent of the LCD resolution, although it has not
been tested with others.
The library supports touchscreen features and includes a low level driver which handles the
algorithm that uses 5 points.
The multi-input embedded GUI firmware library is fully developed in 'ANSI-C' following an
OOP approach. This means that the final application uses instances of page and graphic
objects according to their public methods and properties. In the end, the PageObj is a
structure containing public properties (data fields) and methods (functions pointers). The
OOP encapsulation feature is assured. The library has been developed and tested on the
“STM3210C” STMicroelectronics demonstration board.
The library can be included in the final application as a library file (multi-input embedded
GUI library.a) and used as a black box through its exported public API, or can be included in
the final application as source files (.c and .h), if the user wants to debug the library itself, or
to change the HAL functions in order to port the library on a different LCD (in model and
resolution) from the one attached to STM3210C-EVAL.
For more information on the graphic library see the AN3128, rev. 2, application note.
The calibration process is part of the post-processing layer. The touchscreen must be
calibrated at first power-on and/or upon user request.
Once the calibration is done, final adjustments on future power-on of the board are not
necessary because the calibration parameters are saved on the Flash memory.
The touchscreen and the joystick are controlled by the STMPE811 devices.
The STMPE811 has a simple 2-wire I2C digital serial interface which allows the user to
access the data in the touchscreen controller register at any time. It communicates via the
serial interface with a master controller.
Figure 3 shows how the STM32F10xxx microcontroller (master device) must be connected
to the STMPE811 device.
Refer to the STMPE811 datasheet for more information on the register concerning the data
of the touched points on the touchscreen.
Doc ID 18209 Rev 1
9/58
Multi-input embedded GUI library
Figure 3.
AN3311
I/O expander hardware configuration on the STM3210C-EVAL
+3V3
+3V
C8
C89
100nF
100n
IO_Expander_SCK
IO_Expander_SDA
IO_Expander_INT
PB6
PB7
PB1
B14
R159
R15
U7
6
14
10
4
5
2
7
3
0
R3
R37
10K
10
VC
VCC
Vio
GND
GN
SCLK
SDAT
INT
Data in
A0/Data Out
YXY+
X+
IN3
IN2
IN1
IN0
1
16
15
13
12
11
9
8
STMPE81
ST
811
I2C devic
TouchScreen_YTouchScreen_XTouchScreen_Y+
TouchScreen_X+
EXP_I
EXP
_IO9
EXP_I
EXP
_IO1
O10
EXP_I
EXP
_IO1
O11
EXP_I
EXP
_IO1
O12
R5
R57
100K
100
+3V3
+3V
+3V3
+3V
C9
C90
100nF
100n
U8
6
14
10
4
5
2
7
3
R160
10K
10
R164
10K
10
R5
R56
10K
10
VC
VCC
Vio
GND
GN
SCLK
SDAT
INT
Data in
A0/Data Out
YXY+
X+
IN3
IN2
IN1
IN0
1
16
15
13
12
11
9
8
STMPE81
ST
811
I2C devic
+3V3
+3V
EXP_IO1
EXP_I
EXP_I
EXP
_IO2
EXP_I
EXP
_IO3
EXP_I
EXP
_IO4
EXP_I
EXP
_IO5
EXP_I
EXP
_IO6
EXP_I
EXP
_IO7
EXP_I
EXP
_IO8
R5
R58
100K
100
+3V3
+3V
AM08449v1
10/58
Doc ID 18209 Rev 1
AN3311
4
STM3210C-EVAL demonstration board
STM3210C-EVAL demonstration board
Figure 4.
STM3210C-EVAL demonstration board
Doc ID 18209 Rev 1
11/58
STM3210C-EVAL demonstration board
4.1
4.2
AN3311
Features
●
Three 5 V power supply options: power jack, USB connector, or daughterboard
●
Boot from user Flash, system memory or SRAM
●
I2S audio DAC, stereo audio jack
●
512 MByte (or bigger) micro-SD cardTM
●
Both type A and B smartcard support
●
I2C compatible serial interface 64-Kbit EEPROM, MEMS and I/O expander
●
RS-232 communication
●
IrDA transceiver
●
USB-OTG full speed, USB mini-AB connector
●
IEEE-802.3-2002 compliant Ethernet connector
●
Two channels of CAN2.0A/B compliant connection
●
Inductor motor control connector
●
JTAG and trace debug support
●
3.2" 240x320 TFT color LCD with touchscreen
●
Joystick with 4-direction control and selector
●
Reset, wake-up, tamper, and user button
●
4 color LEDs
●
RTC with backup battery
●
MCU consumption measurement circuit
●
Extension connector for daughterboard or wrapping board.
STM32 peripherals mapping
The STM3210C-EVAL demonstration board is designed around the STM32F107VC in a
100-pin TQFP package. The hardware block diagram, Figure 5, illustrates the connection
between the STM32F107VC and peripherals (LCD, EEPROM, MEMS, USART, IrDA, USBOTG, Ethernet, audio, CAN bus, smartcard, micro-SD card, and motor control) and these
features can be located on the actual demonstration board in Figure 6.
12/58
Doc ID 18209 Rev 1
AN3311
STM3210C-EVAL demonstration board
Figure 5.
Hardware block diagram - STM32 peripherals mapping
)3
6REGULATOR
-#5
CONSUMPTION
MEASUREMENT
,%\$SKEY
)#
!UDIO\$!#
-%-3
%%02/-
'0)/
*OYSTICK
%XTENSION
CONNECTORFOR
'0)/S
)/EXPANDER
4OUCHSCREEN
4&4,#\$
53"-INI!"
CONNECTOR
/4'
-ICRO3\$
CARD
30)
-#CONTROL
CONNECTOR
-#
53"POWER
SWITCH
34-&6#4
-))2-)
*4!'
".#CONNECTOR
#!.
TRANSCEIVER
#!.
\$"CONNECTOR
#!.
#!.
TRANSCEIVER
#!.
\$"CONNECTOR
23
TRANSCEIVER
53!24
\$"CONNECTOR
!\$#
53!24
)R\$!
TRANSCEIVER
0OTENTIOMETER
"ATTERYVOLTAGE
MEASUREMENT
)NTEGRATED2*
CONNECTOR
#!.
\$EBUG
4RACE
0(9
53!24
3MARTCARD
INTERFACE
3MARTCARD
INTERFACE
!-V
For more details of calibration parameters, refer to the STPM01 datasheet on www.st.com.
Doc ID 18209 Rev 1
13/58
STM3210C-EVAL demonstration board
Figure 6.
AN3311
STM3210C-EVAL demonstration board layout
&1&1%1&
&10RWRUFRQWURO
&1&1([WHQVLRQKHDGHU
&1
5-
FRQQHFWRU
&1
&\$1
&1
56
8
670)9&7
&1
&\$1
&1
86%0LFUR\$%
FRQQHFWRU
&1
7UDFH
&1
9SRZHU
&1
-7\$*
&1
\$XGLRMDFN
&1
&RORU/&'
&1
0LFUR6'FDUG
8
,U'\$
&1
6PDUWFDUG
59
3RWHQWLRPHWHU
%
5HVHW
%
8VHUNH\
%:DNHXS
4.3
%7DPSHU
8-R\VWLFN
!-V
Power supply
The STM3210C-EVAL demonstration board is designed to be powered by a 5 V DC power
supply and protected by PolyZen from a wrong power plug-in event. It is possible to
configure the demonstration board to use any of the following three sources for the power
supply:
14/58
●
5 V DC power adapter connected to CN18, the power jack on the board (PSU on silk
screen for power supply unit)
●
5 V DC power with 500 mA limitation from CN2, the USB mini-AB connector (USB on
silkscreen)
●
5 V DC power from both CN8 and CN9, the extension connector for the daughterboard
(DTB for daughterboard on silkscreen).
Doc ID 18209 Rev 1
AN3311
STM3210C-EVAL demonstration board
The power supply is configured by setting the related jumpers JP24 and JP25, as described
in Table 2.
Table 2.
Power related jumpers
Jumper
Description
Configuration
JP25 selects one of the three possible power supply resources.
For power supply jack (CN18) to the STM3210C-EVAL only, JP25 is set as shown:
(Default)
For power supply from the daughterboard connectors (CN8 and CN9) to the
STM3210C-EVAL only, JP25 is set as shown:
JP25
For power supply from USB (CN2) to the STM3210C-EVAL only, JP25 is set as shown:
For power supply from power supply jack (CN18) to both the STM3210CEVAL
and daughterboard connected on CN8 and CN9, JP25 is set as
shown to the right (the daughterboard must not have its own power supply
connected):
Vbat is connected to 3.3 V power when JP24 is set as shown: (Default)
JP24
Vbat is connected to battery when JP24 is set as shown:
4.4
Boot option
The STM3210C-EVAL board is able to boot from:
●
Embedded user Flash
●
System memory with boot loader for ISP
●
Embedded SRAM for debugging.
The boot option is configured by setting switches SW1 (BOOT1) and SW2 (BOOT0). The
BOOT0 can be configured also via the RS-232 connector CN6.
Doc ID 18209 Rev 1
15/58
STM3210C-EVAL demonstration board
Table 3.
AN3311
Boot related switches
Switch
Boot from
Configuration
STM3210C-EVAL boots from user Flash when SW2 is set as shown on
the right. SW1 setting does not matter in this configuration. (Default)
STM3210C-EVAL boots from system memory when SW1 and SW2 are
SW1 and SW2 set as shown:
STM3210C-EVAL boots from embedded SRAM when SW1 and SW2
are set as shown:
4.5
Clock source
Two clock sources are available on the STM3210C-EVAL demonstration board for
STM32F107VC, and RTC is embedded.
4.6
●
X2, 32 kHz crystal for embedded RTC
●
X3, 25 MHz crystal with socket for an STM32F107VC microcontroller, it can be
removed from the socket when an internal RC clock is used.
Reset source
The reset signal of the STM3210C-EVAL board is low active and the reset sources include:
●
Reset button, B1
●
Debugging tools from JTAG connector CN13 and trace connector CN12
●
Daughterboard from CN9
●
RS-232 connector CN6 for ISP.
Table 4.
16/58
Reset related jumper
Jumper
Description
JP20
Enables reset of the STM32F107VC embedded JTAG TAP controller each
time a system reset occurs. JP20 connects the TRST signal from the JTAG
connection with the system reset signal RESET#.
Default setting: not fitted.
Doc ID 18209 Rev 1
AN3311
4.7
STM3210C-EVAL demonstration board
Joystick
The joystick is four-directional and includes a selection key.
4.8
Pushbuttons
The following pushbuttons are provided:
4.9
●
Key: user pushbutton
●
Tamper: user pushbutton
●
Wake-up: pushbutton used to wake up the processor from low-power mode.
Storage memory
The ZigBee adapter has a 64-Kbit I2C/RF dual interface memory (M24LR64-r) on board,
and it is connected to the I2C1 peripheral of the MCU.
The I2C address of the memory can be set by using the jumpers JP1 and JP2 on the ZigBee
adapter and must be different from the one already present on the STM3210C-EVAL (with
4.10
Development and debug support
The two debug connectors available on the STM3210C-EVAL demonstration board are:
4.11
1.
CN13, standard 20-pin JTAG interface connector which is compliant with the debug
tools of ARM7 and ARM9
2.
CN12, SAMTEC 20-pin connector FTSH-110-01-L-DV for both SWD and trace which is
compliant with ARM CoreSightTM debug tools
Display and input devices
The 3.2" TFT color LCD connected to SPI3 and 4 general purpose color LED's (LED 1, 2, 3,
4) are available as display devices.
A touchscreen connected to an I/O expander (U7), a 4-direction joystick with selection key, a
general purpose button (B3), a wake-up button (B2), and a tamper detection button (B4) are
available as input devices.
Table 5.
LCD module
3.2" TFT LCD with touchscreen
CN14 (default)
Pin on CN14
Description
Pin connection
1
CS
PB2
2
RS
-
3
WR/SCL
PC10
4
RD
-
Doc ID 18209 Rev 1
17/58
STM3210C-EVAL demonstration board
Table 5.
AN3311
LCD module (continued)
3.2" TFT LCD with touchscreen
CN14 (default)
4.12
Pin on CN14
Description
Pin connection
5
RESET
RESET#
22
BL_GND
GND
23
BL_Control
+5 V
24
VDD
3.3 V
25
VCI
3.3 V
26
GND
GND
27
GND
GND
28
BL_VDD
+5 V
29
SDO
PC11
30
SDI
PC12
31
XL
I/O Expander
32
XR
I/O Expander
33
YD
I/O Expander
34
YU
I/O Expander
JTAG debugging connector CN13
Figure 7.
JTAG debugging connector CN13 viewed from above the PCB
!-V
Table 6.
18/58
JTAG debugging connector CN13
Pin number
Description
Pin number
Description
1
3.3 V power
2
3.3 V power
3
PB4
4
GND
5
PA15
6
GND
7
PA13
8
GND
9
PA14
10
GND
Doc ID 18209 Rev 1
AN3311
STM3210C-EVAL demonstration board
Table 6.
4.13
JTAG debugging connector CN13 (continued)
Pin number
Description
Pin number
Description
11
RTCK
12
GND
13
PB3
14
GND
15
RESET#
16
GND
17
DBGRQ
18
GND
19
DBGACK
20
GND
Daughterboard extension connector CN8 and CN9
Two 50-pin male headers, CN8 and CN9, can be used to connect a daughterboard or
standard wrapping board to the STM3210C-EVAL demonstration board. All 80 GPIOs are
available on it. The space between these two connectors and the power position, GND and
RESET pin are defined as a standard, which allows to develop common daughterboards for
several demonstration boards. The standard width between CN8 pin1 and CN9 pin1 is 2700
mills (68.58mm). This standard was implemented on the majority of demonstration boards.
Each pin on CN8 and CN9 can be used by a daughterboard after disconnecting it from the
corresponding function block on the STM3210C-EVAL demonstration board.
Table 7.
Daughterboard extension connector CN8
How to disconnect with function block on STM3210CEVAL board
Pin
Description
Alternate function
1
GND
-
3
PC7
MC
Disconnect STM3210C-EVAL board from motor power drive
board
5
PC9
USB power switch On
Remove R36
7
PA9
USB VBUS
Remove R78
9
PA0
MC/Ethernet/WKUP
Keep JP14 open. Disconnect STM3210C-EVAL board from
motor power drive board.
11
PC14 via SB1
32 kHz oscillator
Remove R161, close SB1
13
PA12
USB_DP
Remove R43 or disconnect USB cable
15
PC15 via SB2
32 kHz oscillator
Remove R59, close SB2
17
PC10
SPI1_CLK
19
GND
-
21
PC12
SPI1_MOSI
23
PD1
CAN1_TX
25
PD3
LD3
27
PD5
USART2_TX
29
PD7
LD1
Remove R96
Remove R94
31
Doc ID 18209 Rev 1
19/58
STM3210C-EVAL demonstration board
Table 7.
AN3311
Daughterboard extension connector CN8 (continued)
How to disconnect with function block on STM3210CEVAL board
Pin
Description
Alternate function
33
PB3
TDO/SWO
35
PB5
CAN2_RX
Remove R45
37
PB7
I2C1_SDA
Remove R132
39
GND
-
41
PE2
Trace_CK
43
PE4
Trace_D1
45
PB8
MC
47
PE6
Trace_D3
49
D5V
2
PC6
I2S_MCK/MC
JP10 open
4
PC8
MC
Disconnect STM3210C-EVAL board from motor power drive
board
6
PA8
MCO
JP4 open
8
PA10
USB_ID
Remove R38 or disconnect USB cable
10
GND
12
PA11
USB_DM
Remove R42 or disconnect USB cable
14
PA13
TMS/SWDIO
16
PA14
TCK/SWCLK
18
PC11
SPI1_MISO
20
PA15
TDI
22
PD0
CAN1_RX
Remove R44
24
PD2
MC
Disconnect STM3210C-EVAL board from motor power drive
board.
26
PD4
LD4
Remove R97
28
PD6
USART2_RX
Keep JP16 open
30
GND
Disconnect STM3210C-EVAL board from motor power drive
board
Remove R135 and LCD
32
34
PB4
TRST
Keep JP20 open
36
PB6
CAN2_TX/
I2C1_SCK
Keep JP9 open
38
PE0
MC/Micro-SD card
detection
Remove micro-SD card. Disconnect STM3210C-EVAL board
from motor power drive board.
40
PE1
USB_Overcurrent
Remove R35
42
PE3
Trace_D0
44
PE5
Trace_D2
20/58
Doc ID 18209 Rev 1
AN3311
Table 7.
STM3210C-EVAL demonstration board
Daughterboard extension connector CN8 (continued)
Pin
Description
Alternate function
How to disconnect with function block on STM3210CEVAL board
46
PB9
User button
Remove R104
48
3.3 V
50
GND
Table 8.
Daughterboard extension connector CN9
How to disconnect with function block on STM3210CEVAL board
Pin
Description
Alternate function
1
GND
-
3
PD14
MC
Keep JP22 open. Disconnect STM3210C-EVAL board from
motor power drive board.
5
PD12
Ethernet
Remove RS2
7
PD10
Ethernet/smartcard
Keep JP11 open
9
PC13 button
B3
IDD_CNT_EN /
Anti-tamper button
B4
Keep JP1 open
11
RESET#
-
13
PB15
I2S_DIN
15
PB13
I2S_CK/Ethernet
Remove RS3
17
PB11
Ethernet
Remove RS3
19
D5V
-
21
PE14
Smartcard_CMDVCC
Remove R166
25
PE12
MC
Disconnect STM3210C-EVAL board from motor power drive
board
27
PE10
MC
29
PE8
MC
31
PE7
Smartcard_OFF
Remove R69
33
PB1
MC
Remove R168
35
PC5
VBAT_voltage
Remove R154
37
PA7
MC
Remove R169
39
GND
41
PA4
Micro-SD card/
Audio_DAC
Keep JP15 open
43
PA2
Ethernet
Remove R162
45
PC3
Ethernet
Remove RS1
23
Doc ID 18209 Rev 1
21/58
STM3210C-EVAL demonstration board
Table 8.
AN3311
Daughterboard extension connector CN9 (continued)
How to disconnect with function block on STM3210CEVAL board
Pin
Description
Alternate function
47
PC1
Ethernet
49
PC13
IDD_CNT_EN /
Anti-tamper button
B4
Keep JP1 open
2
PD15
MC
Disconnect STM3210C-EVAL board from motor power drive
board
4
PD13
LD2
Remove R95
6
PD11
Ethernet
Remove RS1
8
PD9
Ethernet/smartcard
Keep JP12 open
10
GND
12
PD8
Ethernet/smartcard
Keep JP13 open
14
PB14
IO_Expander_INT
Remove R159
16
PB12
Ethernet/audio
Remove RS3
18
PB10
Ethernet
Remove RS2
20
PE15
MC
Remove R139
22
PE13
MC
Disconnect STM3210C-EVAL board from motor power drive
board
26
PE11
MC
Disconnect STM3210C-EVAL board from motor power drive
board
28
PE9
MC
30
GND
32
PB2
MC
Remove R168
34
PB0
MC
Remove R167
36
PC4
Potentiometer
Remove R103
38
PA6
IDD_Measurement
Remove R79
40
PA5
MC
Remove R84
42
PA3
MC/Ethernet
Keep JP10 open
44
PA1
Ethernet
Keep JP3 open
46
PC2
Ethernet
Remove RS1
48
PC0
MC/smartcard
Remove R165
50
GND
24
22/58
Doc ID 18209 Rev 1
AN3311
4.14
STM3210C-EVAL demonstration board
TFT LCD connector CN14
One 34-pin male header CN14 is available on the board to connect LCD module board
MB785.
4.15
Power connector CN18
The STM3210C-EVAL demonstration board can be powered from a DC 5 V power supply
via the external power supply jack (CN18) shown in Figure 8. The central pin of CN18 must
be positive.
Figure 8.
Power supply connector CN18 viewed from the front
'&9
*1'
!-V
Doc ID 18209 Rev 1
23/58
Demonstration firmware system setup
AN3311
5
Demonstration firmware system setup
5.1
Hardware requirements
5.2
a)
b)
ZigBee module SPZB260-PRO
c)
VDC/2A isolated power supply is recommended
d)
One JTAG programmer/debugger dongle (J-Link from SEGGER or IAR Systems™
is recommended). It is unnecessary if no modifications to the firmware code have
been performed.
STM3210C-EVAL demonstration board setup
Set up the STM3210C-EVAL board as follows:
●
Close jumper JP19
●
Keep JP15 open
●
Remove R79, R84, and R169.
5.3
STM3210C-EVAL and ZigBee adapter with M24LR62-r
memory
Table 9.
STM32 pin no. Pin name
24/58
STM3210C-EVAL I/O
assignment
Extension connector pin
no.
assignment
-
VDD
3.3 V
CN8 - Pin 48
VCC_3V3
-
VSS
GND
CN9 - Pin 50
GND
29
PA4
SPI1_NSS
CN9 - Pin 41
ZIG_SS
30
PA5
SPI1_CLK
CN9 - Pin 40
ZIG_SCLK
31
PA6
SPI1_MISO
CN9 - Pin 38
ZIG_MISO
32
PA7
SPI1_MOSI
CN9 - Pin 37
ZIG_MOSI
92
PB6
CAN2_TX/I2C1_SCK
CN8 - Pin 36
I2C1_SCK
93
PB7
I2C1_SDA
CN8 - Pin 37
I2C1_SDA
2
PE3
Trace_D0
CN8 - Pin 42
ZIG_HOST_INT
3
PE4
Trace_D1
CN8 - Pin 43
VCC-GPIO (for M24LR64r)
4
PE5
Trace_D2
CN8 - Pin 44
ZIG_WAKE
5
PE6
Trace_D3
CN8 - Pin 47
ZIG_RSTB
Doc ID 18209 Rev 1
AN3311
5.4
Demonstration firmware system setup
How to navigate the demo menu
Four basic elements constitute the hardware of the system user interface: a 320 x 240 TFT
LCD display, a resistive touchscreen, a 5-way (left, right, up, down, selection) micro-joystick
and a pushbutton “Key”.
The joystick is primarily used for navigating between the various menu screens, within a
screen and between screen items. In addition, the joystick allows the selection and editing of
item values.
Doc ID 18209 Rev 1
25/58
In-home display firmware
AN3311
6
In-home display firmware
6.1
Firmware architecture
{
In-home display firmware architecture
F
r
e
e
R
T
O
S
InHome Display Firmware Architecture
{
{
{
Hard
dware Multti-Inpu
ut App
plication
Depe
endentt GUI Librarry
Layer
Figure 9.
SmartPlug Coordinator
Zi B St
ZigBee
Stack
k
SPI
Antenna for I2C Dual
Interface Memory
Multi-Input GUI Layer
SPI
LCD HAL
LCD Libraries
STM32F10xx Libraries
I2C
AM08462v1
This section describes the firmware implementation. The tasks/functions are described in
the following format:
Table 10.
Function description format
Function name
Function prototype
The name of the function
Prototype declaration of the function
Behavior description
Brief explanation of how the function is executed
Input parameter {x}
Description of the input parameters
Output parameter {x}
Description of the output parameters
Return value
Value returned by the function
Required preconditions Requirements before calling the function
Called functions
26/58
Other library functions called
Doc ID 18209 Rev 1
AN3311
In-home display firmware
6.2
main.c
6.2.1
Table 11.
Function name
Function prototype
Behavior description
Read and sample the plug consumption values
Input parameter {x}
None
Output parameter {x}
None
Return value
None
Required preconditions None
Called functions
No API/HAL layer functions;
Example:
{
CoordinatorType* pObjCoordinator = GetCoordinatorObj();
int i=0;
pObjCoordinator = GetCoordinatorObj();
//Get the Smart-Plug list
ppSmartPlugList = pObjCoordinator->GetSmartPlugList(pObjCoordinator);
while(1)
{
if ( ppSmartPlugList[0] )
{
smart_points1[i%N_SAMPLES] = ppSmartPlugList[0]->Energy;
smart_points1B[i%N_SAMPLES] = ppSmartPlugList[0]->Power;
}
if ( ppSmartPlugList[1] )
{
smart_points2[i%N_SAMPLES] = ppSmartPlugList[1]->Energy;
smart_points2B[i%N_SAMPLES] = ppSmartPlugList[1]->Power;
}
i++;
if(i == N_SAMPLES)
{
i=0;
for(int j=0; j<N_SAMPLES; j++)
{
smart_points1[j] = 0;
smart_points1B[j] = 0;
smart_points2[j] = 0;
smart_points2B[j] = 0;
}
}
if( i%8 == 0 )
Doc ID 18209 Rev 1
27/58
In-home display firmware
AN3311
}
}
The application simulates the behavior of the system in a 24 hour period considering an
hour as equal to 20 seconds. After 24 hours (simulated), it resets the array values, so the
GraphCharts and the histograms show a maximum value set to zero.
6.2.2
Table 12.
Function name
Function prototype
Behavior description
Check if an input device has been stimulated (touchscreen or
joystick/button)
Input parameter {x}
None
Output parameter {x}
None
Return value
None
Required preconditions None
Called functions
No API/HAL layer functions;
This function checks if an input device has been stimulated (touchscreen or joystick/button)
and calls the graphic library relative function according to the object pressed.
Example:
static void vGraphicLibraryTask( void *pvParameters )
{
CursorShow(195, 50);
/* Infinite main loop ------------------------------------------------------*/
while (1)
{
ProcessTouchScreenData();
/*Time out calculate for power saving mode*/
TimeOutCalculate();
#ifdef USE_STM3210C_EVAL
if (restart_calibration==1)
{
TS_Calibration();
restart_calibration = 0;
}
#else
28/58
Doc ID 18209 Rev 1
AN3311
In-home display firmware
#endif
}
}
6.2.3
Table 13.
Function name
Function prototype
Behavior description
Start the Smartplug Coordinator Application routine
Input parameter {x}
None
Output parameter {x}
None
Return value
None
Required preconditions None
Called functions
No API/HAL layer functions;
This function starts the smartplug coordinator application routine.
Example:
void prvApplicationTask( void * pvParameters )
{
/* The parameters are not used in this task. */
( void ) pvParameters;
for( ;; )
{
applicationTick();
/* Wait until it is time to move onto the next string. */
}
}
6.2.4
prvSetupHardware
Table 14 describes the prvSetupHardware function:
Table 14.
prvSetupHardware function
Function name
Function prototype
prvSetupHardware
void prvSetupHardware (void)
Behavior description
Initialize the hardware peripheral of the STM32 MCU, and ZigBee
hardware configuration
Input parameter {x}
None
Output parameter {x}
None
Return value
None
Doc ID 18209 Rev 1
29/58
In-home display firmware
Table 14.
AN3311
prvSetupHardware function (continued)
Required preconditions None
Called functions
No API/HAL layer functions;
This function is intended to initialize the hardware peripherals of the STM32 MCU, and the
ZigBee hardware configuration.
Example:
static void prvSetupHardware( void )
{
SystemInit();
/* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
RCC_APB2Periph_GPIOC
RCC_APB2Periph_GPIOE
and AFIO clocks */
| RCC_APB2Periph_GPIOB |
| RCC_APB2Periph_GPIOD |
| RCC_APB2Periph_AFIO, ENABLE );
/* Set the Vector Table base address at 0x08000000 */
NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x0 );
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 );
/* Configure HCLK clock as SysTick clock source. */
SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK );
/* Initialize the board */
vBoardInit();
EZSP_Init(); //init OBJ Coordinator
}
6.2.5
vBoardInit
Table 15 describes the vBoardInit function:
Table 15.
vBoardInit function
Function name
Function prototype
vBoardInit
void vBoardInit (void)
Behavior description
Initialize the hardware peripheral of the STM3210C-EVAL board
Input parameter {x}
None
Output parameter {x}
None
Return value
None
Required preconditions None
Called functions
No API/HAL layer functions;
This function is intended to initialize the hardware peripheral of the STM3210C-EVAL board
and the graphic library hardware parameters.
Regarding the file menu.c, it just uses the API function of the graphic library and some
rev. 2, application note.
30/58
Doc ID 18209 Rev 1
AN3311
Getting started with the system
7
Getting started with the system
7.1
Configure IAR tool for building, debugging, and
programming the application
Together with the firmware library package, an example application is delivered in order to
provide the final user with a real example of “In-home display” application usage.
The delivered example application has been written and developed using IAR EWARM 5.40
IDE and can be built for both STM32F10xxx medium-density and high-density
microcontroller families.
The workspace is created using the IAR embedded Workbench 5.40 IDE, using the ARM®based 32-bit STM32F10xx firmware library (ver. 3.1.2) CMSIS compliant, and in C
language.
The tree structure of the project is organized separating and grouping the source files with
the header files, both for the project files and the library files, as shown in Figure 10.
Figure 10. Application project files
In order to load the project, click on File\Open\Workspace and in the window that appears
select, in \project folder\EWARM, the file “Project.eww”.
Doc ID 18209 Rev 1
31/58
Getting started with the system
AN3311
Figure 11. IAR embedded workbench main window
On the main node, where the program name located in the files window is shown, right click
the mouse button and select options. In the window which appears, select the debugger
item in the category list box, and select the proper debugging tool in the driver list box, then
press the Ok button. In the proposed example the J-Link dongle is used (Figure 12).
Press the Make icon or click on Project\Rebuild All. No error or warning should appear once
compiling has completed. Connect the J-Link tool to the USB port of the PC, and connect
the flat cable with the programming adapter. Plug the adapter into the dongle connector.
Press the debug icon, CTRL+D or click project\debug. The debugger starts to download the
firmware to the dongle through the J-Link debugger\programmer. Press the Go button, F5 or
click debug\go in order to execute the firmware in debug mode. To run the dongle in
standalone mode, press the stop debugging icon, CTRL+SHIFT+D or click debug\stop
debugging. Then remove the J-link adapter from the dongle and reset the board by
unplugging and plugging the power cable back in.
Figure 12. IAR embedded workbench debugger options
32/58
Doc ID 18209 Rev 1
AN3311
Getting started with the system
In order to use the In-home display application project, it is necessary to:
7.2
●
Include all the firmware delivered in the In-home display package containing the
FreeRTOS core files. See Figure 10
●
●
Put inside “picture.c” the HEX dump of the pictures to be used with the application GUI
●
Implement a main function as described in the following section.
Example application - main.c
An example of a main application is given below. The main function contains an example of
the In-home display application initialization/configuration and implements the classic
operations:
/* Standard includes. */
#include <stdio.h>
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "queue.h"
#include "semphr.h"
/* Library includes. */
#include "stm32f10x.h"
#include "stm32f10x_it.h"
#include "STM3210c_eval_lcd.h"
#include "LcdHal.h" //SB
/* Demo app includes. */
#include "flash.h"
#include "partest.h"
#include "common.h"
#include "micro_clocks_irqs.h"
#include "micro.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
"graphicObject.h"
"cursor.h"
"stm32d-eval_io_expander.h"
"LcdHal.h"
"TscHal.h"
"pictures.h"
"stm32f10x.h"
"stm32f10x_rcc.h"
"misc.h"
"SmartPlugObj.h"
"CoordinatorObj.h"
"COORDINATOR_Layer.h"
"ZSP_Layer.h"
#ifdef USE_STM3210E_EVAL
#include "stm3210e_eval_lcd.h"
#elif USE_STM3210C_EVAL
#include "stm3210c_eval_lcd.h"
#include "touchscreen.h"
#endif
/* Private define ------------------------------------------------------------*/
Doc ID 18209 Rev 1
33/58
Getting started with the system
AN3311
/* Touchscreen Controller and Joystick DEFINES */
#define TSC_GPIO_PORT_SOURCE
GPIO_PortSourceGPIOB
#define TSC_GPIO_PIN_SOURCE
GPIO_PinSource14
#define JOY_GPIO_PORT_SOURCE
GPIO_PortSourceGPIOB
#define JOY_GPIO_PIN_SOURCE
GPIO_PinSource14
#define JOY_GPIO_SELECT_PORT
GPIOG
#define JOY_GPIO_SELECT_PIN
GPIO_Pin_7
#define JOY_GPIO_RIGHT_PORT
GPIOG
#define JOY_GPIO_RIGHT_PIN
GPIO_Pin_13
#define JOY_GPIO_LEFT_PORT
GPIOG
#define JOY_GPIO_LEFT_PIN
GPIO_Pin_14
#define JOY_GPIO_UP_PORT
GPIOG
#define JOY_GPIO_UP_PIN
GPIO_Pin_15
#define JOY_GPIO_DOWN_PORT
GPIOD
#define JOY_GPIO_DOWN_PIN
GPIO_Pin_3
#define JOY_GPIO_RCC_APB_PERIPH1
RCC_APB2Periph_GPIOG
#define JOY_GPIO_RCC_APB_PERIPH2
RCC_APB2Periph_GPIOG
#define JOY_GPIO_RCC_APB_PERIPH3
RCC_APB2Periph_GPIOG
#define JOY_GPIO_RCC_APB_PERIPH4
RCC_APB2Periph_GPIOG
#define JOY_GPIO_RCC_APB_PERIPH5
RCC_APB2Periph_GPIOD
#define TSC_EXTI_IRQ_CHANNEL
EXTI15_10_IRQn
#define JOY_EXTI_IRQ_CHANNEL
EXTI15_10_IRQn
#define TSC_EXTI_LINE
EXTI_Line14
#define JOY_EXTI_LINE
EXTI_Line14
#define TSC_GPIO_PORT
GPIOA
#define TSC_GPIO_PIN
GPIO_Pin_14
#define TSC_I2C_DEVICE_REGISTER
0x82
#define JOY_I2C_DEVICE_REGISTER
0x88
#define M24LR64_I2C_DEVICE_REGISTER 0x24
#define TSC_I2C_PORT
I2C1
/* User Button GPIO Port and Pin*/
#ifdef USE_STM3210C_EVAL
#define USER_BUTTON_PORT
#define USER_BUTTON_PIN
#elif USE_STM3210E_EVAL
#define USER_BUTTON_PORT
#define USER_BUTTON_PIN
#endif
/* LCD Controller DEFINES */
#define LCD_CTRL_PORT_NCS
#define LCD_GPIO_DATA_PORT
#define LCD_CTRL_PIN_NCS
#define LCD_CTRL_PIN_NWR
#define LCD_CTRL_PIN_RS
#define LCD_GPIO_PIN_SCK
#define LCD_GPIO_PIN_MISO
#define LCD_GPIO_PIN_MOSI
#define LCD_GPIO_RCC_APB_PERIPH
#define LCD_GPIO_RCC_APB_PERIPH_NCS
#define LCD_GPIO_REMAP_PORT
#define LCD_RCC_APB_PERIPH
#define LCD_RCC_AHB_PERIPH
#define LCD_SPI_PORT
#ifdef USE_STM3210C_EVAL
#define LCD_CONNECTION_MODE
#elif USE_STM3210E_EVAL
#define LCD_CONNECTION_MODE
#endif
#define RCC_AHBPeriph_FSMC
34/58
GPIOB
GPIO_Pin_9
GPIOG
GPIO_Pin_8
GPIOB
GPIOC
GPIO_Pin_2
GPIO_Pin_15
GPIO_Pin_7
GPIO_Pin_10
GPIO_Pin_11
GPIO_Pin_12
RCC_APB2Periph_GPIOC
RCC_APB2Periph_GPIOB
GPIO_Remap_SPI3
RCC_APB1Periph_SPI3
RCC_AHBPeriph_FSMC
SPI3
GL_SPI
GL_FSMC
((uint32_t)0x00000100)
Doc ID 18209 Rev 1
AN3311
Getting started with the system
/* Exported variables--------------------------------------------------------*/
LCD_HW_Parameters_TypeDef* pLcdParam;
TSC_HW_Parameters_TypeDef* pTscParam;
JOY_HW_Parameters_TypeDef* pJoyParam;
BTN_HW_Parameters_TypeDef* pBtnParam;
extern volatile GL_u8 touch_done;
GL_s16 smart_points1[N_SAMPLES];
GL_s16 smart_points1B[N_SAMPLES];
GL_s16 smart_points2[N_SAMPLES];
GL_s16 smart_points2B[N_SAMPLES];
SmartPlugType** ppSmartPlugList;
SmartPlugType* pCurrentSmartPlug;
extern GL_Page_TypeDef pageS2B;
extern GL_Page_TypeDef pageS2C;
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
static volatile ErrorStatus HSEStartUpStatus /*= SUCCESS*/;
volatile GL_u8 restart_calibration = 0;
GPIO_InitTypeDef GPIO_InitStructure;
static u32 TimingDelay;
/* The time between cycles of the 'check' functionality (defined within the tick
hook. */
#define mainCHECK_DELAY
( ( portTickType ) 5000 / portTICK_RATE_MS )
#define
#define
#define
priorities. */
( tskIDLE_PRIORITY + 3 )
( tskIDLE_PRIORITY + 2 )
( tskIDLE_PRIORITY + 1 )
/* The period of the system clock in nano seconds. This is used to calculate the
jitter time in nano seconds. */
#define mainNS_PER_CLOCK ((unsigned portLONG)((1.0 /
(double)configCPU_CLOCK_HZ)*1000000000.0))
/*-----------------------------------------------------------*/
/* Configure the hardware for the demo. */
static void prvSetupHardware( void );
static void vEmberTickTask( void *pvParameters );
extern void EZSPInit(void);
static void prvApplicationTask( void * pvParameters );
void vApplication_EXIT2_ISRFunc( void );
void vApplication_USART0_ISRFunc( void );
/* Configure the hardware for the demo. */
static void prvSetupHardware( void );
/* Configure the board, LCD, Joystick, Button, GPIO and other peripherals as required
by the demo. */
static void vBoardInit( void );
/* Check Touchscreen, Joystick, Button in polling mode as required by the demo. */
/* Check the SmartPlug Energy data as required by the demo. */
Doc ID 18209 Rev 1
35/58
Getting started with the system
AN3311
/*
* Configures the high frequency timers - those used to measure the timing
* jitter while the real time kernel is executing.
*/
extern void vSetupHighFrequencyTimer( void );
EmberNetworkStatus networkState = EMBER_NO_NETWORK;
/* insert Start */
xSemaphoreHandle xSemaphore_Ember = NULL;
xSemaphoreHandle xSemaphore_Serial = NULL;
extern void EZSP_Init(void);
extern void emberTick(void);
extern void processSerialInput(void);
extern void applicationTick(void);
/* insert End */
/*-------------------------*/
int main( void )
{
#ifdef DEBUG
debug();
#endif
pLcdParam
pTscParam
pJoyParam
pBtnParam
=
=
=
=
NewLcdHwParamObj
NewTscHwParamObj
NewJoyHwParamObj
NewBtnHwParamObj
();
();
();
();
prvSetupHardware();
/* Start the tasks. FreeRTOS API. */
configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY,
configMINIMAL_STACK_SIZE*2, NULL, tskIDLE_PRIORITY+1,
/* Start the scheduler. */
//
emberLeaveNetwork();
/* Will only get here if there was insufficient memory to create the idle task. The
for( ;; );
}
The initialization process is charged with preparing the basic mechanism of the system:
36/58
●
Hardware peripheral configuration and initialization
●
ZigBee stack initialization
●
●
Starting system.
Doc ID 18209 Rev 1
AN3311
Getting started with the system
The clock distribution and the interrupt settings are two components that are strongly
dependent on the target project. An example of clock rate may be 72 MHz as the maximum
speed of the current STM32 microcontroller. It can be decreased to reduce the power
consumption. The clock rate assumptions are:
●
System HCLK - 72 MHz
●
Low speed peripheral PCLK1 - 72 MHz
●
High speed peripheral PCLK2 - 36 MHz
●
Analog to digital converter ADCCLK - 36 MHz
The interrupt setting situation is very similar to clock distribution. The library functions
involved with interrupt managing do not take the priorities into account; they only perform
very necessary and absolutely common settings to make them serviceable.
Doc ID 18209 Rev 1
37/58
In-home display GUI application
8
AN3311
In-home display GUI application
If the ZigBee dongle is not connected or the resistors R79, R84, and R169 have not been
removed from the STM3210C-EVAL, the following screen is shown:
Figure 13. ZigBee dongle connection problem
After a board reset, if the firmware is correctly loaded into the Flash memory and the board
power is correctly supplied, the main screen is displayed as shown in Figure 14.
38/58
Doc ID 18209 Rev 1
AN3311
In-home display GUI application
If Search Plugs is selected, the coordinator scans for smartplug devices for a certain length
of time and the display shows the following screens in loop:
Figure 15. Searching plugs
After that, if some plugs are connected, it adds them to the smartplug list and then shows
the home screen.
Doc ID 18209 Rev 1
39/58
In-home display GUI application
AN3311
If you click on Management two situations are possible:
●
If no plug is connected to the smartplug coordinator, the following screen is shown:
Figure 16. No plug detected
●
Once more plugs are detected, the following screen is shown:
Figure 17. Plugs detected
There are three main buttons: identify, modify, and control. They allow to manage the
smartplug device.
The Identify button is useful to activate the LED flashing on the relative plug, so this way the
user can easily identify which plug they are going to manage through the GUI.
If Modify is clicked, the user can change the label of the selected plug, through the screen
shown in Figure 18, choosing the new label from a list contained in a combobox.
40/58
Doc ID 18209 Rev 1
AN3311
In-home display GUI application
Figure 18. Label changing
The user should scroll the list of the labels and click on the Apply button in order to save the
information and set the label also in the plug device via ZigBee protocol.
When Control is clicked, it is possible to switch ON/OFF the smartplug, in case of relay type,
or regulate the output power, in case of TRIAC type. The following screens show both
possibilities:
Figure 19. TRIAC smartplug management
Doc ID 18209 Rev 1
41/58
In-home display GUI application
AN3311
Figure 20. Relay smartplug management
In the home screen, by clicking on Statistics, it is possible to see the electrical consumption
of the single smartplug device or the total consumption related to all plugs connected to the
smartplug coordinator. The following screen is shown:
Figure 21. Smartplug statistics
42/58
Doc ID 18209 Rev 1
AN3311
In-home display GUI application
When Energy is clicked, the following screen, representing the energy consumption of the
selected smartplug device, is shown:
Figure 22. Energy consumption
When Global Energy is clicked, the following screen, representing the energy consumption
of the whole smartplug network, is shown:
Figure 23. Global energy consumption
Doc ID 18209 Rev 1
43/58
In-home display GUI application
AN3311
When Power is clicked, the following screen, representing the power consumption of the
selected smartplug device, is shown:
Figure 24. Power consumption
When Global Power is clicked, the following screen, representing the power consumption of
the whole smartplug network, is shown:
Figure 25. Global power consumption
When the Refresh button is clicked, it is possible to make a refresh of the graph chart in
relation to the sampled points of the power consumption.
When the Home button is clicked, it returns to the home screen.
44/58
Doc ID 18209 Rev 1
PE6
VCC-GPIO PE4
I2C1_SDA
Doc ID 18209 Rev 1
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
CN8
3V3
PE3
PE5
I2C1_SCK
4k7
R3
JP2
L1
4.7uH
1 Jumper
2
3
1
2
3
4
5
6
J4
U1
SDA
SCL
E1
VCC
J2
1
2
3
4
5
6
5
VBRD
MOSI
MISO
SCLK
nSSEL
GND
ZIGBEE/SPZB260-PRO
3
1
4k7
R2
ZIG_MOSI
PA7 (SPI1_MOSI) - Remove R169
ZIG_SS
PA4 (SPI1_NSS) - Keep JP15 open
JP1
Jumper
2
ZIG_MOSI
ZIG_MISO
ZIG_SCLK
ZIG_SS
VCC_3V3
I2C1_SDA
I2C1_SCK
E1
7
6
VCC-GPIO
8
ZigBee - CONN1
M24LR64
VSS
AC1
AC0
E0
ZigBee - CONN2
VBRD
ZIG_HOST_INT HOST_INT
WAKE
ZIG_WAKE
RSTB
ZIG_RSTB
GND
GND
VCC_3V3
GND 4
3
2
E0 1
VCC_3V3
CN9
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
GND
ZIG_MISO PA6 (SPI1_MISO) - Remove R79
ZIG_SCLK PA5 (SPI1_CLK) - Remove R84
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
9
Schematics
9.1
Smartplug board schematics and layout
Prior to using this adapter, remove the required
resistance from the STM3210C-Eval Board
VCC_3V3
4k7
R1
VCC_3V3
SMD 7.8mm diameter, 5.3mm height
GND
VCC_3V3
AN3311
Schematics
Figure 26. ZigBee and dual interface EEPROM adapter schematic for STM3210C-EVAL
AM08515v1
45/58
Schematics
9.2
AN3311
ZigBee/RF adapter for smartplug and dual interface memory
Figure 27. ZigBee and dual interface EEPROM adapter layout for STM3210C-EVAL
46/58
Doc ID 18209 Rev 1
TDI
RESET#
TRST
TMS/SWDIO
TCK/SWCLK
TDO/SWO
TRACE_CK
TRACE_D0
TRACE_D1
TRACE_D2
TRACE_D3
Doc ID 18209 Rev 1
IDD_Measurement
VBAT_Voltage
LP_WAKEUP
VBAT_DIV
IDD_CNT_EN
RS232/IrDA_RX
RS232/IrDA_TX
U_USART&IrDA
USART&IrDA.SchDoc
USB_VBUS
U_Power
Power.SchDoc
SmartCard_CMDVCC
SmartCard_CLK
SmartCard_RST
SmartCard_IO
SmartCard_3/5V
SmartCard_OFF
U_SmartCard
SmartCard.SchDoc
MCO
PHY_RESET#
MII_TX_CLK
MII_TXD0
MII_TXD1
MII_TXD2
MII_TXD3
MII_INT
MII_TX_EN
MII_RX_ER
MII_RX_DV/RMII_CRSDV
MII_RX_CLK/RMII_REF_CLK
MII_RXD0
MII_RXD1
MII_RXD2
MII_RXD3
MII_COL
MII_CRS
MII_MDIO
MII_MDC
U_Ethernet
Ethernet.SchDoc
U_JTAG&Trace
JTAG&Trace.SchDoc
MicroSDCard_MISO
MicroSDCard_Detection
MicroSDCard_CS
MicroSDCard_MOSI
MicroSDCard_SCK
U_MicroSDCard
MicroSDCard.SchDoc
CAN1_RX
CAN1_TX
CAN2_RX
CAN2_TX
Audio_RST
Audio_DAC_OUT
Audio_SDA
Audio_SCK
I2S_CK
I2S_DIN
I2S_CMD
I2S_MCK
USART2_RX
USART2_TX
IDD_CNT_EN
IDD_Measurement
VBAT_Voltage_OUT
SmartCard_CMDVCC
SmartCard_CLK
SmartCard_RST
SmartCard_IO
SmartCard_3/5V
SmartCard_OFF
MCO
MII_TX_EN
MII_RX_ER
MII_RX_DV/RMII_CRSDV
MII_RX_CLK/RMII_REF_CLK
MII_RXD0
MII_RXD1
MII_RXD2
MII_RXD3
MII_COL
MII_CRS
MII_MDIO
MII_MDC
MII_TX_CLK
MII_TXD0
MII_TXD1
MII_TXD2
MII_TXD3
TDI
RESET#
TRST
TMS/SWDIO
TCK/SWCLK
TDO/SWO
TRACE_CK
TRACE_D0
TRACE_D1
TRACE_D2
TRACE_D3
MicroSDCard_Detection
MicroSDCard_CS
CAN1_RX
CAN1_TX
CAN2_RX
CAN2_TX
I2S_CK
I2S_DIN
I2S_CMD
I2S_MCK
Audio_DAC_OUT
U_MCU
MCU.SchDoc
USB_P owerSwitchOn
USB_DM
USB_DP
USB_ID
USB_VBUS
USB_OverCurrent
PA[0..15]
PB[0..15]
PC[0..15]
PD[0..15]
PE[0..15]
SPI3_MISO
LCD_CS
SPI3_SCK
SPI3_MOSI
I2C1_SCK
I2C1_SDA
IO_Expander_INT
Potentiometer
Anti_Tamper
WAKEUP
User_Button
LED4
LED3
LED2
LED1
MC_PFCsync1
MC_PFCsync2
MC_WL
MC_VH
MC_VL
MC_UH
MC_UL
MC_WH
MC_NTC
MC_DissipativeBrake
MC_PFCpwm
MC_EnIndex
MC_BusVoltage
MC_HeatsinkTemperature
MC_EnB
MC_EnA
MC_CurrentC
MC_CurrentB
MC_CurrentA
MC_EmergencySTOP
R131
R132
R133 R134
4K7 4K7
+3V3
0
0
TouchScreen_YTouchScreen_Y+
TouchScreen_XTouchScreen_X+
USB_P owerSwitchOn
USB_DM
USB_DP
USB_ID
USB_VBUS
USB_OverCurrent
U_USB_OTG_FS
USB_OTG_FS.SchDoc
PA[0..15]
PB[0..15]
PC[0..15]
PD[0..15]
PE[0..15]
RESET#
U_ExtensionConnector
ExtensionConnector.SchDoc
LCD_CS
LCD_CLK
LCD_DI
RESET#
LCD_DO
U_LCD
LCD.SchDoc
BNC1
BNC2
JOY_SEL
JOY_DOWN
JOY_LEFT
JOY_RIGHT
JOY_UP
MEMS_INT1
MEMS_INT2
EXP_IO12
EXP_IO11
EXP_IO10
EXP_IO9
EXP_IO8
EXP_IO7
EXP_IO6
EXP_IO5
EXP_IO4
EXP_IO3
EXP_IO2
EXP_IO1
TouchScreen_YTouchScreen_Y+
TouchScreen_XTouchScreen_X+
IO_Expander_SCK
IO_Expander_SDA
IO_Expander_INT
U_IO_Expander
IO_Expandor.SchDoc
LED4
LED3
LED2
LED1
EEPROM_SCK
EEPROM_SDA
MEMS_SCK
MEMS_SDA
Potentiometer
Anti_Tamper
WAKEUP
User_Button
U_IO Peripherals
IO Peripherals.SchDoc
MC_PFCsync1
MC_PFCsync2
BNC2
MC_WL
BNC1
MC_VH
MC_VL
MC_UH
MC_UL
MC_WH
MC_NTC
MC_DissipativeBrake
MC_PFCpwm
MC_EnIndex
MC_BusVoltage
MC_HeatsinkTemperature
MC_EnB
MC_EnA
MC_CurrentC
MC_CurrentB
MC_CurrentA
MC_EmergencySTOP
U_MotorControl
MotorControl.SchDoc
9.3
U_CAN
CAN.SchDoc
U_Audio
Audio.SchDoc
AN3311
Schematics
STM3210C
Figure 28. STM3210C main schematic
AM08494v1
47/58
Doc ID 18209 Rev 1
MicroSDCard_CS
Audio_DAC_OUT
2
JP14
RESET#
3
100nF
C15
2
4
RESET
0
R78
[N/A]
R62
+3V3
220
R63
1N4148
D2
+3V3
35
36
37
89
90
91
92
93
95
96
47
48
51
52
53
54
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PB8
PB9
PB10
PB11
PB12
PB13
PB14
P B 15
D1
1N4148
JP19
STM32F107VCT
OSC_IN
OSC_OUT
NRST
NC
BOOT0
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PB8
PB9
PB10
PB11
PB12
PB13
PB14
PB15
PA0-WKUP
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PA8
PA9
PA10
PA11
PA12
PA13
PA14
PA15
U9A
12
13
14
73
94
23
24
25
26
29
30
31
32
67
68
69
70
71
72
76
77
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PA8
PA9
PA10
PA11
PA12
PA13
PA14
PA15
TP4
PTP_PPS
TP6
MCO
SW2
JP18
09.03290.01
R61
10K
IO_Expander_INT
I2S_DIN
I2C1_SDA
MII_TXD3
User_Button
MII_RX_ER
MII_TX_EN
TDO/SWO
TRST
CAN2_RX
MC_CurrentB
MC_CurrentC
USB_ID
USB_DM
USB_DP
TMS/SWDIO
TCK/SWCLK
TDI
MC_BusVoltage
IDD_Measurement
MC_CurrentA
MCO
MII_RX_CLK/RMII_REF_CLK
MII_MDIO
X3
25MHz (with socket)
1
B1
20pF
C19
C18
20pF
10K
CAN2_TX
JP9
MII_TXD0
I2S_CMD
I2S_CK
MII_TXD1
LCD_CS
R60
09.03290.01
I2C1_SCK
3
1
2
USB_VBUS
MII_COL
+3V3
1 SW1
JP15
MII_CRS
WAKEUP
3
2
48/58
1
PD15
PD14
PD13
PD12
PD11
PD10
PD9
PD8
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD 0
PE15
PE14
PE13
PE12
PE11
PE10
PE9
PE8
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
46
45
44
43
42
41
40
39
38
5
4
3
2
1
98
97
PC15
PC14
PC13
PC12
PC11
PC10
PC9
PC8
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
62
61
60
59
58
57
56
55
88
87
86
85
84
83
82
81
9
8
7
80
79
78
66
65
64
63
34
33
18
17
16
15
MicroSDCard_Detection
PE15
PE14
PE13
PE12
PE11
PE10
PE9
PE8
PE7
PE6
PE5
PE4
PE3
PE2
PE1
PE0
PD15
PD14
PD13
PD12
PD11
PD10
PD9
PD8
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD0
PC15-OSC32_OUT
PC14-OSC32_IN
PC13-ANTI_TAMP
PC12
PC11
PC10
PC9
PC8
PC7
PC6
PC5
PC4
PC3
PC2
PC1
PC0
4
3
1
2
MC_EmergencySTOP
SmartCard_CMDVCC
MC_WH
MC_WL
MC_VH
MC_VL
MC_UH
MC_UL
SmartCard_OFF
TRACE_D3
TRACE_D2
TRACE_D1
TRACE_D0
TRACE_CK
USB_OverCurrent
MC_PF Csync2
LED1
USART2_RX
USART2_TX
LED4
LED3
MC_NTC
CAN1_TX
CAN1_RX
MC_PFCpwm
MC_PF Csync1
LED2
MII_RXD3
MII_RXD2
VBAT_Voltage_OUT
Potentiometer
MII_TX_CLK
MII_TXD2
MII_MDC
SPI3_MOSI
SPI3_MISO
SPI3_SCK
USB_P owerSwitchOn
MC_EnIndex
MC_EnB
R59
0
JP26
C17
10pF
0
R165
R161
0
C16
10pF
MC_EnA
I2S_MCK
Anti_Tamper
IDD_CNT_EN
JP13
3
JP12
1
3
JP11
1
3
1
PE[0..15]
PD[0..15]
PC[0..15]
PB[0..15]
MII_RX_DV/RMII_CRSDV
SmartCard_IO
MII_RXD0
SmartCard_RST
MII_RXD1
SmartCard_CLK
PE[0..15]
PD[0..15]
PC[0..15]
PA[0..15]
default set/ feature enabled anotherset/ feature enabled
==================================================
JP1:
2<->3 / Anti_Temper
1<->2 / MCU current measurement
JP9:
close / I2C device
open/ CAN2
JP10:
1<->2 / I2S Audio
2<->3 / MC
JP11:
2<->3 / Ethernet
1<->2 / Smartcard
JP12:
2<->3 / Ethernet
1<->2 / Smartcard
JP13:
2<->3 / Ethernet
1<->2 / Smartcard
JP14:
1<->2 / Ethernet
2<->3 / WKUP & MC
JP15:
close / SDcard CS
open/ outputfor audio DAC
JP18:
open/BL_Boot0 disabled close / BL_Boot0
JP19:
open/BL_Reset disabled
close / BL_Reset
2
2
2
MC_HeatsinkTemperature
SmartCard_3/5V
JP10
3
1
JP1
3
Jumper configuration:
2
2
1
X2
MC306-G-06Q-32.768 (manufacturerJFVNY)
PA[0..15]
PB[0..15]
9.4
3
MC_DissipativeBrake
Schematics
AN3311
MCU
Figure 29. MCU schematic
AM08495v1
AN3311
9.5
Schematics
LCD
Figure 30. LCD schematic
CN14
PB2
LCD_CS
1
2
3
4
5
PC10
LCD_CLK
RESET#
+5V
+3V3
LCD_DO
LCD_DI
PC11
PC12
+5V
22
23
24
25
26
27
28
29
30
CS
RS
WR/SCL
RD
RESET
BL_GND
BL_Control
VDD
VCI
GND
GND
BL_VDD
SDO
SDI
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PD8
PD10
PD11
PD12
PD13
PD14
PD15
PD16
PD17
XL
XR
YD
YU
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
31
32
33
34
To IO expandor
TouchScreen_XTouchScreen_X+
TouchScreen_YTouchScreen_Y+
3.2" LCD_connector (MB785 with AM-240320D4TOQW-T00H(R))
CN15
1
2
3
4
5
6
7
8
+3V3
+3V3
9
10
11
12
13
14
15
16
CS
SCL
SDI
RS
WR
RD
SDO
RESET
VDD
VCI
GND
GND
BL_VDD
BL_Control
BL_GND
BL_GND
2.4" LCD connector(MB542 with AM240320L8TNQW-00H)
AM08496v1
Doc ID 18209 Rev 1
49/58
Schematics
9.6
AN3311
I/O expander
Figure 31. I/O expander schematic
+3V3
C89
100nF
IO_Expander_SCK
IO_Expander_SDA
IO_Expander_INT
PB6
PB7
PB14
R159
U7
6
14
10
4
5
2
7
3
0
R37
10K
VCC
Vio
GND
SCLK
SDAT
INT
Data in
A0/Data Out
YXY+
X+
IN3
IN2
IN1
IN0
1
16
15
13
12
11
9
8
STMPE811
TouchScreen_YTouchScreen_XTouchScreen_Y+
TouchScreen_X+
EXP_IO9
EXP_IO10
EXP_IO11
EXP_IO12
R57
100K
+3V3
+3V3
C90
100nF
U8
6
14
10
4
5
2
7
3
R160
10K
R164
10K
R56
10K
+3V3
VCC
Vio
GND
SCLK
SDAT
INT
Data in
A0/Data Out
YXY+
X+
IN3
IN2
IN1
IN0
1
16
15
13
12
11
9
8
STMPE811
EXP_IO1
EXP_IO2
EXP_IO3
EXP_IO4
EXP_IO5
EXP_IO6
EXP_IO7
EXP_IO8
R58
100K
+3V3
AM08497v1
50/58
Doc ID 18209 Rev 1
I/O peripherals
AN3311
9.7
Figure 32. I/O peripherals
U15
CN11
VB334
PD7
LED1
C91
2
LD2
Orange
1
2
LED2
R107
10K
R95
PD3
R96
1
2
1
2
100nF
100nF
C56
LD4
Blue
PD4
LED4
R97
680
EEPROM_SCK
EEPROM_SDA
+3V3
+3V3
+3V3 U16
1
VDD_IO
CS
6
VDD
SDO
100nF
3
Reserved
GND
PB7
13
SDA
GND
PB6
14
SCL
GND
8
INT1
GND
9
INT2
Reserved
MEMS
MEMS_SDA
MEMS_SCK
MEMS_INT1
MEMS_INT2
To IO expander
R114
4K7
P C 13
2
RV1
10K
100
B4
Tamper
4
1
C57
100nF
B2
WKUP
C59
[N/A]
51/58
R110
R111
100
100
C58
100nF
WAKEUP
PA0 R116
330
R117
220K
AM08516v1
Schematics
4
Button
R105
0
2
3
2
1K
R109
3
Anti_Tamper
B3
USER
R86
0
+3V3
R115
4K7
0
R103
C60
10nF
+3V3
R104
PC4
LIS302DL
+3V3
1
Potentiometer
7
12
2
10
5
4
11
3
Potentiometer
R106
10K
C92
User_Button
100nF
LEDs
680
M24C64-WMN6
PB 9
Joystick
680
LED3
JP17
MT008-A
330
PD13
LD3
Red
100nF
8
VCC
7
WC
6 PB6
SCL
5 PB7
SDA
DWON
LEFT
RIGHT
UP
1
E0
E1
E2
VSS
LD1
Green
1
4
1
2
3
4
+3V3
R94
3
Doc ID 18209 Rev 1
U17
3
1
4
6
2
EEPROM
Selection
1
CN10
VB334
0
0
0
0
0
5
4
3
2
1
5
4
3
2
1
BNC
R98
R99
R100
R101
R102
C55
To IO expander
JOY_SEL
JOY_DOWN
JOY_LEFT
JOY_RIGHT
JOY_UP
C54
PA7
PB0
BNC1
BNC2
COMMON
2
R89
10K
R90
10K
R91
10K
R92
10K
R93
10K
50
100nF
R113
5
100
+3V3
100nF
50
C53
SB4
R108
R112
C52
SB3
Schematics
9.8
AN3311
Extension connector
Figure 33. Extension connector
Pin assignmentf i x ed
P i n assignmentfixed
Pin assignmentf i x ed
P i n assignmentfixed
L ef t
R i ght
CN8
PC 7
PC9
PA 9
PA0
SB1
PC14
P A 12
SB2
PC15
P C 10
Open by default
PC12
PD 1
PD 3
PD 5
PD7
PB 3
PB 5
PB7
PE 2
PE 4
PB 8
PE6
D5V
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
CN9
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
PC6
PD14
PD12
PD10
PC 8
PA8
P A 10
R87
R88
PC13
RESET#
PA11
P A 13
PA14
PB15
PB13
PB11
P C 11
PA15
PD0
PD 2
PD 4
PD 6
D5V
PE14
PE12
PE10
PE8
PE7
PB1
PC5
PA7
PB 4
PB 6
PE0
PE1
PE 3
PE 5
PB 9
+3V3
PA4
PA2
PC3
PC1
PC13
820
820
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
PD15
PD13
PD11
PD9
PD8
PB14
PB12
PB10
PE15
PE13
PE11
PE9
PB2
PB0
PC4
PA6
PA5
PA3
PA1
PC2
PC0
PA[0..15]
PB[0..15]
PC[0..15]
PD[0..15]
PE[0..15]
RESET#
PA[0..15]
PB[0..15]
PC[0..15]
PD[0..15]
PE[0..15]
RESET#
AM08505v1
52/58
Doc ID 18209 Rev 1
AN3311
9.9
Schematics
JTAG and trace
Figure 34. JTAG and trace
+3V3
JP20
R121 R122 R123
10K 10K 10K
R124
10K
PA13
PA14
PB3
PA15
PB4
TMS/SWDIO
TCK/SWCLK
TDO/SWO
TDI
TRST
RESET#
R125
10K
CN12
FTSH-110-01-L-DV
+3V3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TRACE_D3
TRACE_D2
TRACE_D1
TRACE_D0
TRACE_CK
CN13
JTAG
KEY
R129 0
R119 [N/A]
R130 0
R120 [N/A]
PE6
PE5
PE4
PE3
PE2
+3V3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
+3V3
R118
[N/A]
R126
10K
R127
10K
R128
10K
JTAG connector
Trace connector
AM08506v1
Doc ID 18209 Rev 1
53/58
+3V3
1
3
2
L1
JP24
BT1
CR1220 holder
VDD_MCU
+3V3
1
VREF+
R157
47
R155
S
4
0
0
R151
20K(1%)
R163
R150
10K(1%)
R154
PC5
1K(1%)
From IO expander
VBAT_DIV
VBAT_Voltage
C82
100nF
20
19
49
74
99
27
10
VREF-
C83
100nF
VDD_MCU
BARRACUDA_256K
VREFVSSA
VSS_1
VSS_2
VSS_3
VSS_4
VSS_5
100nF
1uF
C86
+3V3
T2
STT5PF20V
C27
VREF+
VDDA
VDD_1
VDD_2
VDD_3
VDD_4
VDD_5
VBAT
U9B
VREF
TP13
G
D
C81
100nF
21
22
50
C87
75
100nF 100
28
11
VDD_MCU
6
C76
1uF
2
VDDA
1(1%)
4
1
2
3
R156
3
5
1
2
6
C84
100nF
C85
100nF
R147
0
5
3
3
+5V
+5V
3
C79
220uF
DC-10B
CN18
3
1
Vin
1
2
3
4
5
6
7
8
VCC
Q10
Q8
Q9
CLR
CI
CO
CO
Vout
2
Vin
Vout
C51
10uF
+2V5
U19
LD1086D2M33
3
2
C88
1nF
4
R158
15K
C48
100nF
R153
30K
C75
10uF
C77
100nF
+3V3
C80
100nF
TP10
3V3
Z1
SMAJ5.0A-TR
PA0
+3V3
PA6
2
1
LP_WAKEUP
CG1
CG2
CG3
CV
D5V
4
5
6
3
USB_VBUS
E5V
BNX002-01
SG
SV
red
6
4
2
1
C74
10uF
JP25
LD7
2
IDD_Measurement
IDD_CNT_EN
U20
R152
10K
PC13
+3V3
Oscillator frequency30KHz
TP5
2V5
16
15
14
13
12
11
10
9
+3V3
S
5
1
2
6
STT5PF20V
3
0
T1
M74HC4060TTR
Q12
Q13
Q14
Q6
Q5
Q7
Q4
GND
U24
+3V3
R79
4K7
C78
0.47uF
R149
U18
ZEN056V130A24LS
U27
LD1117S25TR
1
2
3
5
2
C79_1
220uF
VCC
O/I
74H1G66STR
I/O
C
GND
U22
U23
74LX1G04CTR
1
4
3
U21
MAX9938FEUK+
4
2
5
2
JP23
1
GND
Doc ID 18209 Rev 1
1
54/58
G
5
3
1
1K5
R148
E5V
TP11
5V
+5V
TP12
Ground
9.10
D
VDD_MCU
Schematics
AN3311
Power
Figure 35. Power
AM08517v1
AN3311
Schematics
9.11
LCD 3.2" module with SPI and 16-bit interface 1
Figure 36. LCD 3.2" module with SPI and 16-bit interface 1
CN1
CS
RS
WR
RD
#RESET
1
2
3
4
5
CS
RS
WR/SCL
RD
RESET
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PD8
BLGND
BL_Control
VDD
BLVDD
SDO
SDI
22
23
24
25
26
27
28
29
30
PD10
PD11
PD12
PD13
PD14
PD15
PD16
PD17
BL_GND
BL_Control
VDD
VCI
GND
GND
BL_VDD
SDO
SDI
6
7
8
9
10
11
12
13
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PD8
14
15
16
17
18
19
20
21
PD10
PD11
PD12
PD13
PD14
PD15
PD16
PD17
31
32
33
34
XL
XR
YD
YU
Soldered for i80-system 16-bit interface
SDO
SDI
R4
LCD board connector to mother board
CS
WR
RD
RS
31
34
35
33
SDO
SDI
10
12
#RESET
32
VDD
4.7uH(1A)
L1
BL_Control
STPS1L40M
C1
4.7uF/50V
U1
8
1
7
3
9
0
SW
Vo
Vi
NC
EN
GND
FB
PGND Rset
STLD40DPMR
BLGND
VSYNC
HSYNC
DOTCLK
ENABLE
NC
CS
WR/SCL
RD
RS
SDO
SDI
RESET
40
41
VCC
VCC
Z1
A
K
R5
36
37
38
39
11
The 34-pin connector to motherboard for both
serial and 16 - bit interface. Compatible with
MB694 with touchscreen signals added on
pin 31-34.
BLGND
6
5
BLGND
4
2
44
43
6
42
45
1
LED_A
LED_K
VSS
VSS
VSS
VSS
IM1
IM3
IM0/ID
YU
YD
XR
XL
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
D16
D17
8
9
7
5
4
3
2
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
YU
YD
XR
XL
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PD8
PD9
PD10
PD11
PD12
PD13
PD14
PD15
PD16
PD17
VDD
0
PD16
PD14
PD12
PD10
10K
RP2
PD8
PD6
PD4
PD2
10K
RP3
PD9
PD0
RS
RD
10K
RP4
PD17
PD15
PD13
PD11
FF0245SS1
AM-240320D4TOQW-T00H(R)
R6
100K
10K
RP5
R7
10
PD7
PD5
PD3
PD1
RP6
R8
do not fit
4K7
4K7
RP1
VDD
BLVDD
R2
R3
CN2
VSYNC
HSYNC
DotClk
Enable
XL
XR
YD
YU
C2
2.2uF
10K
Soldered for Serial interface only
3.2LCD_connector
BLVDD
R1
BLGND
HSYNC
Enable
VSYNC
DotClk
C3
1uF/50V
10K
10K
AM08509v1
Doc ID 18209 Rev 1
55/58
References
10
AN3311
References
1.
AN3128 application note
2.
RM0008 reference manual
3.
STM32F10xFWLib 3.2.1 help file
4.
STM811 datasheet
5.
TN0074 technical note
6.
UM0608 user manual
7.
STEVAL-IHP001V3 schematics diagram
8.
AN2993 application note
9.
M24LR64-r datasheet
10. AN2972 application note.
56/58
Doc ID 18209 Rev 1
AN3311
11
Revision history
Revision history
Table 16.
Document revision history
Date
Revision
14-Dec-2010
1
Changes
Initial release.
Doc ID 18209 Rev 1
57/58
AN3311
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the
right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any
time, without notice.
All ST products are sold pursuant to ST’s terms and conditions of sale.
Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no
liability whatsoever relating to the choice, selection or use of the ST products and services described herein.
No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this
document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products
or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such
third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS
OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS EXPRESSLY APPROVED IN WRITING BY AN AUTHORIZED ST REPRESENTATIVE, ST PRODUCTS ARE NOT
RECOMMENDED, AUTHORIZED OR WARRANTED FOR USE IN MILITARY, AIR CRAFT, SPACE, LIFE SAVING, OR LIFE SUSTAINING
APPLICATIONS, NOR IN PRODUCTS OR SYSTEMS WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY,
DEATH, OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE. ST PRODUCTS WHICH ARE NOT SPECIFIED AS "AUTOMOTIVE
GRADE" MAY ONLY BE USED IN AUTOMOTIVE APPLICATIONS AT USER’S OWN RISK.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void
any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any
liability of ST.
ST and the ST logo are trademarks or registered trademarks of ST in various countries.
Information in this document supersedes and replaces all information previously supplied.
The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.