Library to handle the X-NUCLEO-LED61A1 LED Control Expansion Board based on the LED6001 component.

Dependents:   LedDimming_LED61A1_mbedOS HelloWorld_LED61A1_mbedOS LedDimming_LED61A1 HelloWorld_LED61A1 ... more

Fork of X_NUCLEO_LED61A1 by ST Expansion SW Team

LED Control Library

Library to handle the X-NUCLEO-LED61A1 LED Control Expansion Board based on the LED6001 component.

Platform compatibility

  • NUCLEO boards have been tested with the default configuration provided by the HelloWorld_LED61A1 example.
  • NUCLEO-F070RB, NUCLEO-F072RB, NUCLEO-F091RC boards have been tested with the following patch:
    • to connect with a wire the NUCLEO’s D9 pin to the LED61A1’s D6 pin;
    • to initialize the pwm PinName variable with D9 rather than D6.
  • NUCLEO-F302R8 board has been tested with the following patch:
    • to connect with a wire the NUCLEO’s D7 pin to the LED61A1’s D6 pin;
    • to initialize the pwm PinName variable with D7 rather than D6.
  • LPCXpresso11U68 board has been tested with the limitation of using only the PWM Dimming, as it provides only one PWM channel, thus allowing just one between the PWM or Analog Dimming functionalities. It has been tested with the following patch:
    • to connect with a wire the LPCX’s D3 pin to the LED61A1’s D4 pin;
    • to connect with a wire the LPCX’s D4 pin to the LED61A1’s D6 pin;
    • to initialize the xfault_irq PinName variable with D3 rather than D4;
    • to initialize the pwm PinName variable with D4 rather than D6;
    • to initialize the analog PinName variable with NC rather than D5;
    • to disable the use of the user button in any application example as it is not available.
  • FRDM-K64F board has been tested with the following patch:
    • to disable the use of the user button in any application example as it is not available.
Committer:
Davidroid
Date:
Thu Dec 10 15:32:20 2015 +0000
Revision:
0:4a3d02667d9f
Library to handle the X-NUCLEO-LED61A1 LED Control Expansion Board based on the LED6001 component.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:4a3d02667d9f 1 /**
Davidroid 0:4a3d02667d9f 2 ******************************************************************************
Davidroid 0:4a3d02667d9f 3 * @file x_nucleo_led61a1_class.cpp
Davidroid 0:4a3d02667d9f 4 * @author AST / Software Platforms and Cloud
Davidroid 0:4a3d02667d9f 5 * @version V1.0
Davidroid 0:4a3d02667d9f 6 * @date December 9rd, 2015
Davidroid 0:4a3d02667d9f 7 * @brief Implementation file for the X_NUCLEO_LED61A1 expansion board.
Davidroid 0:4a3d02667d9f 8 ******************************************************************************
Davidroid 0:4a3d02667d9f 9 * @attention
Davidroid 0:4a3d02667d9f 10 *
Davidroid 0:4a3d02667d9f 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Davidroid 0:4a3d02667d9f 12 *
Davidroid 0:4a3d02667d9f 13 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 0:4a3d02667d9f 14 * are permitted provided that the following conditions are met:
Davidroid 0:4a3d02667d9f 15 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 0:4a3d02667d9f 16 * this list of conditions and the following disclaimer.
Davidroid 0:4a3d02667d9f 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 0:4a3d02667d9f 18 * this list of conditions and the following disclaimer in the documentation
Davidroid 0:4a3d02667d9f 19 * and/or other materials provided with the distribution.
Davidroid 0:4a3d02667d9f 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 0:4a3d02667d9f 21 * may be used to endorse or promote products derived from this software
Davidroid 0:4a3d02667d9f 22 * without specific prior written permission.
Davidroid 0:4a3d02667d9f 23 *
Davidroid 0:4a3d02667d9f 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 0:4a3d02667d9f 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 0:4a3d02667d9f 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 0:4a3d02667d9f 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 0:4a3d02667d9f 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 0:4a3d02667d9f 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 0:4a3d02667d9f 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 0:4a3d02667d9f 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 0:4a3d02667d9f 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 0:4a3d02667d9f 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 0:4a3d02667d9f 34 *
Davidroid 0:4a3d02667d9f 35 ******************************************************************************
Davidroid 0:4a3d02667d9f 36 */
Davidroid 0:4a3d02667d9f 37
Davidroid 0:4a3d02667d9f 38
Davidroid 0:4a3d02667d9f 39 /* Generated with Stm32CubeTOO -----------------------------------------------*/
Davidroid 0:4a3d02667d9f 40
Davidroid 0:4a3d02667d9f 41
Davidroid 0:4a3d02667d9f 42 /* Includes ------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 43
Davidroid 0:4a3d02667d9f 44 /* ACTION 1 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 45 * Include here platform specific header files. *
Davidroid 0:4a3d02667d9f 46 *----------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 47 #include "mbed.h"
Davidroid 0:4a3d02667d9f 48 #include "DevI2C.h"
Davidroid 0:4a3d02667d9f 49 /* ACTION 2 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 50 * Include here expansion board specific header files. *
Davidroid 0:4a3d02667d9f 51 *----------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 52 #include "x_nucleo_led61a1_class.h"
Davidroid 0:4a3d02667d9f 53
Davidroid 0:4a3d02667d9f 54
Davidroid 0:4a3d02667d9f 55 /* Static variables ----------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 56
Davidroid 0:4a3d02667d9f 57 /* Singleton instance of X_NUCLEO_LED61A1 class. */
Davidroid 0:4a3d02667d9f 58 X_NUCLEO_LED61A1 *X_NUCLEO_LED61A1::_instance;
Davidroid 0:4a3d02667d9f 59
Davidroid 0:4a3d02667d9f 60
Davidroid 0:4a3d02667d9f 61 /* Methods -------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 62
Davidroid 0:4a3d02667d9f 63 /**
Davidroid 0:4a3d02667d9f 64 * @brief Constructor.
Davidroid 0:4a3d02667d9f 65 * @param i2c I2C device to be used for communication.
Davidroid 0:4a3d02667d9f 66 */
Davidroid 0:4a3d02667d9f 67 X_NUCLEO_LED61A1::X_NUCLEO_LED61A1(DevI2C *i2c) : dev_i2c(i2c)
Davidroid 0:4a3d02667d9f 68 {
Davidroid 0:4a3d02667d9f 69 /* Instantiating the components. */
Davidroid 0:4a3d02667d9f 70 /* ACTION 3 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 71 * Instantiate here the expansion board's components. *
Davidroid 0:4a3d02667d9f 72 * *
Davidroid 0:4a3d02667d9f 73 * Example: *
Davidroid 0:4a3d02667d9f 74 * component_1 = new COMPONENT_1(COMPONENT_1_I2C_ADDRESS, *dev_i2c); *
Davidroid 0:4a3d02667d9f 75 * component_2 = new COMPONENT_2(COMPONENT_2_I2C_ADDRESS, *dev_i2c); *
Davidroid 0:4a3d02667d9f 76 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 77 led6001 = new LED6001(LED6001_I2C_ADDRESS, *dev_i2c);
Davidroid 0:4a3d02667d9f 78 }
Davidroid 0:4a3d02667d9f 79
Davidroid 0:4a3d02667d9f 80 /**
Davidroid 0:4a3d02667d9f 81 * @brief Getting a singleton instance of X_NUCLEO_LED61A1 class.
Davidroid 0:4a3d02667d9f 82 * @param i2c I2C device to be used for communication.
Davidroid 0:4a3d02667d9f 83 * @retval a singleton instance of X_NUCLEO_LED61A1 class.
Davidroid 0:4a3d02667d9f 84 */
Davidroid 0:4a3d02667d9f 85 X_NUCLEO_LED61A1 *X_NUCLEO_LED61A1::Instance(DevI2C *i2c)
Davidroid 0:4a3d02667d9f 86 {
Davidroid 0:4a3d02667d9f 87 if (_instance == NULL)
Davidroid 0:4a3d02667d9f 88 {
Davidroid 0:4a3d02667d9f 89 /* I2C communication. */
Davidroid 0:4a3d02667d9f 90 if (i2c == NULL)
Davidroid 0:4a3d02667d9f 91 i2c = new DevI2C(X_NUCLEO_LED61A1_PIN_I2C_SDA, X_NUCLEO_LED61A1_PIN_I2C_SCL);
Davidroid 0:4a3d02667d9f 92
Davidroid 0:4a3d02667d9f 93 /* Instantiating the board. */
Davidroid 0:4a3d02667d9f 94 _instance = new X_NUCLEO_LED61A1(i2c);
Davidroid 0:4a3d02667d9f 95
Davidroid 0:4a3d02667d9f 96 /* Initializing the components. */
Davidroid 0:4a3d02667d9f 97 if (!_instance->Init())
Davidroid 0:4a3d02667d9f 98 error("Initialization of the X_NUCLEO_LED61A1 expansion board failed.\n");
Davidroid 0:4a3d02667d9f 99 }
Davidroid 0:4a3d02667d9f 100
Davidroid 0:4a3d02667d9f 101 return _instance;
Davidroid 0:4a3d02667d9f 102 }
Davidroid 0:4a3d02667d9f 103
Davidroid 0:4a3d02667d9f 104 /**
Davidroid 0:4a3d02667d9f 105 * @brief Getting a singleton instance of X_NUCLEO_LED61A1 class.
Davidroid 0:4a3d02667d9f 106 * @param sda pin name of the SDA pin of the I2C device to be used for communication.
Davidroid 0:4a3d02667d9f 107 * @param scl pin name of the SCL pin of the I2C device to be used for communication.
Davidroid 0:4a3d02667d9f 108 * @retval a singleton instance of X_NUCLEO_LED61A1 class.
Davidroid 0:4a3d02667d9f 109 */
Davidroid 0:4a3d02667d9f 110 X_NUCLEO_LED61A1 *X_NUCLEO_LED61A1::Instance(PinName sda, PinName scl)
Davidroid 0:4a3d02667d9f 111 {
Davidroid 0:4a3d02667d9f 112 if (_instance == NULL)
Davidroid 0:4a3d02667d9f 113 {
Davidroid 0:4a3d02667d9f 114 /* I2C communication. */
Davidroid 0:4a3d02667d9f 115 DevI2C *i2c = new DevI2C(sda, scl);
Davidroid 0:4a3d02667d9f 116
Davidroid 0:4a3d02667d9f 117 /* Instantiating the board. */
Davidroid 0:4a3d02667d9f 118 _instance = new X_NUCLEO_LED61A1(i2c);
Davidroid 0:4a3d02667d9f 119
Davidroid 0:4a3d02667d9f 120 /* Initializing the components. */
Davidroid 0:4a3d02667d9f 121 if (!_instance->Init())
Davidroid 0:4a3d02667d9f 122 error("Initialization of the X_NUCLEO_LED61A1 expansion board failed.\n");
Davidroid 0:4a3d02667d9f 123 }
Davidroid 0:4a3d02667d9f 124
Davidroid 0:4a3d02667d9f 125 return _instance;
Davidroid 0:4a3d02667d9f 126 }
Davidroid 0:4a3d02667d9f 127
Davidroid 0:4a3d02667d9f 128 /**
Davidroid 0:4a3d02667d9f 129 * @brief Initializing the X_NUCLEO_LED61A1 board.
Davidroid 0:4a3d02667d9f 130 * @retval true if initialization is successful, false otherwise.
Davidroid 0:4a3d02667d9f 131 */
Davidroid 0:4a3d02667d9f 132 bool X_NUCLEO_LED61A1::Init(void)
Davidroid 0:4a3d02667d9f 133 {
Davidroid 0:4a3d02667d9f 134 /* Initializing the components. */
Davidroid 0:4a3d02667d9f 135 /* ACTION 4 --------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 136 * Initialize here the expansion board's components. *
Davidroid 0:4a3d02667d9f 137 * *
Davidroid 0:4a3d02667d9f 138 * Example: *
Davidroid 0:4a3d02667d9f 139 * return (Init_COMPONENT_1() && Init_COMPONENT_2()); *
Davidroid 0:4a3d02667d9f 140 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 141 return (Init_LED6001());
Davidroid 0:4a3d02667d9f 142 }
Davidroid 0:4a3d02667d9f 143
Davidroid 0:4a3d02667d9f 144 /* ACTION 5 ------------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 145 * Implement here an initialization method for each expansion board's *
Davidroid 0:4a3d02667d9f 146 * component. *
Davidroid 0:4a3d02667d9f 147 * *
Davidroid 0:4a3d02667d9f 148 * Example: *
Davidroid 0:4a3d02667d9f 149 * bool EXPANSION_BOARD::Init_COMPONENT_1(void) *
Davidroid 0:4a3d02667d9f 150 * { *
Davidroid 0:4a3d02667d9f 151 * // Verifying identity. *
Davidroid 0:4a3d02667d9f 152 * uint8_t id = 0; *
Davidroid 0:4a3d02667d9f 153 * int ret = component_1->ReadID(&id); *
Davidroid 0:4a3d02667d9f 154 * if ((ret != COMPONENT_OK) || (id != I_AM_COMPONENT_1)) *
Davidroid 0:4a3d02667d9f 155 * { *
Davidroid 0:4a3d02667d9f 156 * delete component_1; *
Davidroid 0:4a3d02667d9f 157 * component_1 = NULL; *
Davidroid 0:4a3d02667d9f 158 * return true; *
Davidroid 0:4a3d02667d9f 159 * } *
Davidroid 0:4a3d02667d9f 160 * *
Davidroid 0:4a3d02667d9f 161 * // Configuration. *
Davidroid 0:4a3d02667d9f 162 * INTERFACE_InitTypeDef InitStructure; *
Davidroid 0:4a3d02667d9f 163 * InitStructure.Property_1 = COMPONENT_1_PROPERY_1_INIT; *
Davidroid 0:4a3d02667d9f 164 * InitStructure.Property_N = COMPONENT_1_PROPERY_N_INIT; *
Davidroid 0:4a3d02667d9f 165 * *
Davidroid 0:4a3d02667d9f 166 * // Initialization. *
Davidroid 0:4a3d02667d9f 167 * if (component_1->Init(&InitStructure) != COMPONENT_OK) *
Davidroid 0:4a3d02667d9f 168 * return false; *
Davidroid 0:4a3d02667d9f 169 * *
Davidroid 0:4a3d02667d9f 170 * return true; *
Davidroid 0:4a3d02667d9f 171 * } *
Davidroid 0:4a3d02667d9f 172 *----------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 173 /**
Davidroid 0:4a3d02667d9f 174 * @brief Initialize the LED6001 component.
Davidroid 0:4a3d02667d9f 175 * @retval true if initialization is successful, false otherwise.
Davidroid 0:4a3d02667d9f 176 */
Davidroid 0:4a3d02667d9f 177 bool X_NUCLEO_LED61A1::Init_LED6001(void)
Davidroid 0:4a3d02667d9f 178 {
Davidroid 0:4a3d02667d9f 179 /* Verifying identity. */
Davidroid 0:4a3d02667d9f 180 uint8_t id = 0;
Davidroid 0:4a3d02667d9f 181 int ret = led6001->ReadID(&id);
Davidroid 0:4a3d02667d9f 182 if ((ret != COMPONENT_OK) || (id != I_AM_LED6001))
Davidroid 0:4a3d02667d9f 183 {
Davidroid 0:4a3d02667d9f 184 delete led6001;
Davidroid 0:4a3d02667d9f 185 led6001 = NULL;
Davidroid 0:4a3d02667d9f 186 return true;
Davidroid 0:4a3d02667d9f 187 }
Davidroid 0:4a3d02667d9f 188
Davidroid 0:4a3d02667d9f 189 /* Configuration. */
Davidroid 0:4a3d02667d9f 190 LED_InitTypeDef InitStructure;
Davidroid 0:4a3d02667d9f 191 /* ACTION ----------------------------------------------------------------*
Davidroid 0:4a3d02667d9f 192 * Configure here the component's initialization structure. *
Davidroid 0:4a3d02667d9f 193 * *
Davidroid 0:4a3d02667d9f 194 * Example: *
Davidroid 0:4a3d02667d9f 195 * InitStructure.Property_1 = COMPONENT_PROPERY_1_INIT; *
Davidroid 0:4a3d02667d9f 196 * InitStructure.Property_N = COMPONENT_PROPERY_N_INIT; *
Davidroid 0:4a3d02667d9f 197 *------------------------------------------------------------------------*/
Davidroid 0:4a3d02667d9f 198
Davidroid 0:4a3d02667d9f 199 /* Initialization. */
Davidroid 0:4a3d02667d9f 200 if (led6001->Init(&InitStructure) != COMPONENT_OK)
Davidroid 0:4a3d02667d9f 201 return false;
Davidroid 0:4a3d02667d9f 202
Davidroid 0:4a3d02667d9f 203 return true;
Davidroid 0:4a3d02667d9f 204 }
Davidroid 0:4a3d02667d9f 205
Davidroid 0:4a3d02667d9f 206 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/