39 #include "drv_digital_out.h" 40 #include "drv_digital_in.h" 41 #include "drv_i2c_master.h" 54 #define PROXIMITY10_MAP_MIKROBUS( cfg, mikrobus ) \ 55 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \ 56 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \ 57 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT ) 64 #define PROXIMITY10_RETVAL uint8_t 66 #define PROXIMITY10_OK 0x00 67 #define PROXIMITY10_INIT_ERROR 0xFF 74 #define PROXIMITY10_DEFAULT_DEV_ADDR 0x5A 81 #define PROXIMITY10_PART_ID_REG 0x00 82 #define PROXIMITY10_REV_ID_REG 0x01 83 #define PROXIMITY10_SEQ_ID_REG 0x02 84 #define PROXIMITY10_INT_CFG_REG 0x03 85 #define PROXIMITY10_IRQ_EN_REG 0x04 86 #define PROXIMITY10_IRQ_MODE1_REG 0x05 87 #define PROXIMITY10_IRQ_MODE2_REG 0x06 88 #define PROXIMITY10_HW_KEY_REG 0x07 89 #define PROXIMITY10_MEAS_RATE_REG 0x08 90 #define PROXIMITY10_ALS_RATE_REG 0x09 91 #define PROXIMITY10_PS_RATE_REG 0x0A 92 #define PROXIMITY10_ALS_LOW_TH_REG 0x0B 93 #define PROXIMITY10_ALS_HIGH_TH_REG 0x0D 94 #define PROXIMITY10_PS_LED21_REG 0x0F 95 #define PROXIMITY10_PS_LED3_REG 0x10 96 #define PROXIMITY10_PS1_TH_REG 0x11 97 #define PROXIMITY10_PS2_TH_REG 0x13 98 #define PROXIMITY10_PS3_TH_REG 0x15 99 #define PROXIMITY10_PARAM_WR_REG 0x17 100 #define PROXIMITY10_COMMAND_REG 0x18 101 #define PROXIMITY10_RESPONSE_REG 0x20 102 #define PROXIMITY10_IRQ_STATUS_REG 0x21 103 #define PROXIMITY10_ALS_VIS_DATA_REG 0x22 104 #define PROXIMITY10_ALS_IR_DATA_REG 0x24 105 #define PROXIMITY10_PS1_DATA_REG 0x26 106 #define PROXIMITY10_PS2_DATA_REG 0x28 107 #define PROXIMITY10_PS3_DATA_REG 0x2A 108 #define PROXIMITY10_AUX_DATA_REG 0x2C 109 #define PROXIMITY10_PARAM_RD_REG 0x2E 110 #define PROXIMITY10_CHIP_STATUS_REG 0x30 111 #define PROXIMITY10_ANA_IN_KEY_REG 0x3B 118 #define PROXIMITY10_INT_HOST_CLEAR 0x00 119 #define PROXIMITY10_INT_AUTO_CLEAR 0x02 120 #define PROXIMITY10_INT_PIN_EN 0x01 122 #define PROXIMITY10_CMD_INT_EN 0x20 123 #define PROXIMITY10_PS3_INT_EN 0x10 124 #define PROXIMITY10_PS2_INT_EN 0x08 125 #define PROXIMITY10_PS1_INT_EN 0x04 126 #define PROXIMITY10_ALS_INT1_EN 0x02 127 #define PROXIMITY10_ALS_INT0_EN 0x01 128 #define PROXIMITY10_ALL_INT_DIS 0x00 130 #define PROXIMITY10_PS2_INT_MEAS_COMPLETE 0x00 131 #define PROXIMITY10_PS2_INT_MEAS_CROSS_TH 0x40 132 #define PROXIMITY10_PS2_INT_MEAS_GREATER_TH 0xC0 133 #define PROXIMITY10_PS1_INT_MEAS_COMPLETE 0x00 134 #define PROXIMITY10_PS1_INT_MEAS_CROSS_TH 0x10 135 #define PROXIMITY10_PS1_INT_MEAS_GREATER_TH 0x30 136 #define PROXIMITY10_CMD_INT_RESP_WRITTEN 0x00 137 #define PROXIMITY10_CMD_INT_RESP_ERROR 0x04 138 #define PROXIMITY10_PS3_INT_MEAS_COMPLETE 0x00 139 #define PROXIMITY10_PS3_INT_MEAS_CROSS_TH 0x01 140 #define PROXIMITY10_PS3_INT_MEAS_GREATER_TH 0x03 142 #define PROXIMITY10_HW_KEY 0x17 144 #define PROXIMITY10_DEV_WAKEUP_EVERY_10MS 0x84 145 #define PROXIMITY10_DEV_WAKEUP_EVERY_20MS 0x94 146 #define PROXIMITY10_DEV_WAKEUP_EVERY_100MS 0xB9 147 #define PROXIMITY10_DEV_WAKEUP_EVERY_496MS 0xDF 148 #define PROXIMITY10_DEV_WAKEUP_EVERY_1984MS 0xFF 150 #define PROXIMITY10_AUTONOM_MEAS_DIS 0x00 151 #define PROXIMITY10_MEAS_AFTER_EVERY_WAKEUP 0x08 152 #define PROXIMITY10_MEAS_AFTER_10_TIMES_WAKEUP 0x32 153 #define PROXIMITY10_MEAS_AFTER_100_TIMES_WAKEUP 0x69 155 #define PROXIMITY10_LED_NO_CURRENT 0x00 156 #define PROXIMITY10_LED_MIN_CURRENT 0x01 157 #define PROXIMITY10_LED_MAX_CURRENT 0x0F 164 #define PROXIMITY10_INVALID_CMD_ENCOUNT 0x80 165 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_PS1 0x88 166 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_PS2 0x89 167 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_PS3 0x8A 168 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_ALS_VIS 0x8C 169 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_ALS_IR 0x8D 170 #define PROXIMITY10_ADC_OVRFLOW_ENCOUNT_AUX 0x8E 177 #define PROXIMITY10_CMD_INT_FLAG 0x20 178 #define PROXIMITY10_PS3_INT_FLAG 0x10 179 #define PROXIMITY10_PS2_INT_FLAG 0x08 180 #define PROXIMITY10_PS1_INT_FLAG 0x04 181 #define PROXIMITY10_ALS_INT_FLAG 0x03 182 #define PROXIMITY10_INT_CLEARED 0x00 184 #define PROXIMITY10_RUNNING_FLAG 0x04 185 #define PROXIMITY10_SUSPEND_FLAG 0x02 186 #define PROXIMITY10_SLEEP_FLAG 0x01 193 #define PROXIMITY10_I2C_ADDR_PARAM 0x00 194 #define PROXIMITY10_CHLIST_PARAM 0x01 195 #define PROXIMITY10_PSLED12_SEL_PARAM 0x02 196 #define PROXIMITY10_PSLED3_SEL_PARAM 0x03 197 #define PROXIMITY10_PS_ENCODING_PARAM 0x05 198 #define PROXIMITY10_ALS_ENCODING_PARAM 0x06 199 #define PROXIMITY10_PS1_ADCMUX_PARAM 0x07 200 #define PROXIMITY10_PS2_ADCMUX_PARAM 0x08 201 #define PROXIMITY10_PS3_ADCMUX_PARAM 0x09 202 #define PROXIMITY10_PS_ADC_COUNT_PARAM 0x0A 203 #define PROXIMITY10_PS_ADC_GAIN_PARAM 0x0B 204 #define PROXIMITY10_PS_ADC_MISC_PARAM 0x0C 205 #define PROXIMITY10_ALS_IR_ADCMUX_PARAM 0x0E 206 #define PROXIMITY10_AUX_ADCMUX_PARAM 0x0F 207 #define PROXIMITY10_ALS_VIS_ADC_COUNT_PARAM 0x10 208 #define PROXIMITY10_ALS_VIS_ADC_GAIN_PARAM 0x11 209 #define PROXIMITY10_ALS_VIS_ADC_MISC_PARAM 0x12 210 #define PROXIMITY10_ALS_HYST_PARAM 0x16 211 #define PROXIMITY10_PS_HYST_PARAM 0x17 212 #define PROXIMITY10_PS_HISTORY_PARAM 0x18 213 #define PROXIMITY10_ALS_HISTORY_PARAM 0x19 214 #define PROXIMITY10_ADC_OFFSET_PARAM 0x1A 215 #define PROXIMITY10_LED_REC_PARAM 0x1C 216 #define PROXIMITY10_ALS_IR_ADC_COUNT_PARAM 0x1D 217 #define PROXIMITY10_ALS_IR_ADC_GAIN_PARAM 0x1E 218 #define PROXIMITY10_ALS_IR_ADC_MISC_PARAM 0x1F 225 #define PROXIMITY10_EN_AUX 0x40 226 #define PROXIMITY10_EN_ALS_IR 0x20 227 #define PROXIMITY10_EN_ALS_VIS 0x10 228 #define PROXIMITY10_EN_PS3 0x04 229 #define PROXIMITY10_EN_PS2 0x02 230 #define PROXIMITY10_EN_PS1 0x01 232 #define PROXIMITY10_NO_LED_DRIVE 0x00 233 #define PROXIMITY10_LED1_DRIVE_EN 0x01 234 #define PROXIMITY10_LED2_DRIVE_EN 0x02 235 #define PROXIMITY10_LED3_DRIVE_EN 0x04 237 #define PROXIMITY10_ADC_REC_1_CLOCK 0x00 238 #define PROXIMITY10_ADC_REC_7_CLOCK 0x10 239 #define PROXIMITY10_ADC_REC_15_CLOCK 0x20 240 #define PROXIMITY10_ADC_REC_31_CLOCK 0x30 241 #define PROXIMITY10_ADC_REC_63_CLOCK 0x40 242 #define PROXIMITY10_ADC_REC_127_CLOCK 0x50 243 #define PROXIMITY10_ADC_REC_255_CLOCK 0x60 244 #define PROXIMITY10_ADC_REC_511_CLOCK 0x70 246 #define PROXIMITY10_ADC_CLOCK_DIV_1 0x00 247 #define PROXIMITY10_ADC_CLOCK_DIV_2 0x01 248 #define PROXIMITY10_ADC_CLOCK_DIV_4 0x02 249 #define PROXIMITY10_ADC_CLOCK_DIV_8 0x03 250 #define PROXIMITY10_ADC_CLOCK_DIV_16 0x04 251 #define PROXIMITY10_ADC_CLOCK_DIV_32 0x05 252 #define PROXIMITY10_ADC_CLOCK_DIV_64 0x06 253 #define PROXIMITY10_ADC_CLOCK_DIV_128 0x07 255 #define PROXIMITY10_NORMAL_SIGNAL_RANGE 0x00 256 #define PROXIMITY10_HIGH_SIGNAL_RANGE 0x20 257 #define PROXIMITY10_RAW_ADC_MEAS_MODE 0x00 258 #define PROXIMITY10_NORMAL_PROX_MEAS_MODE 0x04 260 #define PROXIMITY10_ADC_INPUT_SMALL_IR 0x00 261 #define PROXIMITY10_ADC_INPUT_LARGE_IR 0x03 262 #define PROXIMITY10_ADC_INPUT_VIS_PHOTODIODE 0x02 263 #define PROXIMITY10_ADC_INPUT_NO_PHOTODIODE 0x06 264 #define PROXIMITY10_ADC_INPUT_GND 0x25 265 #define PROXIMITY10_ADC_INPUT_TEMP 0x65 266 #define PROXIMITY10_ADC_INPUT_VDD 0x75 268 #define PROXIMITY10_2_CONS_SAMPLES 0x03 269 #define PROXIMITY10_3_CONS_SAMPLES 0x07 270 #define PROXIMITY10_8_CONS_SAMPLES 0xFF 277 #define PROXIMITY10_PARAM_QUERY_CMD 0x80 278 #define PROXIMITY10_PARAM_SET_CMD 0xA0 279 #define PROXIMITY10_PARAM_AND_CMD 0xC0 280 #define PROXIMITY10_PARAM_OR_CMD 0xE0 281 #define PROXIMITY10_NOP_CMD 0x00 282 #define PROXIMITY10_RESET_CMD 0x01 283 #define PROXIMITY10_BUSADDR_CMD 0x02 284 #define PROXIMITY10_PS_FORCE_CMD 0x05 285 #define PROXIMITY10_ALS_FORCE_CMD 0x06 286 #define PROXIMITY10_PSALS_FORCE_CMD 0x07 287 #define PROXIMITY10_PS_PAUSE_CMD 0x09 288 #define PROXIMITY10_ALS_PAUSE_CMD 0x0A 289 #define PROXIMITY10_PSALS_PAUSE_CMD 0x0B 290 #define PROXIMITY10_PS_AUTO_CMD 0x0D 291 #define PROXIMITY10_ALS_AUTO_CMD 0x0E 292 #define PROXIMITY10_PSALS_AUTO_CMD 0x0F 299 #define PROXIMITY10_INT_CLEAR_DIS 0x00 300 #define PROXIMITY10_INT_CLEAR_EN 0x01 301 #define PROXIMITY10_CLEAR_INT_CMD 0xFF 308 #define PROXIMITY10_OK 0x00 309 #define PROXIMITY10_INVALID_REG_ADDR 0x01 310 #define PROXIMITY10_INVALID_PARAM_ADDR 0x02 311 #define PROXIMITY10_INVALID_CMD 0x03 535 #endif // _PROXIMITY10_H_ Click configuration structure definition.
Definition: proximity10.h:343
uint8_t proximity10_check_int_pin(proximity10_t *ctx)
Check INT Pin function.
hal_i2c_address_t slave_address
Definition: proximity10.h:336
uint8_t proximity10_param_or(proximity10_t *ctx, uint8_t param_addr, uint8_t param_value)
Parameter OR function.
void proximity10_default_cfg(proximity10_t *ctx)
Click Default Configuration function.
uint8_t proximity10_send_command(proximity10_t *ctx, uint8_t prox_command)
Command Send function.
i2c_master_t i2c
Definition: proximity10.h:332
pin_name_t sda
Definition: proximity10.h:348
PROXIMITY10_RETVAL proximity10_init(proximity10_t *ctx, proximity10_cfg_t *cfg)
Initialization function.
uint8_t proximity10_generic_read(proximity10_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
pin_name_t int_pin
Definition: proximity10.h:352
hal_i2c_speed_t i2c_speed
Definition: proximity10.h:356
uint8_t proximity10_param_and(proximity10_t *ctx, uint8_t param_addr, uint8_t param_value)
Parameter AND function.
uint8_t proximity10_param_set(proximity10_t *ctx, uint8_t param_addr, uint8_t param_value)
Parameter Set function.
#define PROXIMITY10_RETVAL
Definition: proximity10.h:64
hal_i2c_address_t i2c_address
Definition: proximity10.h:357
uint8_t proximity10_generic_write(proximity10_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
uint8_t proximity10_check_chip_status(proximity10_t *ctx, uint8_t bit_mask)
Check Chip Status function.
Click ctx object definition.
Definition: proximity10.h:324
uint8_t proximity10_check_int_status(proximity10_t *ctx, uint8_t bit_mask, uint8_t clear_en)
Check INT Flags function.
digital_in_t int_pin
Definition: proximity10.h:328
void proximity10_cfg_setup(proximity10_cfg_t *cfg)
Config Object Initialization function.
uint8_t proximity10_param_query(proximity10_t *ctx, uint8_t param_addr)
Parameter Query function.
pin_name_t scl
Definition: proximity10.h:347