proxfusion2 2.0.0.0
proxfusion2.h File Reference

This file contains API for ProxFusion 2 Click driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"

Go to the source code of this file.

Data Structures

struct  proxfusion2_t
 Click ctx object definition. More...
 
struct  proxfusion2_cfg_t
 Click configuration structure definition. More...
 

Macros

#define PROXFUSION2_MAP_MIKROBUS(cfg, mikrobus)
 
#define PROXFUSION2_OK   0
 
#define PROXFUSION2_ERROR   -1
 
#define PROXFUSION2_REG_PRODUCT_NUMBER   0x00
 
#define PROXFUSION2_REG_SOFTWARE_NUMBER   0x01
 
#define PROXFUSION2_REG_HARDWARE_NUMBER   0x02
 
#define PROXFUSION2_REG_SYSTEM_FLAGS   0x10
 
#define PROXFUSION2_REG_GLOBAL_EVENTS   0x11
 
#define PROXFUSION2_REG_PROXFUSION_UI_FLAGS   0x12
 
#define PROXFUSION2_REG_HYSTERESIS_UI_FLAGS   0x13
 
#define PROXFUSION2_REG_HYSTERESIS_UI_OUTPUT_LSB   0x14
 
#define PROXFUSION2_REG_HYSTERESIS_UI_OUTPUT_MSB   0x15
 
#define PROXFUSION2_REG_ALS_UI_FLAGS   0x16
 
#define PROXFUSION2_REG_ALS_UI_OUTPUT_LSB   0x17
 
#define PROXFUSION2_REG_ALS_UI_OUTPUT_MSB   0x18
 
#define PROXFUSION2_REG_HALL_EFFECT_UI_FLAGS   0x19
 
#define PROXFUSION2_REG_HALL_EFFECT_UI_OUTPUT_LSB   0x1A
 
#define PROXFUSION2_REG_HALL_EFFECT_UI_OUTPUT_MSB   0x1B
 
#define PROXFUSION2_REG_TEMPERATURE_UI_FLAGS   0x1C
 
#define PROXFUSION2_REG_TEMPERATURE_UI_OUTPUT_LSB   0x1D
 
#define PROXFUSION2_REG_TEMPERATURE_UI_OUTPUT_MSB   0x1E
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH0_LSB   0x20
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH0_MSB   0x21
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH1_LSB   0x22
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH1_MSB   0x23
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH2_LSB   0x24
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH2_MSB   0x25
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH3_LSB   0x26
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH3_MSB   0x27
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH4_LSB   0x28
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH4_MSB   0x29
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH5_LSB   0x2A
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH5_MSB   0x2B
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH6_LSB   0x2C
 
#define PROXFUSION2_REG_CHANNEL_COUNTS_CH6_MSB   0x2D
 
#define PROXFUSION2_REG_LTA_VALUES_CH0_LSB   0x30
 
#define PROXFUSION2_REG_LTA_VALUES_CH0_MSB   0x31
 
#define PROXFUSION2_REG_LTA_VALUES_CH1_LSB   0x32
 
#define PROXFUSION2_REG_LTA_VALUES_CH1_MSB   0x33
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_00   0x40
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_01   0x41
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_10   0x42
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_11   0x43
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_20   0x44
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_21   0x45
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_30   0x46
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_31   0x47
 
#define PROXFUSION2_REG_PROXFUSION_SETTINGS_4   0x48
 
#define PROXFUSION2_REG_PROX_THRESHOLD_CH0   0x50
 
#define PROXFUSION2_REG_PROX_THRESHOLD_CH1   0x52
 
#define PROXFUSION2_REG_TOUCH_THRESHOLD_CH0   0x51
 
#define PROXFUSION2_REG_TOUCH_THRESHOLD_CH1   0x53
 
#define PROXFUSION2_REG_DISCRETE_UI_HALT_TIME   0x54
 
#define PROXFUSION2_REG_HYSTERESIS_UI_SETTINGS   0x60
 
#define PROXFUSION2_REG_HYSTERESIS_UI_FILTER_HALT_THRESHOLD   0x61
 
#define PROXFUSION2_REG_HYSTERESIS_UI_PROXIMITY_THRESHOLD   0x62
 
#define PROXFUSION2_REG_HYSTERESIS_UI_TOUCH_THRESHOLD   0x63
 
#define PROXFUSION2_REG_ALS_settings_0   0x70
 
#define PROXFUSION2_REG_ALS_settings_1   0x71
 
#define PROXFUSION2_REG_ALS_SETTINGS_FILTER_SPEED   0x72
 
#define PROXFUSION2_REG_MULTIPLIERS_CH34   0x73
 
#define PROXFUSION2_REG_ALS_DARK_THRESHOLD   0x80
 
#define PROXFUSION2_REG_ALS_LIGHT_THRESHOLD   0x81
 
#define PROXFUSION2_REG_ALS_RAW_TO_LUX_DIVIDER   0x82
 
#define PROXFUSION2_REG_ALS_IR_COMPENSATION   0x83
 
#define PROXFUSION2_REG_HALL_EFFECT_SETTINGS_0   0x90
 
#define PROXFUSION2_REG_HALL_EFFECT_SETTINGS_1   0x91
 
#define PROXFUSION2_REG_COMPENSATION_CH56   0x92
 
#define PROXFUSION2_REG_MULTIPLIERS_CH56   0x93
 
#define PROXFUSION2_REG_HALL_EFFECT_UI_SETTINGS   0xA0
 
#define PROXFUSION2_REG_HALL_PROXIMITY_THRESHOLD   0xA1
 
#define PROXFUSION2_REG_HALL_TOUCH_THRESHOLD   0xA2
 
#define PROXFUSION2_REG_TEMPERATURE_UI_SETTINGS   0xC0
 
#define PROXFUSION2_REG_MULTIPLIER_CH2   0xC1
 
#define PROXFUSION2_REG_TEMPERATURE_CALIBRATION_0   0xC2
 
#define PROXFUSION2_REG_TEMPERATURE_CALIBRATION_1   0xC3
 
#define PROXFUSION2_REG_SYSTEM_SETTINGS   0xD0
 
#define PROXFUSION2_REG_ACTIVE_CHANNELS   0xD1
 
#define PROXFUSION2_REG_POWER_MODE_SETTINGS   0xD2
 
#define PROXFUSION2_REG_NORMAL_POWER_MODE_REPORT_RATE   0xD3
 
#define PROXFUSION2_REG_LOW_POWER_MODE_REPORT_RATE   0xD4
 
#define PROXFUSION2_REG_UALTRA_LOW_POWER_MODE_REPORT_RATE   0xD5
 
#define PROXFUSION2_REG_AUTO_MODE_TIMER   0xD6
 
#define PROXFUSION2_REG_GLOBAL_EVENT_MASK   0xD7
 
#define PROXFUSION2_REG_RDY_TIMEOUT_PERIOD   0xD8
 
#define PROXFUSION2_REG_I2C_SETTINGS   0xD9
 
#define PROXFUSION2_SF_SHOW_RESET   0x80
 
#define PROXFUSION2_SF_NO_RESET   0x00
 
#define PROXFUSION2_SF_NORMAL_MODE   0x00
 
#define PROXFUSION2_SF_ULTRA_LOW_POWER_MODE   0x10
 
#define PROXFUSION2_SF_LOW_POWER_MODE   0x08
 
#define PROXFUSION2_SF_HALT_MODE   0x00
 
#define PROXFUSION2_SF_ACTIVE_ATI   0x04
 
#define PROXFUSION2_SF_NO_ATI   0x00
 
#define PROXFUSION2_SF_NO_NEW_EVENT   0x00
 
#define PROXFUSION2_SF_NEW_EVENT   0x02
 
#define PROXFUSION2_SF_NOT_PERFORMING_NM_UPDATE   0x00
 
#define PROXFUSION2_SF_BUSY_PERFORMING_NM_UPDATE   0x02
 
#define PROXFUSION2_GE_POWER_MODE_EVENT_ACTIVE   0x40
 
#define PROXFUSION2_GE_SYS_EVENT_ACTIVE   0x20
 
#define PROXFUSION2_GE_TEMP_EVENT_ACTIVE   0x10
 
#define PROXFUSION2_GE_HYSTERESIS_UI_EVENT_ACTIVE   0x08
 
#define PROXFUSION2_GE_ALS_EVENT_ACTIVE   0x04
 
#define PROXFUSION2_GE_HALL_EVENT_ACTIVE   0x02
 
#define PROXFUSION2_GE_PROXSENSE_EVENT_ACTIVE   0x01
 
#define PROXFUSION2_PFUIF_CH1_TOUCH_DELTA_BELOW   0x00
 
#define PROXFUSION2_PFUIF_CH0_TOUCH_DELTA_BELOW   0x00
 
#define PROXFUSION2_PFUIF_CH1_TOUCH_DELTA_ABOVE   0x20
 
#define PROXFUSION2_PFUIF_CH0_TOUCH_DELTA_ABOVE   0x10
 
#define PROXFUSION2_PFUIF_CH1_PROXIMITY_DELTA_BELOW   0x00
 
#define PROXFUSION2_PFUIF_CH0_PROXIMITY_DELTA_BELOW   0x00
 
#define PROXFUSION2_PFUIF_CH1_PROXIMITY_DELTA_ABOVE   0x02
 
#define PROXFUSION2_PFUIF_CH0_PROXIMITY_DELTA_ABOVE   0x01
 
#define PROXFUSION2_HIUIF_COUNTS_RISE_ABOVE_THE_LTA   0x00
 
#define PROXFUSION2_HIUIF_COUNTS_FALL_BELOW_THE_LTA   0x04
 
#define PROXFUSION2_HIUIF_DELTA_BELOW_TOUCH_THRESHOLD   0x00
 
#define PROXFUSION2_HIUIF_DELTA_ABOVE_TOUCH_THRESHOLD   0x02
 
#define PROXFUSION2_HIUIF_DELTA_BELOW_PROX_THRESHOLD   0x00
 
#define PROXFUSION2_HIUIF_DELTA_ABOVE_PROX_THRESHOLD   0x01
 
#define PROXFUSION2_ALSUIF_LIGHT_INDICATION   0x00
 
#define PROXFUSION2_ALSUIF_DARK_INDICATION   0x80
 
#define PROXFUSION2_HEUIF_FIELD_STRENGTH_BELOW_TOUCH_LEVEL   0x00
 
#define PROXFUSION2_HEUIF_FIELD_STRENGTH_ABOVE_TOUCH_LEVEL   0x04
 
#define PROXFUSION2_HEUIF_FIELD_STRENGTH_BELOW_PROX_LEVEL   0x00
 
#define PROXFUSION2_HEUIF_FIELD_STRENGTH_ABOVE_PROX_LEVEL   0x02
 
#define PROXFUSION2_HEUIF_NORTH_FIELD_PRESENT   0x00
 
#define PROXFUSION2_HEUIF_SOUTH_FIELD_PRESENT   0x01
 
#define PROXFUSION2_TUIF_TEMPERATURE_BELOW_TRIP_LEVEL   0x00
 
#define PROXFUSION2_TUIF_TEMPERATURE_ABOVE_TRIP_LEVEL   0x80
 
#define PROXFUSION2_PFS00_CAPACITIVE_SENSING_MODE   0x00
 
#define PROXFUSION2_PFS00_TX0_AND_TX1_DISABLED   0x00
 
#define PROXFUSION2_PFS00_RX0_AND_RX1_DISABLED   0x00
 
#define PROXFUSION2_PFS00_RX0_ENABLE   0x01
 
#define PROXFUSION2_PFS00_RX1_ENABLE   0x02
 
#define PROXFUSION2_PFS00_RX0_AND_RX1_ENABLE   0x03
 
#define PROXFUSION2_PFS01_INDUCTIVE_SENSOR_MODE   0x80
 
#define PROXFUSION2_PFS01_MULTIPLIER_RANGE_LARGE   0x00
 
#define PROXFUSION2_PFS01_MULTIPLIER_RANGE_SMALL   0x01
 
#define PROXFUSION2_PFS01_TX0_AND_TX1_DISABLED   0x00
 
#define PROXFUSION2_PFS01_TX0_AND_TX1_ENABLE   0x03
 
#define PROXFUSION2_PFS10_CAPACITOR_15pF   0x00
 
#define PROXFUSION2_PFS10_CAPACITOR_60pF   0x40
 
#define PROXFUSION2_PFS10_FREQUENCY_DIVIDER_1_2   0x00
 
#define PROXFUSION2_PFS10_FREQUENCY_DIVIDER_1_4   0x10
 
#define PROXFUSION2_PFS10_FREQUENCY_DIVIDER_1_8   0x20
 
#define PROXFUSION2_PFS10_FREQUENCY_DIVIDER_1_16   0x30
 
#define PROXFUSION2_PFS10_ATI_MODE_DISABLE   0x00
 
#define PROXFUSION2_PFS10_PARTIAL_ATI   0x01
 
#define PROXFUSION2_PFS10_SEMI_PARTIAL_ATI   0x02
 
#define PROXFUSION2_PFS10_FULL_ATI   0x03
 
#define PROXFUSION2_PFS11_CAPACITOR_15pF   0x00
 
#define PROXFUSION2_PFS11_CAPACITOR_60pF   0x40
 
#define PROXFUSION2_PFS11_FREQUENCY_DIVIDER_1_2   0x00
 
#define PROXFUSION2_PFS11_FREQUENCY_DIVIDER_1_4   0x10
 
#define PROXFUSION2_PFS11_FREQUENCY_DIVIDER_1_8   0x20
 
#define PROXFUSION2_PFS11_FREQUENCY_DIVIDER_1_16   0x30
 
#define PROXFUSION2_PFS11_INTERNAL_RESISTOR_2_5uA_88kOhm   0x00
 
#define PROXFUSION2_PFS11_INTERNAL_RESISTOR_5uA_66kOhm   0x04
 
#define PROXFUSION2_PFS11_INTERNAL_RESISTOR_10uA_44kOhm   0x08
 
#define PROXFUSION2_PFS11_INTERNAL_RESISTOR_20uA_22kOhm   0x0C
 
#define PROXFUSION2_PFS11_ATI_MODE_DISABLE   0x00
 
#define PROXFUSION2_PFS11_PARTIAL_ATI   0x01
 
#define PROXFUSION2_PFS11_SEMI_PARTIAL_ATI   0x02
 
#define PROXFUSION2_PFS11_FULL_ATI   0x03
 
#define PROXFUSION2_PFS201_ATI_BASE_VALUE_75   0x00
 
#define PROXFUSION2_PFS201_ATI_BASE_VALUE_100   0x40
 
#define PROXFUSION2_PFS201_ATI_BASE_VALUE_150   0x80
 
#define PROXFUSION2_PFS201_ATI_BASE_VALUE_200   0xC0
 
#define PROXFUSION2_PFS4_HYSTERESIS_UI_DISABLED   0x00
 
#define PROXFUSION2_PFS4_HYSTERESIS_UI_ENABLE   0x40
 
#define PROXFUSION2_PFS4_BIDIRECTIONAL_DETECTION_DISABLED   0x00
 
#define PROXFUSION2_PFS4_BIDIRECTIONAL_DETECTION_ENABLE   0x20
 
#define PROXFUSION2_PFS4_AC_FILTER_ENABLED   0x00
 
#define PROXFUSION2_PFS4_AC_FILTER_DISABLED   0x10
 
#define PROXFUSION2_PFS4_LONG_TERM_AVERAGE_BETA_VALUE_7   0x00
 
#define PROXFUSION2_PFS4_LONG_TERM_AVERAGE_BETA_VALUE_8   0x04
 
#define PROXFUSION2_PFS4_LONG_TERM_AVERAGE_BETA_VALUE_9   0x08
 
#define PROXFUSION2_PFS4_LONG_TERM_AVERAGE_BETA_VALUE_10   0x0C
 
#define PROXFUSION2_PFS4_AC_FILTER_BETA_VALUE_1   0x00
 
#define PROXFUSION2_PFS4_AC_FILTER_BETA_VALUE_2   0x01
 
#define PROXFUSION2_PFS4_AC_FILTER_BETA_VALUE_3   0x02
 
#define PROXFUSION2_PFS4_AC_FILTER_BETA_VALUE_4   0x03
 
#define PROXFUSION2_HIUIS_TOUCH_HYSTERESIS_DISABLED   0x00
 
#define PROXFUSION2_HIUIS_TOUCH_HYSTERESIS_1_8_OF_THRESHOLD   0x20
 
#define PROXFUSION2_HIUIS_TOUCH_HYSTERESIS_1_4_OF_THRESHOLD   0x10
 
#define PROXFUSION2_HIUIS_TOUCH_HYSTERESIS_1_16_OF_THRESHOLD   0x30
 
#define PROXFUSION2_HIUIS_PROXIMITY_HYSTERESIS_DISABLED   0x00
 
#define PROXFUSION2_HIUIS_PROXIMITY_HYSTERESIS_1_8_OF_THRESHOLD   0x02
 
#define PROXFUSION2_HIUIS_PROXIMITY_HYSTERESIS_1_4_OF_THRESHOLD   0x01
 
#define PROXFUSION2_HIUIS_PROXIMITY_HYSTERESIS_1_16_OF_THRESHOLD   0x03
 
#define PROXFUSION2_TOUCH_DETECTED   0x01
 
#define PROXFUSION2_TOUCH_NOT_DETECTED   0x00
 
#define PROXFUSION2_AMBIENT_DARK   0x01
 
#define PROXFUSION2_AMBIENT_LIGHT   0x00
 
#define PROXFUSION2_HALL_NORTH   0x00
 
#define PROXFUSION2_HALL_SOUTH   0x01
 
#define PROXFUSION2_HALL_UNKNOWN   0x02
 
#define PROXFUSION2_HYSTERESIS_UI_OUTPUT   0x14
 
#define PROXFUSION2_ALS_UI_OUTPUT   0x17
 
#define PROXFUSION2_HALL_EFFECT_UI_OUTPUT   0x1A
 
#define PROXFUSION2_TEMPERATURE_UI_OUTPUT   0x1D
 

Functions

void proxfusion2_cfg_setup (proxfusion2_cfg_t *cfg)
 Config Object Initialization function.
 
err_t proxfusion2_init (proxfusion2_t *ctx, proxfusion2_cfg_t *cfg)
 Initialization function.
 
err_t proxfusion2_default_cfg (proxfusion2_t *ctx)
 Click Default Configuration function.
 
void proxfusion2_write_byte (proxfusion2_t *ctx, uint8_t reg, uint8_t d_data)
 Function for writing one byte into the register.
 
uint8_t proxfusion2_read_byte (proxfusion2_t *ctx, uint8_t reg)
 Function for reads one byte from register.
 
uint16_t proxfusion2_read_data (proxfusion2_t *ctx, uint8_t reg)
 Function for reads two byte from register.
 
err_t proxfusion2_check_communication (proxfusion2_t *ctx)
 Function for check communication by reading the device ID registers.
 
uint8_t proxfusion2_detect_touch (proxfusion2_t *ctx)
 Function for detect Touch.
 
uint8_t proxfusion2_detect_dark_light (proxfusion2_t *ctx, uint8_t *als_range)
 Function for read ambient light.
 
uint8_t proxfusion2_detect_hall (proxfusion2_t *ctx)
 Function for read Hall-effect.
 

Detailed Description

This file contains API for ProxFusion 2 Click driver.