mbed library for STMicroelectronics' X-NUCLEO-IKA01A1 expansion board.

Dependents:   HelloWorld_IKA01A1

Fork of X_NUCLEO_IKA01A1 by ST Expansion SW Team

Library for STMicroelectronics' X-NUCLEO-IKA01A1 multifunctional expansion board based on operational amplifiers.

Committer:
Davidroid
Date:
Thu Jul 13 15:46:02 2017 +0000
Revision:
23:807f66b435d6
Parent:
22:ff8d071bf79e
Adapting to ARM mbed coding style.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hemddabral 2:19d1dcef0c0e 1 /**
hemddabral 2:19d1dcef0c0e 2 ******************************************************************************
Davidroid 22:ff8d071bf79e 3 * @file TSV734.h
hemddabral 2:19d1dcef0c0e 4 * @author Central Labs
hemddabral 2:19d1dcef0c0e 5 * @version 1.0.0
hemddabral 2:19d1dcef0c0e 6 * @date 11-February-2016
hemddabral 2:19d1dcef0c0e 7 * @brief Portable architecture for TSV734
hemddabral 2:19d1dcef0c0e 8 ******************************************************************************
hemddabral 2:19d1dcef0c0e 9 * @attention
hemddabral 2:19d1dcef0c0e 10 *
hemddabral 2:19d1dcef0c0e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
hemddabral 2:19d1dcef0c0e 12 *
hemddabral 2:19d1dcef0c0e 13 * Redistribution and use in source and binary forms, with or without modification,
hemddabral 2:19d1dcef0c0e 14 * are permitted provided that the following conditions are met:
hemddabral 2:19d1dcef0c0e 15 * 1. Redistributions of source code must retain the above copyright notice,
hemddabral 2:19d1dcef0c0e 16 * this list of conditions and the following disclaimer.
hemddabral 2:19d1dcef0c0e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
hemddabral 2:19d1dcef0c0e 18 * this list of conditions and the following disclaimer in the documentation
hemddabral 2:19d1dcef0c0e 19 * and/or other materials provided with the distribution.
hemddabral 2:19d1dcef0c0e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
hemddabral 2:19d1dcef0c0e 21 * may be used to endorse or promote products derived from this software
hemddabral 2:19d1dcef0c0e 22 * without specific prior written permission.
hemddabral 2:19d1dcef0c0e 23 *
hemddabral 2:19d1dcef0c0e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
hemddabral 2:19d1dcef0c0e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
hemddabral 2:19d1dcef0c0e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
hemddabral 2:19d1dcef0c0e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
hemddabral 2:19d1dcef0c0e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
hemddabral 2:19d1dcef0c0e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
hemddabral 2:19d1dcef0c0e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
hemddabral 2:19d1dcef0c0e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
hemddabral 2:19d1dcef0c0e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
hemddabral 2:19d1dcef0c0e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
hemddabral 2:19d1dcef0c0e 34 *
hemddabral 2:19d1dcef0c0e 35 ******************************************************************************
hemddabral 2:19d1dcef0c0e 36 */
hemddabral 2:19d1dcef0c0e 37
hemddabral 2:19d1dcef0c0e 38
hemddabral 2:19d1dcef0c0e 39 /* Generated with STM32CubeTOO -----------------------------------------------*/
hemddabral 2:19d1dcef0c0e 40
hemddabral 2:19d1dcef0c0e 41
hemddabral 2:19d1dcef0c0e 42 /* Revision ------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 43 /*
hemddabral 2:19d1dcef0c0e 44 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
hemddabral 2:19d1dcef0c0e 45 Branch/Trunk/Tag: trunk
hemddabral 2:19d1dcef0c0e 46 Based on: X-CUBE-IKA01A1/trunk/Drivers/BSP/Components/tsv734/tsv734.h
hemddabral 2:19d1dcef0c0e 47 Revision: 402
hemddabral 2:19d1dcef0c0e 48 */
hemddabral 2:19d1dcef0c0e 49
hemddabral 2:19d1dcef0c0e 50
hemddabral 2:19d1dcef0c0e 51 /* Define to prevent recursive inclusion -------------------------------------*/
hemddabral 2:19d1dcef0c0e 52
hemddabral 2:19d1dcef0c0e 53 #ifndef __TSV734_CLASS_H
hemddabral 2:19d1dcef0c0e 54 #define __TSV734_CLASS_H
hemddabral 2:19d1dcef0c0e 55
hemddabral 2:19d1dcef0c0e 56
hemddabral 2:19d1dcef0c0e 57 /* Includes ------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 58
hemddabral 2:19d1dcef0c0e 59 /* ACTION 1 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 60 * Include here platform specific header files. *
hemddabral 2:19d1dcef0c0e 61 *----------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 62 #include "mbed.h"
hemddabral 2:19d1dcef0c0e 63 /* ACTION 2 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 64 * Include here component specific header files. *
hemddabral 2:19d1dcef0c0e 65 *----------------------------------------------------------------------------*/
Davidroid 22:ff8d071bf79e 66 #include "TSV734_def.h"
hemddabral 2:19d1dcef0c0e 67 /* ACTION 3 ------------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 68 * Include here interface specific header files. *
hemddabral 2:19d1dcef0c0e 69 * *
hemddabral 2:19d1dcef0c0e 70 * Example: *
Davidroid 22:ff8d071bf79e 71 * #include "HumiditySensor.h" *
Davidroid 22:ff8d071bf79e 72 * #include "TemperatureSensor.h" *
hemddabral 2:19d1dcef0c0e 73 *----------------------------------------------------------------------------*/
Davidroid 22:ff8d071bf79e 74 #include "../Interfaces/LedDriver.h"
hemddabral 2:19d1dcef0c0e 75
hemddabral 2:19d1dcef0c0e 76
hemddabral 2:19d1dcef0c0e 77 /* Classes -------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 78
hemddabral 2:19d1dcef0c0e 79 /**
hemddabral 13:9cecc8d66cc1 80 * @brief Class representing a TSV734 operational amplifier component.
hemddabral 2:19d1dcef0c0e 81 */
Davidroid 22:ff8d071bf79e 82 class TSV734 : public LedDriver
hemddabral 2:19d1dcef0c0e 83 {
hemddabral 2:19d1dcef0c0e 84 public:
hemddabral 2:19d1dcef0c0e 85
hemddabral 2:19d1dcef0c0e 86 /*** Constructor and Destructor Methods ***/
hemddabral 2:19d1dcef0c0e 87
hemddabral 2:19d1dcef0c0e 88 /**
hemddabral 2:19d1dcef0c0e 89 * @brief Constructor.
hemddabral 2:19d1dcef0c0e 90 */
Davidroid 22:ff8d071bf79e 91 TSV734(PinName ledDriverPin, double ledPeriod) : LedDriver()
hemddabral 2:19d1dcef0c0e 92 {
hemddabral 14:8277ca0ab13a 93 led_driver_pin = ledDriverPin;
hemddabral 16:2f9443aedbe8 94
hemddabral 19:af35fc938d88 95 period_us = ledPeriod;
hemddabral 16:2f9443aedbe8 96 PwmOut ledOut(led_driver_pin);
hemddabral 19:af35fc938d88 97 ledOut.period_us(period_us);
hemddabral 2:19d1dcef0c0e 98 }
hemddabral 2:19d1dcef0c0e 99
hemddabral 2:19d1dcef0c0e 100 /**
hemddabral 2:19d1dcef0c0e 101 * @brief Destructor.
hemddabral 2:19d1dcef0c0e 102 */
hemddabral 2:19d1dcef0c0e 103 virtual ~TSV734(void) {}
hemddabral 2:19d1dcef0c0e 104
hemddabral 2:19d1dcef0c0e 105
Davidroid 22:ff8d071bf79e 106 /*** Public Component Related Methods ***/
Davidroid 22:ff8d071bf79e 107
Davidroid 22:ff8d071bf79e 108 /* ACTION 5 --------------------------------------------------------------*
Davidroid 22:ff8d071bf79e 109 * Implement here the component's public methods, as wrappers of the C *
Davidroid 22:ff8d071bf79e 110 * component's functions. *
Davidroid 22:ff8d071bf79e 111 * They should be: *
Davidroid 22:ff8d071bf79e 112 * + Methods with the same name of the C component's virtual table's *
Davidroid 22:ff8d071bf79e 113 * functions (1); *
Davidroid 22:ff8d071bf79e 114 * + Methods with the same name of the C component's extended virtual *
Davidroid 22:ff8d071bf79e 115 * table's functions, if any (2). *
Davidroid 22:ff8d071bf79e 116 * *
Davidroid 22:ff8d071bf79e 117 * Example: *
Davidroid 22:ff8d071bf79e 118 * virtual int get_value(float *p_data) //(1) *
Davidroid 22:ff8d071bf79e 119 * { *
Davidroid 22:ff8d071bf79e 120 * return COMPONENT_get_value(float *pf_data); *
Davidroid 22:ff8d071bf79e 121 * } *
Davidroid 22:ff8d071bf79e 122 * *
Davidroid 22:ff8d071bf79e 123 * virtual int enable_feature(void) //(2) *
Davidroid 22:ff8d071bf79e 124 * { *
Davidroid 22:ff8d071bf79e 125 * return COMPONENT_enable_feature(); *
Davidroid 22:ff8d071bf79e 126 * } *
Davidroid 22:ff8d071bf79e 127 *------------------------------------------------------------------------*/
Davidroid 22:ff8d071bf79e 128
Davidroid 22:ff8d071bf79e 129 /**
Davidroid 22:ff8d071bf79e 130 * @brief Public functions inherited from the Component Class
Davidroid 22:ff8d071bf79e 131 */
hemddabral 2:19d1dcef0c0e 132
hemddabral 13:9cecc8d66cc1 133 /**
hemddabral 13:9cecc8d66cc1 134 * @brief initialize the class for TSV734 operational amplifier component
hemddabral 13:9cecc8d66cc1 135 * @retval COMPONENT_OK if initialization is successfull
hemddabral 13:9cecc8d66cc1 136 * @retval suitable error code otherwise
hemddabral 13:9cecc8d66cc1 137 */
Davidroid 22:ff8d071bf79e 138 virtual int init(void *init = NULL)
hemddabral 2:19d1dcef0c0e 139 {
hemddabral 2:19d1dcef0c0e 140 return (int) TSV734_Init((void *) init);
hemddabral 2:19d1dcef0c0e 141 }
hemddabral 2:19d1dcef0c0e 142
hemddabral 13:9cecc8d66cc1 143 /**
hemddabral 13:9cecc8d66cc1 144 * @brief obtain component ID for TSV734 perational amplifier
hemddabral 13:9cecc8d66cc1 145 * @retval component ID for TSV734 operational amplifier
hemddabral 13:9cecc8d66cc1 146 */
Davidroid 22:ff8d071bf79e 147 virtual int read_id(uint8_t *id = NULL)
hemddabral 2:19d1dcef0c0e 148 {
hemddabral 2:19d1dcef0c0e 149 return (int) TSV734_ReadID((uint8_t *) id);
hemddabral 2:19d1dcef0c0e 150 }
hemddabral 3:997327f69b10 151
Davidroid 22:ff8d071bf79e 152 /**
Davidroid 22:ff8d071bf79e 153 * @brief Public functions inherited from the LedDriver Class
Davidroid 22:ff8d071bf79e 154 */
hemddabral 2:19d1dcef0c0e 155
hemddabral 13:9cecc8d66cc1 156 /**
hemddabral 13:9cecc8d66cc1 157 * @brief set the duty cycle of LED in LED driver configuration
hemddabral 13:9cecc8d66cc1 158 * @param dc duty cycle to set
hemddabral 13:9cecc8d66cc1 159 * @retval duty cycle in LED driver configuration
hemddabral 13:9cecc8d66cc1 160 */
Davidroid 22:ff8d071bf79e 161 virtual double set_duty_cycle(double dc)
hemddabral 2:19d1dcef0c0e 162 {
hemddabral 14:8277ca0ab13a 163 PwmOut ledOut(led_driver_pin);
hemddabral 19:af35fc938d88 164 ledOut.pulsewidth_us(period_us*dc);
hemddabral 19:af35fc938d88 165 return (double) dc;
hemddabral 2:19d1dcef0c0e 166 }
hemddabral 2:19d1dcef0c0e 167
hemddabral 2:19d1dcef0c0e 168
hemddabral 2:19d1dcef0c0e 169 /*** Public Interrupt Related Methods ***/
hemddabral 2:19d1dcef0c0e 170
hemddabral 2:19d1dcef0c0e 171 /* ACTION 6 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 172 * Implement here interrupt related methods, if any. *
hemddabral 2:19d1dcef0c0e 173 * Note that interrupt handling is platform dependent, e.g.: *
hemddabral 2:19d1dcef0c0e 174 * + mbed: *
hemddabral 2:19d1dcef0c0e 175 * InterruptIn feature_irq(pin); //Interrupt object. *
hemddabral 2:19d1dcef0c0e 176 * feature_irq.fall(callback); //Attach a callback. *
hemddabral 2:19d1dcef0c0e 177 * feature_irq.mode(PullNone); //Set interrupt mode. *
hemddabral 2:19d1dcef0c0e 178 * feature_irq.enable_irq(); //Enable interrupt. *
hemddabral 2:19d1dcef0c0e 179 * feature_irq.disable_irq(); //Disable interrupt. *
hemddabral 2:19d1dcef0c0e 180 * + Arduino: *
hemddabral 2:19d1dcef0c0e 181 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
hemddabral 2:19d1dcef0c0e 182 * detachInterrupt(pin); //Detach a callback. *
hemddabral 2:19d1dcef0c0e 183 * *
hemddabral 2:19d1dcef0c0e 184 * Example (mbed): *
Davidroid 22:ff8d071bf79e 185 * void attach_feature_irq(void (*fptr) (void)) *
Davidroid 22:ff8d071bf79e 186 * { *
Davidroid 22:ff8d071bf79e 187 * feature_irq.rise(fptr); *
Davidroid 22:ff8d071bf79e 188 * } *
Davidroid 22:ff8d071bf79e 189 * *
Davidroid 22:ff8d071bf79e 190 * void enable_feature_irq(void) *
Davidroid 22:ff8d071bf79e 191 * { *
Davidroid 22:ff8d071bf79e 192 * feature_irq.enable_irq(); *
Davidroid 22:ff8d071bf79e 193 * } *
Davidroid 22:ff8d071bf79e 194 * *
Davidroid 22:ff8d071bf79e 195 * void disable_feature_irq(void) *
Davidroid 22:ff8d071bf79e 196 * { *
Davidroid 22:ff8d071bf79e 197 * feature_irq.disable_irq(); *
Davidroid 22:ff8d071bf79e 198 * } *
hemddabral 2:19d1dcef0c0e 199 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 200
hemddabral 2:19d1dcef0c0e 201
hemddabral 2:19d1dcef0c0e 202 protected:
hemddabral 2:19d1dcef0c0e 203
hemddabral 2:19d1dcef0c0e 204 /*** Protected Component Related Methods ***/
hemddabral 2:19d1dcef0c0e 205
hemddabral 2:19d1dcef0c0e 206 /* ACTION 7 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 207 * Declare here the component's specific methods. *
hemddabral 2:19d1dcef0c0e 208 * They should be: *
hemddabral 2:19d1dcef0c0e 209 * + Methods with the same name of the C component's virtual table's *
hemddabral 2:19d1dcef0c0e 210 * functions (1); *
hemddabral 2:19d1dcef0c0e 211 * + Methods with the same name of the C component's extended virtual *
hemddabral 2:19d1dcef0c0e 212 * table's functions, if any (2); *
hemddabral 2:19d1dcef0c0e 213 * + Helper methods, if any, like functions declared in the component's *
hemddabral 2:19d1dcef0c0e 214 * source files but not pointed by the component's virtual table (3). *
hemddabral 2:19d1dcef0c0e 215 * *
hemddabral 2:19d1dcef0c0e 216 * Example: *
Davidroid 22:ff8d071bf79e 217 * status_t COMPONENT_get_value(float *f); //(1) *
Davidroid 22:ff8d071bf79e 218 * status_t COMPONENT_enable_feature(void); //(2) *
Davidroid 22:ff8d071bf79e 219 * status_t COMPONENT_compute_average(void); //(3) *
hemddabral 2:19d1dcef0c0e 220 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 221 /* TSV734's generic functions. */
Davidroid 22:ff8d071bf79e 222 status_t TSV734_Init(void *init);
Davidroid 22:ff8d071bf79e 223 status_t TSV734_ReadID(void *id);
hemddabral 2:19d1dcef0c0e 224
hemddabral 2:19d1dcef0c0e 225 /* TSV734's interrupts related functions. */
Davidroid 22:ff8d071bf79e 226 status_t TSV734_ConfigIT(void* a);
Davidroid 22:ff8d071bf79e 227 status_t TSV734_SetDutyCycle(float dutyCycle);
hemddabral 19:af35fc938d88 228 double period_us;
hemddabral 14:8277ca0ab13a 229 PinName led_driver_pin;
hemddabral 14:8277ca0ab13a 230
hemddabral 2:19d1dcef0c0e 231
hemddabral 2:19d1dcef0c0e 232 /*** Component's I/O Methods ***/
hemddabral 2:19d1dcef0c0e 233
hemddabral 2:19d1dcef0c0e 234 /*** Component's Instance Variables ***/
hemddabral 2:19d1dcef0c0e 235
hemddabral 2:19d1dcef0c0e 236 /* ACTION 9 --------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 237 * Declare here interrupt related variables, if needed. *
hemddabral 2:19d1dcef0c0e 238 * Note that interrupt handling is platform dependent, see *
hemddabral 2:19d1dcef0c0e 239 * "Interrupt Related Methods" above. *
hemddabral 2:19d1dcef0c0e 240 * *
hemddabral 2:19d1dcef0c0e 241 * Example: *
hemddabral 2:19d1dcef0c0e 242 * + mbed: *
hemddabral 2:19d1dcef0c0e 243 * InterruptIn feature_irq; *
hemddabral 2:19d1dcef0c0e 244 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 245
hemddabral 2:19d1dcef0c0e 246 /* ACTION 10 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 247 * Declare here other pin related variables, if needed. *
hemddabral 2:19d1dcef0c0e 248 * *
hemddabral 2:19d1dcef0c0e 249 * Example: *
hemddabral 2:19d1dcef0c0e 250 * + mbed: *
hemddabral 2:19d1dcef0c0e 251 * DigitalOut standby_reset; *
hemddabral 2:19d1dcef0c0e 252 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 253
hemddabral 2:19d1dcef0c0e 254 /* ACTION 11 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 255 * Declare here communication related variables, if needed. *
hemddabral 2:19d1dcef0c0e 256 * *
hemddabral 2:19d1dcef0c0e 257 * Example: *
hemddabral 2:19d1dcef0c0e 258 * + mbed: *
hemddabral 2:19d1dcef0c0e 259 * DigitalOut address; *
hemddabral 2:19d1dcef0c0e 260 * DevI2C &dev_i2c; *
hemddabral 2:19d1dcef0c0e 261 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 262
hemddabral 2:19d1dcef0c0e 263 /* ACTION 12 -------------------------------------------------------------*
hemddabral 3:997327f69b10 264 * Declare here identity related variables, if needed. *
hemddabral 2:19d1dcef0c0e 265 * Note that there should be only a unique identifier for each component, *
hemddabral 2:19d1dcef0c0e 266 * which should be the "who_am_i" parameter. *
hemddabral 2:19d1dcef0c0e 267 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 268 /* Identity */
hemddabral 2:19d1dcef0c0e 269 uint8_t who_am_i;
hemddabral 2:19d1dcef0c0e 270
hemddabral 3:997327f69b10 271
hemddabral 2:19d1dcef0c0e 272 /* ACTION 13 -------------------------------------------------------------*
hemddabral 2:19d1dcef0c0e 273 * Declare here the component's static and non-static data, one variable *
hemddabral 2:19d1dcef0c0e 274 * per line. *
hemddabral 2:19d1dcef0c0e 275 * *
hemddabral 2:19d1dcef0c0e 276 * Example: *
hemddabral 2:19d1dcef0c0e 277 * float measure; *
hemddabral 2:19d1dcef0c0e 278 * int instance_id; *
hemddabral 2:19d1dcef0c0e 279 * static int number_of_instances; *
hemddabral 2:19d1dcef0c0e 280 *------------------------------------------------------------------------*/
hemddabral 2:19d1dcef0c0e 281 };
hemddabral 2:19d1dcef0c0e 282
hemddabral 2:19d1dcef0c0e 283 #endif /* __TSV734_CLASS_H */
hemddabral 2:19d1dcef0c0e 284
hemddabral 2:19d1dcef0c0e 285 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/