preliminary Getting started with E909.06 Overview of software and tools Version 1.00 14.04.2015 Mechaless Systems GmbH TRIWO Technopark Bruchsal Werner-von-Siemens-Str. 2-6 Building 5108 76646 Bruchsal
LIMITED WARRANTY THERE IS NO WARRANTY FOR THE CORRECTNESS OF THIS PUBLICATION OR THE RELATED CODE EXAMPLES OR RELATED PROGRAMS TO THE EXTENT PERMITED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING. THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PUBLICATION OR THE PUBLISHED CODE EXAMPLES OR RELATED PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PUBLICATION OR THE PUBLISHED CODE EXAMPLES OR RELATED PROGRAMS IS WITH YOU. SHOULD THE PUBLICATION OR THE PUBLISHED CODE EXAMPLES OR THE RELATED PROGRAMS PROVE TO BE INCORRECT OR DEFECTIVE, YOU ASSUME THE COST OF ALL NECCESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT, UNLESS REQUIRED BY APPLICABLE LAW, WILL THE COPYRIGHT HOLDER OR ANY OTHER PARTY BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTICAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THIS PUBLICATION OR THE PUBLISHED CODE EXAMPLES OR THE RELATED PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR FAILURE OF THE PROGRAMS/PROGRAM EXAMPLES TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. If you have any questions or comments regarding this software or documentation, please contact: Mechaless Systems GmbH TRIWO Technopark Bruchsal Werner-von-Siemens-Str. 2-6 Building 5108 76646 Bruchsal www.mechaless.com info@mechaless.com Tel.: +49 (0)7251 / 50513-0 Fax: +49 (0)7251 / 50513-11 getting started with e90906.docx Version 1.00 2/18
Content 1 Overview of demonstrators... 4 1.1 Evaluation board... 4 1.2 Gesture reference Board... 5 1.3 Two-inch-slider... 6 2 Evaluate the sensor... 7 2.1 HACo tool... 7 2.2 Gesture Debugger Tool... 8 2.3 Establish USB communication to the sensor... 8 3 Software and application notes... 10 3.1 Overview of the application notes... 10 3.2 HALIOS library and source projects... 12 3.3 Elmos default software for E909.06... 13 4 Develop a customized sensor application... 14 4.1 Develop customized software for E909.06 CPU... 14 4.2 Using your own MCU and interface to E909.06... 14 4.3 Create a Windows based application... 14 5 Update or flash software in E909.06... 15 5.1 MAZ JTAG INTERFACE... 15 5.2 Using the Mechaless Com-Board... 16 6 Order E909.06 for mass production... 17 7 Related documents... 18 getting started with e90906.docx Version 1.00 3/18
1 Overview of demonstrators Mechaless provides the following HALIOS demonstrator. All boards are complete optical HALIOS sensors which include PCB, optical elements and the software implementation. The software of each board provides a working example which is adapted to the sensor specific hardware. The following sensor types are in stock and can be ordered at Mechaless. E909.06 Evaluation Board Gesture reference board Two-inch slider 1.1 Evaluation board With the evaluation board (Figure 1) it is designed to demonstrate the functions of E909.06 devices including SPI communication with MAX3420. It provides connectors and pin headers for GPIO access, as also the receiver and sender connectors for arbitrary sensor heads. With that it is comfortable to evaluate various kinds of optical sensor heads. Figure 1: The Mechaless baseboard with E909.06 The baseboard provides the following pin headers - Power supply for 5V, 2.5V and Gnd with 3 pins each. 3.3V with one pin connector - External power supply connector for 12V power supply - USB plug for USB communication and 5V power supply via USB - Receiver path - Sender path - 14 pin service interface, for JTAG, GPIO port, SPI and I 2 C Options for GPIO configuration GPIO4 7 are JTAG pins for flash and debug interface Configure GPIO4 7 either as GPIO or SPI SPI interface is configurable as SPI master or SPI slave I 2 C interface is I 2 C slave only - Separate 8 pin GPIO port with LED signalization - 10 pol connector for the 4 inputs and the 4 outputs of the MAX3420 device which does USB communication getting started with e90906.docx Version 1.00 4/18
1.1.1 Baseboard with one gesture head The baseboard usually is delivered with one or two gesture heads. The connectors of the gesture head fits to the sender and receiver connectors on the baseboard. Each sensor heads provides to sending LEDs, one photo diode and the pre amplifier E909.07. Figure 2 shows the gesture head. Figure 2: The Gesture Head In case of using two gesture heads on the baseboard you need two adapter PCBs to connect both heads to the baseboard. Figure 3 shows the baseboard with sender and receiver adapter for two gesture heads. Figure 3: The base board with adapter for two sensor heads NOTE: THAT ADAPTER BOARDS DON T USE DIFFERENTIAL RECEIVING SIGNLAS. THE CURRENT SETUP IS JUST FOR DEMONSTRATION. PLEASE DON T COPY THAT OPTION. REFER TO APPLICATION EXAMPLES HOW TO MULTPLEX HEADS IF YOU NEED MORE THAN ONE SENSOR HEAD. 1.2 Gesture reference Board The Gesture reference board (Figure 4) is a standalone HALIOS demonstrator with E909.06. It provides a complete optical IR based gesture solution without any mechanical or optical parts. For gesture detection three IR sending LEDs are used. The gestures are signalized with five indication LEDs The software provides the following default Mechaless default gestures: Awareness Continuous proximity Swipe gesture detection in x/y direction Time select Double Tap gesture getting started with e90906.docx Version 1.00 5/18
Figure 4: The Gesture Reference Board The benefits of this board are: Easy evaluation of the existing functions PCB is ready to integrate in an existing solution Connect the PCB to your own application via I 2 C and an optional interrupt pin Capability for fast integration of the gestures in a Windows application by using the Gesture Debugger template with.net and C#, connection to Mechaless Com-Board required Soldering pads for fast access to power supply, I 2 C and the interrupt pin USB connector for 5V standalone power supply 1.3 Two-inch-slider The Two-inch Slider (Figure 5) is a standalone HALIOS demonstrator with E909.06. It provides a complete optical IR based gesture solution without any mechanical or optical parts. For gesture detection two IR sending LEDs are used. The gestures are signalized with two indication LEDs The software provides the following default Mechaless default gestures: Awareness Continuous proximity Swipe gesture detection in x direction Time select Double Tap gesture X-slider, Continuous relative position output in x direction Figure 5: The Two-inch Slider The benefits of this board are: Easy evaluation of the existing functions PCB is ready to integrate in an existing solution Connect the PCB to your own application via I 2 C and an optional interrupt pin USB connector for power supply including HACo and Gesture Debugger support. Capability for fast integration of the gestures in a Windows application by using the Gesture Debugger template with.net and C# Option to cut the signalization LEDs and the USB part to reduce PCB size getting started with e90906.docx Version 1.00 6/18
2 Evaluate the sensor The most powerful way to evaluate the sensor including the implemented software is to establish a USB communication between a Windows PC and the sensor. For sensor evaluation you can use the HACo tool and especially for analysis of the implemented default gestures you can use the Gesture Debugger template. Additionally you can develop your own PC based gesture application by using the Gesture Debugger Template. 2.1 HACo tool The HALIOS configuration (HACo) tool is powerful PC tool which provides access to the firmware in E909.06. It provides a graphical view of sensor signals and the sensor configuration. With the HACo tool it is easy to evaluate software, sensor configuration and the optical setup of sensor heads. Figure 6 and Figure 7 illustrate the HACo main window and the essential graphical views for the sensor. Figure 6: HACo tool main window Figure 7: Left: the Loop values view vs. time window; right the configuration dialog getting started with e90906.docx Version 1.00 7/18
For a summary of the most relevant SFR and USER space memory address in firmware please refer to document application_spec_address.pdf. 2.2 Gesture Debugger Tool The Gesture Debugger is a PC application which mirrors the gesture detection in E909.06. The Gesture Debugger is able to enable and disable available gestures in the device. Each gesture value or event is generated in the Embedded device. Figure 8: Gesture Debugger 2.3 Establish USB communication to the sensor To establish USB communication between the sensor and a Windows PC there are basically two options available: 1. Using the Mechaless USB library inside E909.06 and the MAX3420 device 2. Using the Mechaless Com-Board 2.3.1 On-board USB with MAX3420 This option realizes a SPI-USB bridge by using the MEX3420 device. Therefore Mechaless provides a software library for E909.06 which handles the USB communication. The software sets up the E909.06 as SPI master and communicates with SPI slave MAX3420. The indication for communication request by the USB host is signalized via a SPI interrupt pin. This pin is routed to the GPIO_1 of E909.06. Please keep in mind that whenever this solution is used SPI slave in E909.06 isn t available. PC <== USB ==> MAX3420 <== SPI ==> E909.06 Figure 9 illustrates the distribution diagram for USB connection with MAX3420. getting started with e90906.docx Version 1.00 8/18
Optical parts E909.06 SPI INT MAX3420 USB Windows XP/7 32/64 bit hardware HID Firmware E909.06 User application HACo Gesture debugger Gesture debugger C# template software USB library gesture library sensor configuration and signal evaluation Gesture evaluation User application Figure 9: Distribution diagram for software using MAX3420 as SPI-USB bridge 2.3.2 Using the Mechaless Com-Board The Mechaless Com-Board itself provides USB communication for HACo and Gesture Debugger support. The Com-Board contains an MCU which translates the Mechaless USB HID protocol to E909.06 firmware protocol. It supports access to E909.06 via SPI or I 2 C while the E909.06 is configured as I 2 C slave or SPI slave. a) PC <== USB ==> Com-Board MCU <== I 2 C ==> E909.06 b) PC <== USB ==> Com-Board MCU <== SPI ==> E909.06 Figure 10 shows the distribution diagram for USB connection with the Mechaless Com-Board (Figure 11). Optical parts E909.06 I2C SPI Com-Board USB Windows XP/7 32/64 bit hardware HID Firmware E909.06 User application HACo Gesture debugger Gesture debugger C# template software USB library gesture library sensor configuration and signal evaluation Gesture evaluation User application Figure 10: Distribution diagram for software using the Com-Board Figure 11: The Mechaless Com-Board getting started with e90906.docx Version 1.00 9/18
3 Software and application notes 3.1 Overview of the application notes The application notes are preconfigured projects with software code examples. These examples can be loaded and compiled with IAR Embedded Workbench for TI MSP430 and the UEStudio06 with the GNU GCC compiler. You can download the application notes from the Mechaless web site: http://www.mechaless.com/download.html All examples include device timing by using the analog wake up timer watchdog firmware API calls All of the projects support I 2 C slave device by default. If USB library is used the default GPIO configuration is SPI master and GPIO_1 is used for SPI_INT pin from MAX3420. If you aren t going to use direct USB interface with E909.06 you can disable the USB option in the main.h file with a compiler switch. Table 1 lists the existing application notes with a short description for each project. Software example project a1_firmware Used libraries: lib_firmware Description Compact and small project. No USER space support. An example how to use the TIMER1 module is included. recommended if no HALIOS gestures and no calibration routines are needed b1_haliostools Used libraries: lib_firmware lib_haliostools lib_usb Project which handles the sensor signals and provides USB communication for HACo tool. Support for filter, calibration and the level switch module. recommended as startup project in case no gesture detection is needed d1_usb_mousedemo Used libraries: lib_firmware lib_haliostools Project which handles the sensor signals and installs the E909.06 with MAX3420 as USB HID mouse. The software is based on the baseboard with two gesture heads and transfers the sensor signals into a mouse movement. getting started with e90906.docx Version 1.00 10/18
lib_usb For multiplexing of the two sensor heads the io_control module is used. d3_spi_master Used libraries: lib_firmware lib_haliostools lib_spi_master e2_eval_board Used libraries: lib_firmware lib_haliostools lib_usb lib_haliosgestures recommended as startup project in case the io_control module or all available HALIOS default gestures are needed g1_gesture_head used libraries: lib_firmware lib_haliostools lib_usb lib_haliosgestures recommended as startup project in case some HALIOS default gestures are needed Simple project which provides SPI master function to E909.06. The project shows how to communicate with another E909.06 SPI slave. Complex project including the HALIOS gesture application. The software handles the sensor signals, provides USB communication for HACo tool and includes support for all Mechaless default gestures. The software is based on the baseboard with one or two gesture heads. For multiplexing of the two sensor heads the io_control module is used. The HALIOS gesture application provides a full interface for the Gesture Debugger on PC. The complexity of software is increased because of the gesture detection which depends on the number of loops and the 1D/2D gesture detection. Additionally this project supports an USB keystroke demo mode. You can install the E909.06 as USB keyboard which throws individual keystrokes on each gesture event. It is the light version of e2_eval_board. The software handles the sensor signals, provides USB communication for HACo tool and includes support for 1D Mechaless default gestures. The software is based on the baseboard with one gesture head. The HALIOS gesture application provides a full interface for the Gesture Debugger on PC. Additionally this project supports an USB keystroke demo mode. You can install the E909.06 as USB keyboard which throws individual keystrokes on each gesture event. g2_gesture_reference_board Used libraries: lib_firmware lib_haliostools lib_usb lib_haliosgestures Software example for the gesture reference board. The software handles the sensor signals, provides USB communication for HACo tool and includes support for 2D Mechaless default gestures. The HALIOS gesture application provides a full interface for the Gesture Debugger on PC. Additionally this project supports an USB keystroke demo mode. You can install the E909.06 as USB keyboard which throws individual keystrokes on each gesture event. Therefor additional getting started with e90906.docx Version 1.00 11/18
recommended as startup project if the gesture reference board with latch output for signal LEDs is used hardware with MAX3420 is needed. Table 1: The software application notes for E909.06 3.2 HALIOS library and source projects Note: The software from Mechaless Systems GmbH is well working software which is running in several applications since more than five years. Mechaless doesn t provide any certified software. So whenever the application notes are used for a product the target product manufacturer is responsible for the software inside E909.06. 3.2.1 Libraries The software form Mechaless usually includes pre compiled binary files (software libraries) for several software modules instead of complete source files. The intention of providing software libraries is to reduce the project complexity and to prevent for modifying of well working and proven firmware functions without notice from Mechaless. Table 2 lists the libraries which are used in the software application notes. lib_firmware API function to access SFR and USER space flash and restore parameters, store or restore the USER space and the parameters to and from flash provide API functions for the HALIOS measurement lib_spi_master provide SPI master function in E909.06, usually not used lib_haliostools filter API function for calibration, startup and calibration during runtime Provide auto calibration module which runs in background Level switch module lib_usb USB communication for HACo and Gesture Debugger Option to install the E909.06 as USB HID keyboard to throw keystrokes Option to install the E909.06 as USB HID mouse to control the mouse movement lib_haliosgestures API functions for gesture detection algorithms Table 2: The software libraries for E909.06 getting started with e90906.docx Version 1.00 12/18
3.2.2 Working with library source files For first time of evaluation you don t need the sources of the libraries. Going to mass production includes the certification of software in E909.06 including the software library files. To get the source files for the library you have to contact the Mechaless Systems GmbH. If requested Mechaless provides the source project for the firmware and the HaliosTools library files. USB is closed source as it isn t needed for mass production. If you need the source files for the gesture library you have to carry on negotiations with Mechaless about the source code or license for gesture software. 3.3 Elmos default software for E909.06 Since April 2015 Elmos provides universal software in E909.06 as default software which adapts to the needs of most customers for evaluation. The software contains a lot of available features and is scalable for GPIO behavior. The default software provides the following functions: Basic firmware for E909.06 I 2 C and SPI slave HALIOS tools, including software filter, auto calibration and the level switch module HALIOS default gestures based on the configuration for the e2_eval_board example configurable GPIO behavior Default configuration is I 2 C master and I 2 C slave. GPIOs are not controlled by default. Please refer to the description for the io_control module for information about to setup the GPIO behavior. Just note that you have to disable the SPI slave interface if you are going to use GPIO_4 to GPIO_7 for any function. There is no support for SPI-USB Bridge with MAX3420 in default software. For USB communication to HACo tool you can use the Mechaless Com-Board. getting started with e90906.docx Version 1.00 13/18
4 Develop a customized sensor application There are several ways to create your own customized sensor solution with E909.06. 4.1 Develop customized software for E909.06 CPU The E909.06 has an integrated CPU with 60 kb flash and 3 kb RAM. The CPU is uses the TI MSP 430 compiler and is fully code compatible to the MSP430 CPU. We recommend using IAR Embedded Workbench for TI MSP 430 as IDE for software development. Additionally we support the UEStudio06 with GCC compiler which is much cheaper during evaluation process. Just keep in mind that the in-circuit debug option is only available with IAR. For getting started you are free to use a software application note. The application notes provide preconfigured project files with code examples. 4.2 Using your own MCU and interface to E909.06 Sometimes it is indispensable or more easy and faster to write the application on another MCU and not in E909.06. In that case you can interface to E909.06 via I 2 C or SPI the usage of an interrupt pin is optional. Both ways of connection between any MCU and the E909.06 is illustrated in Figure 12. I 2 C MCU E909.06 INT optional SPI MCU E909.06 INT optional Figure 12: Interface options for E909.06 4.3 Create a Windows based application Another option to show the features of a HALIOS sensor application in a GUI on a Windows PC is to use the Gesture Debugger Template. The template is a preconfigured C# application based on the Microsoft.NET framework. The template includes DLLs which provide access to the E909.06 firmware via USB. You just need a Windows PC with the Microsoft Visual Studio and a USB connection to E909.06. Once you load the project you have entry points in the source code for each gesture event. Additionally you get an entry point where you get the sensor raw data via USB. The source code is free to customized modifications. getting started with e90906.docx Version 1.00 14/18
5 Update or flash software in E909.06 5.1 MAZ JTAG INTERFACE The E909.06 doesn t support a Bootloader. For software update we recommend the JTAG interface in E909.06 by using the MAZ JTAG INTERFACE via USB connection on PC. This tool is needed whenever you are developing software and use the in-circuit debug option with IAR. Figure 13: The MAZ JTAG USB INTERFACE Figure 14: The adapter for the MAZ JTAG USB INTERFACE It is possible to flash the software without an IDE just by using the command line tool el16_jtag.exe (Figure 15). Figure 15: Output of el16_jtag.exe command line tool Please refer to document iar_sw_supply.pdf for further information. You ll find the tools on the Mechaless web site: http://www.mechaless.com/download.html The MAZ JTAG INTERFACE has 20 pin to 14 pin connector which fits on the baseboard or on the Mechaless Com-Board. The Com-Board routes the JTAG signals via the red Micro Match connector and the 6 pin or 10 pin flex cable to E909.06. To order the MAZ JTAG INTERFACE you have to contact Elmos sales department. getting started with e90906.docx Version 1.00 15/18
5.2 Using the Mechaless Com-Board With the Com-Board it is possible to do a software update for E909.06 without using the MAZ JTAG INTERFACE. Therefore you need to connect the second USB plug on the Com-Board an install the driver for the VCOM interface: CP210x USB to UART Bridge VCP Drivers You can download the driver directly from the manufacturer: https://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx Once the driver is installed you start the MLS E909.06 flash tool. With that file you can choose an intel hex file and download it to E909.06. The Atmel MCU on the Com-Board emulates the JTAG interface for E909.06. Figure 16: The MLS flash tool getting started with e90906.docx Version 1.00 16/18
6 Order E909.06 for mass production If you are going to mass production you need software inside E909.06. In general you have three options to order E909.06: 1) order E909.06 with Elmos standard software a) request for the sources and certify the software by your own b) over write the software in E909.06 by using your own flash runner or something similar 2) order E909.06 with empty flash content over write the software in E909.06 by using your own flash runner or something similar 3) order E909.06 with customized hex file send your customized hex file to Elmos, their quality terms ensure the you get E909.06 devices with your customized hex file inside getting started with e90906.docx Version 1.00 17/18
7 Related documents Table 3 shows a summary of the most important available documents. Most of these documents are already above-mentioned. Document firmware_spec.pdf haliostools.pdf application_spec_address.pdf userguide_halios_default_gestures.pdf address_definition_io_control.pdf iar_sw_supply.pdf 25an0115e.00_909.06-flashing-via-jtag.pdf elmos_e90906_datasheet.pdf Table 3: Related documents Description E909.06 firmware specification file. Description of SFR I2C firmware protocol SPI firmware protocol Description of the HALIOS tools library and its functions Software filter Auto calibration Level switch module Summary of most relevant and important SFR and USER space addresses for sensor evaluation Summary of registers for the gesture detection Register definition and description for the io_control module Instruction guide to IAR Embedded Workbench for TI MSP430 with plug in for E909.06 Definition of flashing E909.06 via JTAG Datasheet for E909.06 device getting started with e90906.docx Version 1.00 18/18