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:
gallonm
Date:
Wed Oct 28 13:07:59 2015 +0000
Revision:
20:dd8390d615bf
Parent:
19:39ea6bab0e5b
Child:
56:37d1736bd896
Removed PollDelay and introduced simply wait_ms function.; Updated file platform.h.; Fixed all FIXME.; Fixed error printing.; Updated x_nucleo_6180xa1.cpp file.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gallonm 1:1de1ea2994d9 1 /*******************************************************************************
gallonm 10:4954b09b72d8 2 ################################################################################
gallonm 10:4954b09b72d8 3 #
gallonm 10:4954b09b72d8 4 # This program is free software; you can redistribute it and/or modify it under
gallonm 10:4954b09b72d8 5 # the terms of the GNU General Public License version 2 and only version 2 as
gallonm 10:4954b09b72d8 6 # published by the Free Software Foundation.
gallonm 10:4954b09b72d8 7 #
gallonm 10:4954b09b72d8 8 # This program is distributed in the hope that it will be useful, but WITHOUT
gallonm 10:4954b09b72d8 9 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
gallonm 10:4954b09b72d8 10 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
gallonm 10:4954b09b72d8 11 # details.
gallonm 10:4954b09b72d8 12 #
gallonm 10:4954b09b72d8 13 # You should have received a copy of the GNU General Public License along with
gallonm 10:4954b09b72d8 14 # this program; if not, write to the Free Software Foundation, Inc.,
gallonm 10:4954b09b72d8 15 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
gallonm 10:4954b09b72d8 16 #
gallonm 10:4954b09b72d8 17 #------------------------------------------------------------------------------
gallonm 10:4954b09b72d8 18 # Imaging Division
gallonm 10:4954b09b72d8 19 ################################################################################
gallonm 1:1de1ea2994d9 20 ********************************************************************************/
gallonm 1:1de1ea2994d9 21
gallonm 1:1de1ea2994d9 22
gallonm 10:4954b09b72d8 23 /* vl6180x_platform.h STM32 Nucleo F401 single device sample code project */
gallonm 1:1de1ea2994d9 24
gallonm 1:1de1ea2994d9 25 #ifndef VL6180x_PLATFORM
gallonm 1:1de1ea2994d9 26 #define VL6180x_PLATFORM
gallonm 1:1de1ea2994d9 27
gallonm 10:4954b09b72d8 28
gallonm 1:1de1ea2994d9 29 #include "vl6180x_def.h"
gallonm 1:1de1ea2994d9 30
gallonm 1:1de1ea2994d9 31
gallonm 10:4954b09b72d8 32 #define VL6180x_SINGLE_DEVICE_DRIVER 0
gallonm 10:4954b09b72d8 33 #define VL6180x_RANGE_STATUS_ERRSTRING 1
gallonm 16:0d4776564733 34 #define VL6180X_SAFE_POLLING_ENTER 0
gallonm 16:0d4776564733 35 #define VL6180X_LOG_ENABLE 0
gallonm 20:dd8390d615bf 36 #define MY_LOG 1
gallonm 1:1de1ea2994d9 37
gallonm 1:1de1ea2994d9 38 #define VL6180x_DEV_DATA_ATTR
gallonm 1:1de1ea2994d9 39 #define ROMABLE_DATA
gallonm 1:1de1ea2994d9 40
gallonm 1:1de1ea2994d9 41
gallonm 1:1de1ea2994d9 42 #if VL6180X_LOG_ENABLE
gallonm 1:1de1ea2994d9 43 /* dot not include non ansi here trace was a case :( */
gallonm 1:1de1ea2994d9 44 #ifdef TRACE
gallonm 1:1de1ea2994d9 45 #include "diag/trace.h"
gallonm 1:1de1ea2994d9 46 extern volatile uint32_t g_TickCnt;
gallonm 1:1de1ea2994d9 47 #define LOG_GET_TIME() g_TickCnt
gallonm 10:4954b09b72d8 48 //#define LOG_GET_TIME() HAL_GetTick()
gallonm 1:1de1ea2994d9 49 #else
gallonm 1:1de1ea2994d9 50 /* these is nto stm32 vl6180x GNuArm eclpse build*/
gallonm 1:1de1ea2994d9 51 #define trace_printf(...) (void)0
gallonm 1:1de1ea2994d9 52 #define LOG_GET_TIME() (int)0 /* add your code here expect to be an integer native (%d) type value */
gallonm 1:1de1ea2994d9 53 #endif
gallonm 1:1de1ea2994d9 54
gallonm 1:1de1ea2994d9 55
gallonm 1:1de1ea2994d9 56
gallonm 1:1de1ea2994d9 57 #define LOG_FUNCTION_START(fmt, ... ) \
gallonm 1:1de1ea2994d9 58 trace_printf("beg %s start @%d\t" fmt "\n", __func__, LOG_GET_TIME(), ##__VA_ARGS__)
gallonm 1:1de1ea2994d9 59
gallonm 1:1de1ea2994d9 60 #define LOG_FUNCTION_END(status)\
gallonm 1:1de1ea2994d9 61 trace_printf("end %s @%d %d\n", __func__, LOG_GET_TIME(), (int)status)
gallonm 1:1de1ea2994d9 62
gallonm 1:1de1ea2994d9 63 #define LOG_FUNCTION_END_FMT(status, fmt, ... )\
gallonm 1:1de1ea2994d9 64 trace_printf("End %s @%d %d\t"fmt"\n" , __func__, LOG_GET_TIME(), (int)status, ##__VA_ARGS__)
gallonm 1:1de1ea2994d9 65
gallonm 1:1de1ea2994d9 66 #define VL6180x_ErrLog(msg, ... )\
gallonm 1:1de1ea2994d9 67 do{\
gallonm 1:1de1ea2994d9 68 trace_printf("ERR in %s line %d\n" msg, __func__, __LINE__, ##__VA_ARGS__);\
gallonm 1:1de1ea2994d9 69 }while(0)
gallonm 1:1de1ea2994d9 70
gallonm 1:1de1ea2994d9 71 #else /* VL6180X_LOG_ENABLE no logging */
mapellil 19:39ea6bab0e5b 72 //void OnErrLog(void);
gallonm 20:dd8390d615bf 73 #define LOG_FUNCTION_START(...) (void)0
gallonm 20:dd8390d615bf 74 #define LOG_FUNCTION_END(...) (void)0
gallonm 20:dd8390d615bf 75 #define LOG_FUNCTION_END_FMT(...) (void)0
mapellil 19:39ea6bab0e5b 76 #define VL6180x_ErrLog(... ) //OnErrLog() //(void)0
gallonm 16:0d4776564733 77 #endif
gallonm 16:0d4776564733 78
gallonm 16:0d4776564733 79
gallonm 20:dd8390d615bf 80 #ifdef MY_LOG /* define printf as pc.printf in order to change the baudrate */
gallonm 16:0d4776564733 81 extern Serial pc;
gallonm 16:0d4776564733 82 #define printf(...) pc.printf(__VA_ARGS__)
gallonm 1:1de1ea2994d9 83 #endif
gallonm 1:1de1ea2994d9 84
gallonm 1:1de1ea2994d9 85
gallonm 10:4954b09b72d8 86 #if VL6180x_SINGLE_DEVICE_DRIVER
gallonm 10:4954b09b72d8 87 #error "VL6180x_SINGLE_DEVICE_DRIVER must be set"
gallonm 10:4954b09b72d8 88 #endif
gallonm 10:4954b09b72d8 89
gallonm 10:4954b09b72d8 90 struct MyVL6180Dev_t {
gallonm 20:dd8390d615bf 91 struct VL6180xDevData_t Data;
gallonm 20:dd8390d615bf 92 uint8_t I2cAddr;
gallonm 20:dd8390d615bf 93 //uint8_t DevID;
licio.mapelli@st.com 8:f943a1fca15f 94
gallonm 20:dd8390d615bf 95 //misc flags for application
gallonm 10:4954b09b72d8 96 unsigned Present:1;
gallonm 10:4954b09b72d8 97 unsigned Ready:1;
gallonm 10:4954b09b72d8 98 };
gallonm 10:4954b09b72d8 99 typedef struct MyVL6180Dev_t *VL6180xDev_t;
gallonm 1:1de1ea2994d9 100
gallonm 10:4954b09b72d8 101 #define VL6180xDevDataGet(dev, field) (dev->Data.field)
gallonm 10:4954b09b72d8 102 #define VL6180xDevDataSet(dev, field, data) (dev->Data.field)=(data)
gallonm 1:1de1ea2994d9 103
gallonm 1:1de1ea2994d9 104
gallonm 1:1de1ea2994d9 105 #endif /* VL6180x_PLATFORM */
gallonm 1:1de1ea2994d9 106
gallonm 1:1de1ea2994d9 107
gallonm 1:1de1ea2994d9 108