Library to handle the X-NUCLEO-6180XA1 Proximity and ambient light sensor expansion board based on VL6180X.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_6180XA1 SunTracker_BLE Servo_6180XA1 BLE_HR_Light ... more

Fork of X_NUCLEO_6180XA1 by ST Expansion SW Team

X-NUCLEO-6180XA1 Proximity and Ambient Light Sensor Expansion Board Firmware Package

Introduction

This firmware package includes Components Device Drivers and Board Support Package for STMicroelectronics' X-NUCLEO-6180XA1 Proximity and ambient light sensor expansion board based on VL6180X.

Firmware Library

Class X_NUCLEO_6180XA1 is intended to represent the Proximity and ambient light sensor expansion board with the same name.

The expansion board is providing the support of the following components:

  1. on-board VL6180X proximity and ambient light sensor,
  2. up to three additional VL6180X Satellites,
  3. on-board 4-digit display

It is intentionally implemented as a singleton because only one X-NUCLEO-VL6180XA1 at a time might be deployed in a HW component stack. In order to get the singleton instance you have to call class method `Instance()`, e.g.:

// Sensors expansion board singleton instance
static X_NUCLEO_6180XA1 *6180X_expansion_board = X_NUCLEO_6180XA1::Instance();

Arduino Connector Compatibility Warning

Using the X-NUCLEO-6180XA1 expansion board with the NUCLEO-F429ZI requires adopting the following patch:

  • to remove R46 resistor connected to A3 pin;
  • to solder R47 resistor connected to A5 pin.

Alternatively, you can route the Nucleo board’s A5 pin directly to the expansion board’s A3 pin with a wire. In case you patch your expansion board or route the pin, the interrupt signal for the front sensor will be driven on A5 pin rather than on A3 pin.


Example Applications

Committer:
nikapov
Date:
Mon Aug 21 15:44:34 2017 +0000
Revision:
58:1e9a3a46f814
Parent:
57:fa4c622b04a7
Make compatible with non-copyable version of I2C.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davide.aliprandi@st.com 56:37d1736bd896 1 /**
davide.aliprandi@st.com 56:37d1736bd896 2 ******************************************************************************
Davidroid 57:fa4c622b04a7 3 * @file XNucleo6180XA1.h
davide.aliprandi@st.com 56:37d1736bd896 4 * @author AST / EST
davide.aliprandi@st.com 56:37d1736bd896 5 * @version V0.0.1
davide.aliprandi@st.com 56:37d1736bd896 6 * @date 13-April-2015
davide.aliprandi@st.com 56:37d1736bd896 7 * @brief Header file for class X_NUCLEO_6180XA1 representing a X-NUCLEO-6180XA1
davide.aliprandi@st.com 56:37d1736bd896 8 * expansion board
davide.aliprandi@st.com 56:37d1736bd896 9 ******************************************************************************
davide.aliprandi@st.com 56:37d1736bd896 10 * @attention
davide.aliprandi@st.com 56:37d1736bd896 11 *
davide.aliprandi@st.com 56:37d1736bd896 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
davide.aliprandi@st.com 56:37d1736bd896 13 *
davide.aliprandi@st.com 56:37d1736bd896 14 * Redistribution and use in source and binary forms, with or without modification,
davide.aliprandi@st.com 56:37d1736bd896 15 * are permitted provided that the following conditions are met:
davide.aliprandi@st.com 56:37d1736bd896 16 * 1. Redistributions of source code must retain the above copyright notice,
davide.aliprandi@st.com 56:37d1736bd896 17 * this list of conditions and the following disclaimer.
davide.aliprandi@st.com 56:37d1736bd896 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
davide.aliprandi@st.com 56:37d1736bd896 19 * this list of conditions and the following disclaimer in the documentation
davide.aliprandi@st.com 56:37d1736bd896 20 * and/or other materials provided with the distribution.
davide.aliprandi@st.com 56:37d1736bd896 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
davide.aliprandi@st.com 56:37d1736bd896 22 * may be used to endorse or promote products derived from this software
davide.aliprandi@st.com 56:37d1736bd896 23 * without specific prior written permission.
davide.aliprandi@st.com 56:37d1736bd896 24 *
davide.aliprandi@st.com 56:37d1736bd896 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
davide.aliprandi@st.com 56:37d1736bd896 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
davide.aliprandi@st.com 56:37d1736bd896 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
davide.aliprandi@st.com 56:37d1736bd896 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
davide.aliprandi@st.com 56:37d1736bd896 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
davide.aliprandi@st.com 56:37d1736bd896 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
davide.aliprandi@st.com 56:37d1736bd896 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
davide.aliprandi@st.com 56:37d1736bd896 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
davide.aliprandi@st.com 56:37d1736bd896 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
davide.aliprandi@st.com 56:37d1736bd896 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
davide.aliprandi@st.com 56:37d1736bd896 35 *
davide.aliprandi@st.com 56:37d1736bd896 36 ******************************************************************************
davide.aliprandi@st.com 56:37d1736bd896 37 */
davide.aliprandi@st.com 56:37d1736bd896 38
davide.aliprandi@st.com 56:37d1736bd896 39
davide.aliprandi@st.com 56:37d1736bd896 40 /* Define to prevent from recursive inclusion --------------------------------*/
davide.aliprandi@st.com 56:37d1736bd896 41
davide.aliprandi@st.com 56:37d1736bd896 42 #ifndef __X_NUCLEO_6180XA1_H
davide.aliprandi@st.com 56:37d1736bd896 43 #define __X_NUCLEO_6180XA1_H
davide.aliprandi@st.com 56:37d1736bd896 44
davide.aliprandi@st.com 56:37d1736bd896 45
davide.aliprandi@st.com 56:37d1736bd896 46 /* Includes ------------------------------------------------------------------*/
davide.aliprandi@st.com 56:37d1736bd896 47
davide.aliprandi@st.com 56:37d1736bd896 48 #include "mbed.h"
Davidroid 57:fa4c622b04a7 49 #include "VL6180X.h"
Davidroid 57:fa4c622b04a7 50 #include "Display.h"
Davidroid 57:fa4c622b04a7 51 #include "STMPE1600.h"
davide.aliprandi@st.com 56:37d1736bd896 52 #include "DevI2C.h"
Davidroid 57:fa4c622b04a7 53 #include "Switch.h"
davide.aliprandi@st.com 56:37d1736bd896 54
davide.aliprandi@st.com 56:37d1736bd896 55 /** New device addresses */
davide.aliprandi@st.com 56:37d1736bd896 56 #define NEW_SENSOR_TOP_ADDRESS 0x10
davide.aliprandi@st.com 56:37d1736bd896 57 #define NEW_SENSOR_BOTTOM_ADDRESS 0x11
davide.aliprandi@st.com 56:37d1736bd896 58 #define NEW_SENSOR_LEFT_ADDRESS 0x12
davide.aliprandi@st.com 56:37d1736bd896 59 #define NEW_SENSOR_RIGHT_ADDRESS 0x13
davide.aliprandi@st.com 56:37d1736bd896 60
davide.aliprandi@st.com 56:37d1736bd896 61
davide.aliprandi@st.com 56:37d1736bd896 62 /* Classes--------------------------------------------------------------------*/
davide.aliprandi@st.com 56:37d1736bd896 63
davide.aliprandi@st.com 56:37d1736bd896 64 /**
davide.aliprandi@st.com 56:37d1736bd896 65 * Class representing the X-NUCLEO-VL6180XA1 expansion board singleton obj
davide.aliprandi@st.com 56:37d1736bd896 66 */
Davidroid 57:fa4c622b04a7 67 class XNucleo6180XA1
davide.aliprandi@st.com 56:37d1736bd896 68 {
davide.aliprandi@st.com 56:37d1736bd896 69 protected:
davide.aliprandi@st.com 56:37d1736bd896 70 /** Constructor 1
davide.aliprandi@st.com 56:37d1736bd896 71 * @brief x_nucleo_6180xa1 board Constructor. Default the INT gpio \
davide.aliprandi@st.com 56:37d1736bd896 72 * configuration as the electrical schematic. Self sensing for optional \
davide.aliprandi@st.com 56:37d1736bd896 73 * expansion sensors (L/B/R).
davide.aliprandi@st.com 56:37d1736bd896 74 * @param[in] &i2c device I2C to be used for communication
davide.aliprandi@st.com 56:37d1736bd896 75 */
Davidroid 57:fa4c622b04a7 76 XNucleo6180XA1(DevI2C *ext_i2c) : dev_i2c(ext_i2c)
davide.aliprandi@st.com 56:37d1736bd896 77 {
davide.aliprandi@st.com 56:37d1736bd896 78 stmpe1600 = new STMPE1600(*ext_i2c);
Davidroid 57:fa4c622b04a7 79 stmpe1600->write_sys_ctrl (SOFT_RESET);
Davidroid 57:fa4c622b04a7 80 the_switch = new Switch (*stmpe1600, GPIO_11);
davide.aliprandi@st.com 56:37d1736bd896 81 display = new Display(*stmpe1600);
davide.aliprandi@st.com 56:37d1736bd896 82
davide.aliprandi@st.com 56:37d1736bd896 83 _gpio0_top=new STMPE1600DigiOut(*dev_i2c, GPIO_12);
davide.aliprandi@st.com 56:37d1736bd896 84 sensor_top=new VL6180X(*dev_i2c, *_gpio0_top, A3);
davide.aliprandi@st.com 56:37d1736bd896 85
davide.aliprandi@st.com 56:37d1736bd896 86 _gpio0_bottom=new STMPE1600DigiOut(*dev_i2c, GPIO_13);
davide.aliprandi@st.com 56:37d1736bd896 87 sensor_bottom=new VL6180X(*dev_i2c, *_gpio0_bottom, A2);
davide.aliprandi@st.com 56:37d1736bd896 88
davide.aliprandi@st.com 56:37d1736bd896 89 _gpio0_left=new STMPE1600DigiOut(*dev_i2c, GPIO_14);
davide.aliprandi@st.com 56:37d1736bd896 90 sensor_left=new VL6180X(*dev_i2c, *_gpio0_left, D13);
davide.aliprandi@st.com 56:37d1736bd896 91
davide.aliprandi@st.com 56:37d1736bd896 92 _gpio0_right=new STMPE1600DigiOut(*dev_i2c, GPIO_15);
davide.aliprandi@st.com 56:37d1736bd896 93 sensor_right=new VL6180X(*dev_i2c, *_gpio0_right, D2);
davide.aliprandi@st.com 56:37d1736bd896 94
davide.aliprandi@st.com 56:37d1736bd896 95 if (init_board()) { // init failed
davide.aliprandi@st.com 56:37d1736bd896 96 printf ("ERROR Init X-NUCLEO-6180XA1 Board\n\r");
davide.aliprandi@st.com 56:37d1736bd896 97 }
davide.aliprandi@st.com 56:37d1736bd896 98 }
davide.aliprandi@st.com 56:37d1736bd896 99
davide.aliprandi@st.com 56:37d1736bd896 100 /** Constructor 2
davide.aliprandi@st.com 56:37d1736bd896 101 * @param[in] &i2c device I2C to be used for communication
davide.aliprandi@st.com 56:37d1736bd896 102 * @param[in] PinName gpio1_top Mbed DigitalOut pin name to be used as a top sensor GPIO_1 INT
davide.aliprandi@st.com 56:37d1736bd896 103 * @param[in] PinName gpio1_bottom Mbed DigitalOut pin name to be used as a bottom sensor GPIO_1 INT
davide.aliprandi@st.com 56:37d1736bd896 104 * @param[in] PinName gpio1_left Mbed DigitalOut pin name to be used as a left sensor GPIO_1 INT
davide.aliprandi@st.com 56:37d1736bd896 105 * @param[in] PinName gpio1_right Mbed DigitalOut pin name to be used as a right sensor GPIO_1 INT
davide.aliprandi@st.com 56:37d1736bd896 106 */
Davidroid 57:fa4c622b04a7 107 XNucleo6180XA1(DevI2C *ext_i2c, PinName gpio1_top, PinName gpio1_bottom,
davide.aliprandi@st.com 56:37d1736bd896 108 PinName gpio1_left, PinName gpio1_right) : dev_i2c(ext_i2c) {
davide.aliprandi@st.com 56:37d1736bd896 109 stmpe1600 = new STMPE1600(*ext_i2c);
Davidroid 57:fa4c622b04a7 110 stmpe1600->write_sys_ctrl (SOFT_RESET);
Davidroid 57:fa4c622b04a7 111 the_switch = new Switch (*stmpe1600, GPIO_11);
davide.aliprandi@st.com 56:37d1736bd896 112 display = new Display(*stmpe1600);
davide.aliprandi@st.com 56:37d1736bd896 113
davide.aliprandi@st.com 56:37d1736bd896 114 _gpio0_top=new STMPE1600DigiOut(*dev_i2c, GPIO_12);
davide.aliprandi@st.com 56:37d1736bd896 115 sensor_top=new VL6180X(*dev_i2c, *_gpio0_top, gpio1_top);
davide.aliprandi@st.com 56:37d1736bd896 116
davide.aliprandi@st.com 56:37d1736bd896 117 _gpio0_bottom=new STMPE1600DigiOut(*dev_i2c, GPIO_13);
davide.aliprandi@st.com 56:37d1736bd896 118 sensor_bottom=new VL6180X(*dev_i2c, *_gpio0_bottom, gpio1_bottom);
davide.aliprandi@st.com 56:37d1736bd896 119
davide.aliprandi@st.com 56:37d1736bd896 120 _gpio0_left=new STMPE1600DigiOut(*dev_i2c, GPIO_14);
davide.aliprandi@st.com 56:37d1736bd896 121 sensor_left=new VL6180X(*dev_i2c, *_gpio0_left, gpio1_left);
davide.aliprandi@st.com 56:37d1736bd896 122
davide.aliprandi@st.com 56:37d1736bd896 123 _gpio0_right=new STMPE1600DigiOut(*dev_i2c, GPIO_15);
davide.aliprandi@st.com 56:37d1736bd896 124 sensor_right=new VL6180X(*dev_i2c, *_gpio0_right, gpio1_right);
davide.aliprandi@st.com 56:37d1736bd896 125 }
davide.aliprandi@st.com 56:37d1736bd896 126
davide.aliprandi@st.com 56:37d1736bd896 127 /**
davide.aliprandi@st.com 56:37d1736bd896 128 * @brief Override default copy constructor as empty
Davidroid 57:fa4c622b04a7 129 * @param[in] &XNucleo6180XA1 singleton object reference
davide.aliprandi@st.com 56:37d1736bd896 130 * @return
davide.aliprandi@st.com 56:37d1736bd896 131 */
Davidroid 57:fa4c622b04a7 132 XNucleo6180XA1() {};
davide.aliprandi@st.com 56:37d1736bd896 133
davide.aliprandi@st.com 56:37d1736bd896 134 /**
davide.aliprandi@st.com 56:37d1736bd896 135 * @brief Override default assignement operator to avoid multiple singletons
Davidroid 57:fa4c622b04a7 136 * @param[in] &XNucleo6180XA1 singleton object reference
davide.aliprandi@st.com 56:37d1736bd896 137 * @return
davide.aliprandi@st.com 56:37d1736bd896 138 */
Davidroid 57:fa4c622b04a7 139 void operator = (const XNucleo6180XA1&);
davide.aliprandi@st.com 56:37d1736bd896 140
davide.aliprandi@st.com 56:37d1736bd896 141 public:
davide.aliprandi@st.com 56:37d1736bd896 142 /**
davide.aliprandi@st.com 56:37d1736bd896 143 * @brief Creates a singleton object instance
davide.aliprandi@st.com 56:37d1736bd896 144 * @param[in] &i2c device I2C to be used for communication
davide.aliprandi@st.com 56:37d1736bd896 145 * @return Pointer to the object instance
davide.aliprandi@st.com 56:37d1736bd896 146 */
Davidroid 57:fa4c622b04a7 147 static XNucleo6180XA1 *instance(DevI2C *ext_i2c);
davide.aliprandi@st.com 56:37d1736bd896 148
davide.aliprandi@st.com 56:37d1736bd896 149 /**
davide.aliprandi@st.com 56:37d1736bd896 150 * @brief Creates a singleton object instance
davide.aliprandi@st.com 56:37d1736bd896 151 * @param[in] &i2c device I2C to be used for communication
davide.aliprandi@st.com 56:37d1736bd896 152 * @param[in] PinName gpio1_top the pin connected to top sensor INT
davide.aliprandi@st.com 56:37d1736bd896 153 * @param[in] PinName gpio1_bottem the pin connected to bottom sensor INT
davide.aliprandi@st.com 56:37d1736bd896 154 * @param[in] PinName gpio1_left the pin connected to left sensor INT
davide.aliprandi@st.com 56:37d1736bd896 155 * @param[in] PinName gpio1_right the pin connected to right sensor INT
davide.aliprandi@st.com 56:37d1736bd896 156 * @return Pointer to the object instance
davide.aliprandi@st.com 56:37d1736bd896 157 */
Davidroid 57:fa4c622b04a7 158 static XNucleo6180XA1 *instance(DevI2C *ext_i2c, PinName gpio1_top, PinName gpio1_bottom,
davide.aliprandi@st.com 56:37d1736bd896 159 PinName gpio1_left, PinName gpio1_right);
davide.aliprandi@st.com 56:37d1736bd896 160
davide.aliprandi@st.com 56:37d1736bd896 161 /**
davide.aliprandi@st.com 56:37d1736bd896 162 * @brief Initialize the board and sensors with deft values
davide.aliprandi@st.com 56:37d1736bd896 163 * @return 0 on success
davide.aliprandi@st.com 56:37d1736bd896 164 */
davide.aliprandi@st.com 56:37d1736bd896 165 int init_board();
davide.aliprandi@st.com 56:37d1736bd896 166
davide.aliprandi@st.com 56:37d1736bd896 167 /**
davide.aliprandi@st.com 56:37d1736bd896 168 * @brief Read the on board red slider switch
davide.aliprandi@st.com 56:37d1736bd896 169 * @return 0 or 1 according to switch position
davide.aliprandi@st.com 56:37d1736bd896 170 */
davide.aliprandi@st.com 56:37d1736bd896 171 bool rd_switch () {
davide.aliprandi@st.com 56:37d1736bd896 172 return the_switch->rd_switch();
davide.aliprandi@st.com 56:37d1736bd896 173 }
davide.aliprandi@st.com 56:37d1736bd896 174
davide.aliprandi@st.com 56:37d1736bd896 175 /**
davide.aliprandi@st.com 56:37d1736bd896 176 * @brief Check the presence of sensor top. To be called after init_board
davide.aliprandi@st.com 56:37d1736bd896 177 * @return true is present, false if absent
davide.aliprandi@st.com 56:37d1736bd896 178 */
davide.aliprandi@st.com 56:37d1736bd896 179 bool is_sensor_top_present() {
davide.aliprandi@st.com 56:37d1736bd896 180 if (sensor_top) {
davide.aliprandi@st.com 56:37d1736bd896 181 return true;
davide.aliprandi@st.com 56:37d1736bd896 182 }
davide.aliprandi@st.com 56:37d1736bd896 183 return false;
davide.aliprandi@st.com 56:37d1736bd896 184 }
davide.aliprandi@st.com 56:37d1736bd896 185
davide.aliprandi@st.com 56:37d1736bd896 186 /**
davide.aliprandi@st.com 56:37d1736bd896 187 * @brief Check the presence of sensor bottom. To be called after init_board
davide.aliprandi@st.com 56:37d1736bd896 188 * @return true is present, false if absent
davide.aliprandi@st.com 56:37d1736bd896 189 */
davide.aliprandi@st.com 56:37d1736bd896 190 bool is_sensor_bottom_present() {
davide.aliprandi@st.com 56:37d1736bd896 191 if (sensor_bottom) {
davide.aliprandi@st.com 56:37d1736bd896 192 return true;
davide.aliprandi@st.com 56:37d1736bd896 193 }
davide.aliprandi@st.com 56:37d1736bd896 194 return false;
davide.aliprandi@st.com 56:37d1736bd896 195 }
davide.aliprandi@st.com 56:37d1736bd896 196
davide.aliprandi@st.com 56:37d1736bd896 197 /**
davide.aliprandi@st.com 56:37d1736bd896 198 * @brief Check the presence of sensor left. To be called after init_board
davide.aliprandi@st.com 56:37d1736bd896 199 * @return true is present, false if absent
davide.aliprandi@st.com 56:37d1736bd896 200 */
davide.aliprandi@st.com 56:37d1736bd896 201 bool is_sensor_left_present() {
davide.aliprandi@st.com 56:37d1736bd896 202 if (sensor_left) {
davide.aliprandi@st.com 56:37d1736bd896 203 return true;
davide.aliprandi@st.com 56:37d1736bd896 204 }
davide.aliprandi@st.com 56:37d1736bd896 205 return false;
davide.aliprandi@st.com 56:37d1736bd896 206 }
davide.aliprandi@st.com 56:37d1736bd896 207
davide.aliprandi@st.com 56:37d1736bd896 208 /**
davide.aliprandi@st.com 56:37d1736bd896 209 * @brief Check the presence of sensor right. To be called after init_board
davide.aliprandi@st.com 56:37d1736bd896 210 * @return true is present, false if absent
davide.aliprandi@st.com 56:37d1736bd896 211 */
davide.aliprandi@st.com 56:37d1736bd896 212 bool is_sensor_right_present() {
davide.aliprandi@st.com 56:37d1736bd896 213 if (sensor_right) {
davide.aliprandi@st.com 56:37d1736bd896 214 return true;
davide.aliprandi@st.com 56:37d1736bd896 215 }
davide.aliprandi@st.com 56:37d1736bd896 216 return false;
davide.aliprandi@st.com 56:37d1736bd896 217 }
davide.aliprandi@st.com 56:37d1736bd896 218
davide.aliprandi@st.com 56:37d1736bd896 219 DevI2C *dev_i2c;
davide.aliprandi@st.com 56:37d1736bd896 220 VL6180X *sensor_top;
davide.aliprandi@st.com 56:37d1736bd896 221 VL6180X *sensor_bottom;
davide.aliprandi@st.com 56:37d1736bd896 222 VL6180X *sensor_left;
davide.aliprandi@st.com 56:37d1736bd896 223 VL6180X *sensor_right;
davide.aliprandi@st.com 56:37d1736bd896 224 STMPE1600 *stmpe1600;
Davidroid 57:fa4c622b04a7 225 Switch *the_switch;
davide.aliprandi@st.com 56:37d1736bd896 226 Display *display;
davide.aliprandi@st.com 56:37d1736bd896 227
davide.aliprandi@st.com 56:37d1736bd896 228 private:
davide.aliprandi@st.com 56:37d1736bd896 229 STMPE1600DigiOut *_gpio0_top;
davide.aliprandi@st.com 56:37d1736bd896 230 STMPE1600DigiOut *_gpio0_bottom;
davide.aliprandi@st.com 56:37d1736bd896 231 STMPE1600DigiOut *_gpio0_left;
davide.aliprandi@st.com 56:37d1736bd896 232 STMPE1600DigiOut *_gpio0_right;
Davidroid 57:fa4c622b04a7 233 static XNucleo6180XA1 *_instance;
davide.aliprandi@st.com 56:37d1736bd896 234 };
davide.aliprandi@st.com 56:37d1736bd896 235
davide.aliprandi@st.com 56:37d1736bd896 236 #endif /* __X_NUCLEO_6180XA1_H */