Getting started with X-CUBE-LED channel LED driver software expansion based on LED1642GW for STM32Cube

Similar documents
Getting started with the X-CUBE-NFC5 high performance HF reader / NFC initiator IC software expansion for STM32Cube

Getting started with the X-CUBE-IKA02A1 multifunctional software expansion for STM32Cube

UM2045 User manual. Getting started with the X-CUBE-NFC3 near field communication transceiver software expansion for STM32Cube.

Getting started with the X-CUBE-53L1A1 Time-of-Flight long distance ranging sensor software expansion for STM32Cube

Getting started with the STSW-BCNKT01 software package for STEVAL-BCNKT01V1 based on STM32Cube

Getting started with the X-CUBE-MEMS1 motion MEMS and environmental sensor software expansion for STM32Cube

AN4624 Application note

Getting started with the software package for STEVAL-STLKT01V1 based on STM32Cube

Getting started with the X-CUBE-SPN3 high power stepper motor driver software expansion for STM32Cube

Getting started with the FP-IND-PLCWIFI1 function pack for PLC management via Wi-Fi

Getting started with the FP-NET-6LPBLE1 function pack for 6LoWPAN IoT node connection to a smartphone via BLE interface

Getting started with the X-CUBE-SPN2 two-axis stepper motor driver software expansion for STM32Cube

UM1853 User manual. STM32CubeF1 Nucleo demonstration firmware. Introduction

Getting started with the software package for L6474 stepper motor driver X-CUBE-SPN1 expansion for STM32Cube

Getting started with the FP-SNS-ALLMEMS1 Bluetooth low energy and sensors software expansion for STM32Cube

Bluetooth low energy profiles for the X-CUBE-BLE1 expansion for STM32Cube. Description

Getting started with the software package for digital MEMS microphones in X-CUBE-MEMSMIC1 expansion for STM32Cube

NUCLEO-L433RC-P NUCLEO-L452RE-P

NUCLEO-L496ZG. STM32 Nucleo-144 board. Features. Description

P-NUCLEO-USB001. STM32 Nucleo pack for USB Type-C and Power Delivery. Features. Description

STSW-BLUENRG1-DK. BlueNRG-1, BlueNRG-2 DK SW package

32F412GDISCOVERY. Discovery kit with STM32F412ZG MCU. Features. Description

UM2204. Getting started with STM32CubeH7 for STM32H7 Series. User manual. Introduction

Getting started with osxmotiongc gyroscope calibration library for X-CUBE-MEMS1 expansion for STM32Cube

Getting started with the STM32 Nucleo pack for USB Type-C and Power Delivery with the Nucleo-F072RB board and the STUSB1602

UM2232. Getting started with the IO-Link demonstration kit firmware. User manual. Introduction

P-NUCLEO-USB001. STM32 Nucleo pack for USB Type-C and Power Delivery Data brief. Features. Description

Getting started with FP-SNS-6LPNODE1 software for IoT sensor node connection to 6LoWPAN networks using sub-1ghz RF

USB Type-C and Power Delivery Nucleo pack with NUCLEO-F072RB expansion board based on STUSB1602. Description

Getting started with osxmotionmc magnetometer calibration library for X-CUBE-MEMS1 expansion for STM32Cube

Quick Start Guide. Stepper motor driver expansion board based on L6474 for STM32 Nucleo (X-NUCLEO-IHM01A1) Version 1.2.

Quick Start Guide. High power stepper motor driver expansion board based on powerstep01 for STM32 Nucleo (X-NUCLEO-IHM03A1)

32F469IDISCOVERY. Discovery kit with STM32F469NI MCU. Features. Description

Getting started with the digital MEMS microphone expansion board based on MP34DT01-M for STM32 Nucleo

STM32H7x3I-EVAL. Evaluation board with STM32H7x3XI MCUs. Data brief. Features

32F746GDISCOVERY. Discovery kit with STM32F746NG MCU. Features. Description

Getting started with MotionPM real-time pedometer library in X CUBE-MEMS1 expansion for STM32Cube

Getting started with X-NUCLEO-LED16A1 16-channel LED driver expansion board for STM32 Nucleo

USB Type-C and Power Delivery Nucleo pack with NUCLEO-F072RB expansion board based on the STUSB1602

Getting started with MotionPM real-time pedometer library in X-CUBE-MEMS1 expansion for STM32Cube

Quick Start Guide. Sound terminal expansion board based on STA350BW for STM32 NUCLEO (X-NUCLEO-CCA01M1) Version 1.1.

UM2350. Getting started with MotionPW real-time pedometer for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

EVALKITSTKNX. Miniature transceiver STKNX evaluation and development kit. Features

Quick Start Guide. Bipolar stepper motor driver expansion board based on L6208 for STM32 Nucleo (X-NUCLEO-IHM05A1) Version 1.1.

Getting started with osxacousticsl real-time sound source localization software expansion for STM32Cube

UM1727 User manual. Getting started with STM32 Nucleo board software development tools. Introduction

STM32L4R9I-EVAL. Evaluation board with STM32L4R9AI MCU. Features

UM2495. High performance HF reader / NFC initiator IC software expansion for NUCLEO-8S208RB. User manual. Introduction

32L476GDISCOVERY. Discovery kit with STM32L476VG MCU. Features. Description

UM2276. Getting started with MotionSD standing vs sitting desk detection library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

Getting started with VL53L0X ranging and gesture detection sensor software expansion for STM32Cube

UM1754 User manual. Getting started with STM32CubeL0 firmware package for STM32L0 series. Introduction

Version (Apr 28, 2016)

Getting started with X-NUCLEO-IHM06A1 low voltage stepper motor driver expansion board based on STSPIN220 for STM32 Nucleo

UM2194. Getting started with MotionAW activity recognition for wrist library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

UM2216 User manual. Getting started with MotionFA fitness activity library in X CUBE MEMS1 expansion for STM32Cube. Introduction

Getting started with STEVAL-IDB007V1 and STEVAL-IDB008V1 evaluation boards

Getting started with MotionMC magnetometer calibration library in X-CUBE-MEMS1 expansion for STM32Cube

Quick Start Guide. Stepper motor driver expansion board based on L6474 for STM32 Nucleo (X-NUCLEO-IHM01A1) Version 1.

X-NUCLEO-53L1A1. Long distance ranging Time-of-Flight sensor expansion board based on VL53L1X for STM32 Nucleo. Description.

Quick Start Guide. Long distance ranging ToF sensor expansion board based on VL53L1X for STM32 Nucleo (X-NUCLEO-53L1A1) Version (February 20, 2018)

How to upgrade the firmware on the STEVAL-USBC2DP USB Type-C to DisplayPort adapter

Quick Start Guide. Dynamic NFC/RFID tag IC expansion board based on ST25DV04K for STM32 Nucleo (X-NUCLEO-NFC04A1) Version 1.

P-NUCLEO-53L1A1. VL53L1X nucleo pack with X-NUCLEO-53L1A1 expansion board and STM32F401RE nucleo board. Description. Features

TN1235 Technical note

UM2051 User manual. Getting started with the STM32 Nucleo pack for USB Type-C and Power Delivery. Introduction

Quick Start Guide. Dual-channel high side driver expansion board based on VPS2535H for STM32 Nucleo (X-NUCLEO-IPS02A1) Version 1.0 (Sept.

X-NUCLEO-53L0A1. Ranging and gesture detection sensor expansion board based on VL53L0X for STM32 Nucleo. Description. Features

P-NUCLEO-53L0A1. VL53L0X Nucleo pack with ranging, gesture detection sensor expansion board and STM32F401RE. Description. Features

Quick Start Guide. Bluetooth Low Energy expansion board based on SPBTLE-RF module for STM32 Nucleo (X-NUCLEO-IDB05A1) Version 1.

P-NUCLEO-IKA02A1. STM32 Nucleo pack: electrochemical toxic gas sensor expansion board with CO sensor. Description. Features

UM2192. Getting started with MotionMC magnetometer calibration library in X-CUBE-MEMS1 expansion for STM32Cube. User manual.

Getting started with MotionAR activity recognition library in X-CUBE-MEMS1 expansion for STM32Cube

Getting started with MotionAR activity recognition library in X-CUBE-MEMS1 expansion for STM32Cube

Quick Start Guide. Bluetooth Low Energy expansion board based on BlueNRG for STM32 Nucleo (X-NUCLEO-IDB04A1) Version 1.

Quick Start Guide. GNSS expansion board based on Teseo-LIV3F module for STM32 Nucleo (X-NUCLEO-GNSS1A1) Version 2.1 (Nov 9, 2018)

STSW-BNRG-Mesh. Mesh over Bluetooth low energy. Features. Description. Applications

UM1862 User manual. Getting started with STM32F411E Discovery software Development Tools. Introduction

Running a simple 6LowPAN network consisting of one receiver node and one or more sensor nodes in a Sub-1GHz RF band

Getting started with osxmotionar activity recognition library for X-CUBE-MEMS1 expansion for STM32Cube

Quick Start Guide. STM32 ODE Function Pack for Building a PLC controlled via Wi-Fi (FP-IND-PLCWIFI1) Version 1.1 (Oct 16, 2017)

AN4782 Application note

STM32SnippetsL0. STM32L0xx Snippets firmware package. Features. Description

IoT node with BLE connectivity, digital microphone, environmental and motion sensors, motion and audio middleware libraries.

STSW-STWBCFWDT. STWBC firmware downloader tool. Description. Features

P-NUCLEO-6180X2. Proximity, gesture, ambient light sensor expansion board based on VL6180X for STM32L053R8. Description. Features

Getting started with the X-NUCLEO-IHM14A1 stepper motor driver expansion board based on STSPIN820 for STM32 Nucleo

Getting started with the FP-CLD-AWS1 software package for IoT node with Wi-Fi and sensors, connected to Amazon AWS IoT cloud

UM2375 User manual. Linux driver for the ST25R3911B/ST25R391x high performance NFC frontends. Introduction

UM1677 User manual. Getting started with STM32F030 Value Line Discovery development tools. Introduction

Quick Start Guide (V1.0 May2015) Dynamic NFC tag expansion board based on M24SR for STM32 NUCLEO (X-NUCLEO-NFC01A1)

DT0095 Design tip. Datalogging the SensorTile through a PC. Purpose and benefits. Description

Getting started with the P-NUCLEO-IKA02A1 STM32 Nucleo pack for electrochemical toxic gas sensor expansion board with CO sensor

Getting started with the high power stepper motor driver expansion board based on powerstep01 for STM32 Nucleo

UM1754. Getting started with STM32CubeL0 for STM32L0 Series. User manual. Introduction

AN4515 Application note

STSW-BNRGUI. BlueNRG GUI SW package. Data brief. Features. Description

UM2084 User manual. Getting started with the ultra-low-power STM32 and LoRa Nucleo pack. Introduction

Quick Start Guide. NFC card reader expansion board based on ST25R3911B for STM32 Nucleo (X-NUCLEO-NFC05A1) Version (July 14 th, 2017)

EVALKIT-VL6180X. VL6180X plug-in and STM32 F401RE Nucleo board explorer kit. Description. Features

Transcription:

User manual Getting started with X-CUBE-LED1642 16 channel LED driver software expansion based on LED1642GW for STM32Cube Introduction The X-CUBE-LED16A1 expansion software package for STM32Cube runs on the STM32 microcontroller with drivers and sample applications for the LED1642GW LED driver. An SPI interface facilitates communication between the STM32 Nucleo board and the X-NUCLEO- LED16A1 expansion board. It is built on top of STM32Cube software technology that ease portability across different STM32 microcontrollers. The software includes sample driver implementations for the X-NUCLEO-LED16A1 expansion board on a NUCLEO-F401RE or NUCLEO-L053R8 development board. November 2016 DocID030078 Rev 1 1/14 www.st.com

Contents UM2147 Contents 1 What is STM32Cube?... 4 1.1 What is STM32Cube?... 4 1.2 STM32Cube architecture... 4 2 X-CUBE-LED1642 software expansion for STM32Cube... 6 2.1 Overview... 6 2.2 Architecture... 6 2.3 Folders structure... 7 2.4 APIs... 8 2.5 Sample application description... 8 2.6 Preconfigured demos... 8 3 System setup guide... 9 3.1 Hardware description... 9 3.1.1 STM32 Nucleo platform... 9 3.1.2 X-NUCLEO-LED16A1 expansion board... 10 3.2 Software description... 10 3.3 Hardware and software setup... 11 3.3.1 Hardware setup... 11 3.3.2 Software setup... 11 3.4 System setup guide... 11 3.4.1 STM32 Nucleo and LED driver expansion boards setup... 11 4 Revision history... 13 2/14 DocID030078 Rev 1

List of figures List of figures Figure 1: Firmware architecture... 4 Figure 2: X-CUBE-LED1642 software architecture... 7 Figure 3: X-CUBE-LED1642 package folders structure... 7 Figure 4: STM32 Nucleo board... 9 Figure 5: X-NUCLEO-LED16A1 expansion board... 10 Figure 6: STM32 Nucleo development board plus X-NUCLEO-LED16A1 expansion board... 12 DocID030078 Rev 1 3/14

What is STM32Cube? UM2147 1 What is STM32Cube? 1.1 What is STM32Cube? STMCube represents the STMicroelectronics initiative to make developers lives easier by reducing development effort, time and cost. STM32Cube covers the STM32 portfolio. STM32Cube version 1.x includes: STM32CubeMX, a graphical software configuration tool that allows the generation of C initialization code using graphical wizards. A comprehensive embedded software platform specific to each series (such as the STM32Cube for the STM32 series), which includes: the STM32Cube HAL embedded abstraction-layer software, ensuring maximized portability across the STM32 portfolio a consistent set of middleware components such as RTOS, USB, TCP/IP and graphics all embedded software utilities with a full set of examples 1.2 STM32Cube architecture The STM32Cube firmware solution is built around three independent levels that can easily interact with one another, as described in the diagram below. Figure 1: Firmware architecture Level 0: This level is divided into three sub-layers: Board Support Package (BSP): this layer offers a set of APIs relative to the hardware components in the hardware boards (Audio codec, IO expander, Touchscreen, SRAM 4/14 DocID030078 Rev 1

What is STM32Cube? driver, LCD drivers. etc ); it is based on modular architecture allowing it to be easily ported on any hardware by just implementing the low level routines. It is composed of two parts: Component: is the driver relative to the external device on the board and not related to the STM32, the component driver provides specific APIs to the external components of the BSP driver, and can be ported on any other board. BSP driver: links the component driver to a specific board and provides a set of easy to use APIs. The API naming convention is BSP_FUNCT_Action(): e.g., BSP_LED_Init(), BSP_LED_On(). Hardware Abstraction Layer (HAL): this layer provides the low level drivers and the hardware interfacing methods to interact with the upper layers (application, libraries and stacks). It provides generic, multi-instance and function-oriented APIs to help offload user application development time by providing ready to use processes. For example, for the communication peripherals (I²C, UART, etc.) it provides APIs for peripheral initialization and configuration, data transfer management based on polling, interrupt or DMA processes, and communication error management. The HAL Drivers APIs are split in two categories: generic APIs providing common, generic functions to all the STM32 series and extension APIs which provide special, customized functions for a specific family or a specific part number. Basic peripheral usage examples: this layer houses the examples built around the STM32 peripherals using the HAL and BSP resources only. Level 1: This level is divided into two sub-layers: Middleware components: set of libraries covering USB Host and Device Libraries, STemWin, FreeRTOS, FatFS, LwIP, and PolarSSL. Horizontal interaction among the components in this layer is performed directly by calling the feature APIs, while vertical interaction with low-level drivers is managed by specific callbacks and static macros implemented in the library system call interface. For example, FatFs implements the disk I/O driver to access a microsd drive or USB Mass Storage Class. Examples based on the middleware components: each middleware component comes with one or more examples (or applications) showing how to use it. Integration examples that use several middleware components are provided as well. Level 2: This level is a single layer with a global, real-time and graphical demonstration based on the middleware service layer, the low level abstraction layer and basic peripheral usage applications for board-based functions. DocID030078 Rev 1 5/14

X-CUBE-LED1642 software expansion for STM32Cube UM2147 2 X-CUBE-LED1642 software expansion for STM32Cube 2.1 Overview The X-CUBE-LED1642 software package expands the functionality provided by STM32Cube. The key features of the package are: 2.2 Architecture Complete middleware package to build applications using the LED1642GW LED driver on the X-NUCLEO-LED16A1 expansion board for STM32 Nucleo SPI interface between STM32 Nucleo and X-NUCLEO-LED16A1 expansion board Multiple stacking of X-NUCLEO-LED16A1 expansion boards allowed Easy portability across different MCU families, thanks to STM32Cube Free user-friendly license terms Sample implementations for X-NUCLEO-LED16A1 expansion board(s) plugged on a NUCLEO-F401RE or NUCLEO-L053R8 development board This software is a fully compliant STM32Cube expansion for application development involving DC-DC LED driver devices. The software is based on the STM32Cube HAL (hardware abstraction layer) for the STM32 microcontroller and extends STM32Cube by providing a board support package (BSP) for the X-NUCLEO-LED16A1 expansion board and a sample application for serial communication with a PC. The software layers used by the application software to access and use the X-NUCLEO- LED16A1 expansion board are: STM32Cube HAL layer: consists of simple, generic and multi-instance APIs (application programming interfaces) which interact with the upper layer applications, libraries and stacks. These generic and extension APIs are based on a common framework so that overlying layers like middleware can function without requiring specific microcontroller unit (MCU) hardware information. This structure improves library code reusability and guarantees easy portability across other devices. Board support package (BSP) layer: provides software support for the STM32 Nucleo board peripherals, excluding the MCU. These specific APIs provide a programming interface for certain board specific peripherals like LEDs, user buttons, etc., and can also be used to fetch individual board version information. It also provides support for initializing, configuring and reading data. 6/14 DocID030078 Rev 1

Figure 2: X-CUBE-LED1642 software architecture X-CUBE-LED1642 software expansion for STM32Cube 2.3 Folders structure Figure 3: X-CUBE-LED1642 package folders structure The following folders are included in the software package: The Documentation folder contains a compiled HTML file generated from the source code and detailed documentation regarding the software components and APIs. The Drivers folder contains the HAL drivers, the board-specific drivers for each supported board or hardware platform, including those for the on-board components, and the CMSIS vendor-independent hardware abstraction layer for the Cortex-M processor series. The Projects folder contains a sample application for the NUCLEO-L053R8 and NUCLEO- F401RE platforms; it is provided with three development environments (IAR Embedded Workbench for ARM, RealView MDK-ARM Microcontroller Development Kit and System Workbench for STM32). DocID030078 Rev 1 7/14

X-CUBE-LED1642 software expansion for STM32Cube 2.4 APIs UM2147 A compiled HTML file located in the package Documentation folder provides full user-api function and parameter descriptions. 2.5 Sample application description A sample application using the X-NUCLEO-LED16A1 expansion board with either NUCLEO-F401RE or NUCLEO-L053R8 boards is provided in the Projects directory, ready for multiple IDEs. This application operates the LED driver expansion board, implementing a state machine to demonstrate various demos including PWM dimming, error detection and different LED patterns. 2.6 Preconfigured demos Once the proper firmware is installed on the STM32 Nucleo board and the jumpers and connectors are configured correctly, supplying power causes the green OK LED (D2) on the X-NUCLEO-LED16A1 expansion board and predefined LED patterns run every eight seconds: 1. All LEDs ON at full brightness 2. LED train forward single LED 3. LED train reverse 4. LED brightness maximum at center LED 5. Error detection red FAULT LED (D1) lights up 6. LED brightness low to high 7. Different LED solid color 8. Random LED random brightness 9. All LEDs ON with less brightness You can also cycle through the LED sequences by pressing the blue B1 USER button on the STM32 Nucleo board. Incorrect jumper configurations causes the red LED (FAULT) to light up. 8/14 DocID030078 Rev 1

System setup guide 3 System setup guide 3.1 Hardware description This section describes the hardware components needed for developing a LED driver application based on LED1642GW. 3.1.1 STM32 Nucleo platform STM32 Nucleo development boards provide an affordable and flexible way for users to test solutions and build prototypes with any STM32 microcontroller line. The Arduino connectivity support and ST morpho headers make it easy to expand the functionality of the STM32 Nucleo open development platform with a wide range of specialized expansion boards to choose from. The STM32 Nucleo board does not require separate probes as it integrates the ST- LINK/V2-1 debugger/programmer. The STM32 Nucleo board comes with the comprehensive STM32 software HAL library together with various packaged software examples. Figure 4: STM32 Nucleo board Information regarding the STM32 Nucleo board is available at www.st.com/stm32nucleo DocID030078 Rev 1 9/14

System setup guide 3.1.2 X-NUCLEO-LED16A1 expansion board UM2147 The X-NUCLEO-LED16A1 expansion board for STM32 Nucleo is based on the LED1642GW 16 channel LED driver. It is compatible with the Arduino UNO R3 platform and interfaces with the STM32 microcontroller via SPI interface. Figure 5: X-NUCLEO-LED16A1 expansion board Information regarding the X-NUCLEO-LED16A1 expansion board is available on www.st.com at www.st.com/x-nucleo 3.2 Software description The following software components are required in order to setup a suitable development environment for creating applications with the STM32 Nucleo development board plus X- NUCLEO-LED16A1 expansion board: 1. X-CUBE-LED1642: STM32Cube expansion for LED driver application development; the firmware and documentation is available on www.st.com. 2. Development tool-chain and compiler: the STM32Cube expansion software supports these environments: a. IAR Embedded Workbench for ARM (EWARM) toolchain + ST-LINK b. RealView Microcontroller Development Kit (MDK-ARM) toolchain + ST-LINK c. system Workbench for STM32 (SW4STM32) + ST-LINK 10/14 DocID030078 Rev 1

3.3 Hardware and software setup System setup guide This section describes the hardware and software setup procedures. It also describes the system setup needed for the above. 3.3.1 Hardware setup Set up the hardware with the following components and accessories: 3.3.2 Software setup an STM32 Nucleo development platform (order code: either NUCLEO-F401RE or NUCLEO-L053R8) the 16 channel LED driver expansion board (order code: X-NUCLEO-LED16A1) an optional string of 16 LEDs connected in parallel or X-NUCLEO-LED16A1 expansion board a USB type A to Mini-B USB cable to connect the STM32 Nucleo to the PC an optional external power supply, 4.8-5.2 V/2 A (depending upon the number of stacked X-NUCLEO-LED16A1 boards) This section lists the minimum requirements for the developer for the setup, and customize applications. Select one of the Integrated Development Environments supported by the STM32Cube expansion software and follow the system requirements and setup information provided by the same IDE provider. Your PC should have: Windows 7 or above 40 MB hard disk space and 128 MB RAM available 2 x USB ports 3.4 System setup guide This section describes how to setup different hardware components before writing and executing an application on the STM32 Nucleo board with the X-NUCLEO-LED16A1 expansion board. 3.4.1 STM32 Nucleo and LED driver expansion boards setup The STM32 Nucleo board integrates the ST-LINK/V2-1 debugger/programmer. Developers can download the relevant version of the ST-LINK/V2-1 USB driver by searching STSW- LINK008 or STSW-LINK009 (depending on your Windows version) on www.st.com. DocID030078 Rev 1 11/14

System setup guide UM2147 Figure 6: STM32 Nucleo development board plus X-NUCLEO-LED16A1 expansion board The X-NUCLEO-LED16A1 expansion board can be easily connected to the STM32 Nucleo development board through the Arduino UNO R3 extension connector and can interface with the STM32 microcontroller on STM32 Nucleo via the Serial Peripheral Interface (SPI) transport layer. 12/14 DocID030078 Rev 1

Revision history 4 Revision history Table 1: Document revision history Date Version Changes 23-Nov-2016 1 Initial release. DocID030078 Rev 1 13/14

IMPORTANT NOTICE PLEASE READ CAREFULLY STMicroelectronics NV and its subsidiaries ( ST ) reserve the right to make changes, corrections, enhancements, modifications, and improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on ST products before placing orders. ST products are sold pursuant to ST s terms and conditions of sale in place at the time of order acknowledgement. Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or the design of Purchasers products. No license, express or implied, to any intellectual property right is granted by ST herein. Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product. ST and the ST logo are trademarks of ST. All other product or service names are the property of their respective owners. Information in this document supersedes and replaces information previously supplied in any prior versions of this document. 2016 STMicroelectronics All rights reserved 14/14 DocID030078 Rev 1