vibromotor3 2.0.0.0
vibromotor3.h File Reference

This file contains API for Vibro Motor 3 Click Driver. More...

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

Go to the source code of this file.

Data Structures

struct  vibromotor3_t
 Vibro Motor 3 Click context object. More...
 
struct  vibromotor3_cfg_t
 Vibro Motor 3 Click configuration object. More...
 

Macros

#define VIBROMOTOR3_STATUS   0x00
 Vibro Motor 3 description register.
 
#define VIBROMOTOR3_MODE   0x01
 
#define VIBROMOTOR3_RT_PB_IN   0x02
 
#define VIBROMOTOR3_LIB_SEL   0x03
 
#define VIBROMOTOR3_WV_SEQ_1   0x04
 
#define VIBROMOTOR3_WV_SEQ_2   0x05
 
#define VIBROMOTOR3_WV_SEQ_3   0x06
 
#define VIBROMOTOR3_WV_SEQ_4   0x07
 
#define VIBROMOTOR3_WV_SEQ_5   0x08
 
#define VIBROMOTOR3_WV_SEQ_6   0x09
 
#define VIBROMOTOR3_WV_SEQ_7   0x0A
 
#define VIBROMOTOR3_WV_SEQ_8   0x0B
 
#define VIBROMOTOR3_REG_GO   0x0C
 
#define VIBROMOTOR3_OVERDRIVE_OFFS   0x0D
 
#define VIBROMOTOR3_SUSTAIN_P_OFFS   0x0E
 
#define VIBROMOTOR3_SUSTAIN_N_OFFS   0x0F
 
#define VIBROMOTOR3_BRAKE_OFF   0x10
 
#define VIBROMOTOR3_A_TO_V_CTRL   0x11
 
#define VIBROMOTOR3_A_TO_V_MIN_INPUT   0x12
 
#define VIBROMOTOR3_A_TO_V_MAX_INPUT   0x13
 
#define VIBROMOTOR3_A_TO_V_MIN_OUT   0x14
 
#define VIBROMOTOR3_A_TO_V_MAX_OUT   0x15
 
#define VIBROMOTOR3_RATED_VOLT   0x16
 
#define VIBROMOTOR3_OD_CLAMP_VOLT   0x17
 
#define VIBROMOTOR3_CAL_COMP   0x18
 
#define VIBROMOTOR3_CAL_BACK_EMF   0x19
 
#define VIBROMOTOR3_FEEDBACK_CTRL   0x1A
 
#define VIBROMOTOR3_CTRL1   0x1B
 
#define VIBROMOTOR3_CTRL2   0x1C
 
#define VIBROMOTOR3_CTRL3   0x1D
 
#define VIBROMOTOR3_CTRL4   0x1E
 
#define VIBROMOTOR3_CTRL5   0x1F
 
#define VIBROMOTOR3_LRA_LOOP_PERIOD   0x20
 
#define VIBROMOTOR3_VBAT_MON   0x21
 
#define VIBROMOTOR3_LRA_RES_PERIOD   0x22
 
#define VIBROMOTOR3_STARTPPBOOST   0x80
 Vibro Motor 3 description setting.
 
#define VIBROMOTOR3_BYPASSCOMP   0x40
 
#define VIBROMOTOR3_AC_COUPLE   0x20
 
#define VIBROMOTOR3_DC_COUPLE   0x00
 
#define VIBROMOTOR3_DRV_TIME_0P5M   0x00
 
#define VIBROMOTOR3_DRV_TIME_0P6M   0x01
 
#define VIBROMOTOR3_DRV_TIME_0P7M   0x02
 
#define VIBROMOTOR3_DRV_TIME_0P8M   0x03
 
#define VIBROMOTOR3_DRV_TIME_0P9M   0x04
 
#define VIBROMOTOR3_DRV_TIME_1P0M   0x05
 
#define VIBROMOTOR3_DRV_TIME_1P1M   0x06
 
#define VIBROMOTOR3_DRV_TIME_1P2M   0x07
 
#define VIBROMOTOR3_DRV_TIME_1P3M   0x08
 
#define VIBROMOTOR3_DRV_TIME_1P4M   0x09
 
#define VIBROMOTOR3_DRV_TIME_1P5M   0x0A
 
#define VIBROMOTOR3_DRV_TIME_1P6M   0x0B
 
#define VIBROMOTOR3_DRV_TIME_1P7M   0x0C
 
#define VIBROMOTOR3_DRV_TIME_1P8M   0x0D
 
#define VIBROMOTOR3_DRV_TIME_1P9M   0x0E
 
#define VIBROMOTOR3_DRV_TIME_2P0M   0x0F
 
#define VIBROMOTOR3_DRV_TIME_2P1M   0x10
 
#define VIBROMOTOR3_DRV_TIME_2P2M   0x11
 
#define VIBROMOTOR3_DRV_TIME_2P3M   0x12
 
#define VIBROMOTOR3_DRV_TIME_2P4M   0x13
 
#define VIBROMOTOR3_DRV_TIME_2P5M   0x14
 
#define VIBROMOTOR3_DRV_TIME_2P6M   0x15
 
#define VIBROMOTOR3_DRV_TIME_2P7M   0x16
 
#define VIBROMOTOR3_DRV_TIME_2P8M   0x17
 
#define VIBROMOTOR3_DRV_TIME_2P9M   0x18
 
#define VIBROMOTOR3_DRV_TIME_3P0M   0x19
 
#define VIBROMOTOR3_DRV_TIME_3P1M   0x1A
 
#define VIBROMOTOR3_DRV_TIME_3P2M   0x1B
 
#define VIBROMOTOR3_DRV_TIME_3P3M   0x1C
 
#define VIBROMOTOR3_DRV_TIME_3P4M   0x1D
 
#define VIBROMOTOR3_DRV_TIME_3P5M   0x1E
 
#define VIBROMOTOR3_DRV_TIME_3P6M   0x1F
 
#define VIBROMOTOR3_BIDIR_IN   0x80
 
#define VIBROMOTOR3_UNIDIR_IN   0x00
 
#define VIBROMOTOR3_BRK_STABIL   0x40
 
#define VIBROMOTOR3_SAMP_TIME_150US   0x00
 
#define VIBROMOTOR3_SAMP_TIME_200US   0x10
 
#define VIBROMOTOR3_SAMP_TIME_250US   0x20
 
#define VIBROMOTOR3_SAMP_TIME_300US   0x30
 
#define VIBROMOTOR3_BLANK_TIME_V_SHORT   0x00
 
#define VIBROMOTOR3_BLANK_TIME_SHORT   0x04
 
#define VIBROMOTOR3_BLANK_TIME_MEDIUM   0x08
 
#define VIBROMOTOR3_BLANK_TIME_LONG   0x0C
 
#define VIBROMOTOR3_I_DIS_TIME_V_SHORT   0x00
 
#define VIBROMOTOR3_I_DIS_TIME_SHORT   0x01
 
#define VIBROMOTOR3_I_DIS_TIME_MEDIUM   0x02
 
#define VIBROMOTOR3_I_DIS_TIME_LONG   0x03
 
#define VIBROMOTOR3_NG_THRESH_OFF   0x00
 
#define VIBROMOTOR3_NG_THRESH_2_PERC   0x40
 
#define VIBROMOTOR3_NG_THRESH_4_PERC   0x80
 
#define VIBROMOTOR3_NG_THRESH_8_PERC   0xC0
 
#define VIBROMOTOR3_ERM_CLOSED_LOOP   0x00
 
#define VIBROMOTOR3_ERM_OPEN_LOOP   0x20
 
#define VIBROMOTOR3_SUP_COMP_DIS   0x10
 
#define VIBROMOTOR3_DATA_FORM_RTP_SIG   0x00
 
#define VIBROMOTOR3_DATA_FORM_RTP_UNS   0x08
 
#define VIBROMOTOR3_LRADRV_MODE   0x04
 
#define VIBROMOTOR3_LRADRV_MODE_ONCE   0x00
 
#define VIBROMOTOR3_LRADRV_MODE_TWICE   0x04
 
#define VIBROMOTOR3_IN_MODE_PWM   0x00
 
#define VIBROMOTOR3_IN_MODE_ANALOG   0x02
 
#define VIBROMOTOR3_LRA_AUTO_RESONA   0x00
 
#define VIBROMOTOR3_LRA_OPEN_LOOP   0x01
 
#define VIBROMOTOR3_LRA_CLOSED_LOOP   0x00
 
#define VIBROMOTOR3_DEV_RESRT   0x80
 Vibro Motor 3 Mode register bits.
 
#define VIBROMOTOR3_STANDBY   0x40
 
#define VIBROMOTOR3_ACTIVE   0x00
 
#define VIBROMOTOR3_INT_TRIG   0x00
 
#define VIBROMOTOR3_EXT_TRIG_EDGE   0x01
 
#define VIBROMOTOR3_EXT_TRIG_LEVEL   0x02
 
#define VIBROMOTOR3_PWM_ANALOG   0x03
 
#define VIBROMOTOR3_AUDIO2HAPTIC   0x04
 
#define VIBROMOTOR3_RTP   0x05
 
#define VIBROMOTOR3_DIAGNOSTICS   0x06
 
#define VIBROMOTOR3_AUTO_CALIBRATION   0x07
 
#define VIBROMOTOR3_HIZ   0x10
 Vibro Motor 3 Library selection register bits.
 
#define VIBROMOTOR3_RAM   0x00
 
#define VIBROMOTOR3_ROM_A   0x01
 
#define VIBROMOTOR3_ROM_B   0x02
 
#define VIBROMOTOR3_ROM_C   0x03
 
#define VIBROMOTOR3_ROM_D   0x04
 
#define VIBROMOTOR3_ROM_E   0x05
 
#define VIBROMOTOR3_ROM_LRA   0x06
 
#define VIBROMOTOR3_GO   0x01
 Vibro Motor 3 GO register bits.
 
#define VIBROMOTOR3_STOP   0x00
 
#define VIBROMOTOR3_ERM_MODE   0x00
 Vibro Motor 3 Feedback control register bits.
 
#define VIBROMOTOR3_LRA_MODE   0x80
 
#define VIBROMOTOR3_FB_BRAKE_FAC_1X   0x00
 
#define VIBROMOTOR3_FB_BRAKE_FAC_2X   0x10
 
#define VIBROMOTOR3_FB_BRAKE_FAC_3X   0x20
 
#define VIBROMOTOR3_FB_BRAKE_FAC_4X   0x30
 
#define VIBROMOTOR3_FB_BRAKE_FAC_6X   0x40
 
#define VIBROMOTOR3_FB_BRAKE_FAC_8X   0x50
 
#define VIBROMOTOR3_FB_BRAKE_FAC_16X   0x60
 
#define VIBROMOTOR3_FB_BRAKE_FAC_DIS   0x70
 
#define VIBROMOTOR3_LOOP_RESP_SLOW   0x00
 
#define VIBROMOTOR3_LOOP_RESP_MEDIUM   0x04
 
#define VIBROMOTOR3_LOOP_RESP_FAST   0x08
 
#define VIBROMOTOR3_LOOP_RESP_V_FAST   0x0C
 
#define VIBROMOTOR3_BEMF_GAIN_ERM_0P3X   0x00
 
#define VIBROMOTOR3_BEMF_GAIN_ERM_1X   0x01
 
#define VIBROMOTOR3_BEMF_GAIN_ERM_1P8X   0x02
 
#define VIBROMOTOR3_BEMF_GAIN_ERM_4X   0x03
 
#define VIBROMOTOR3_BEMF_GAIN_LRA_5X   0x00
 
#define VIBROMOTOR3_BEMF_GAIN_LRA_10X   0x01
 
#define VIBROMOTOR3_BEMF_GAIN_LRA_20X   0x02
 
#define VIBROMOTOR3_BEMF_GAIN_LRA_30X   0x03
 
#define VIBROMOTOR3_AUTO_CAL_TIME_150MS   0x00
 Vibro Motor 3 Auto calibration memory interface register.
 
#define VIBROMOTOR3_AUTO_CAL_TIME_250MS   0x10
 
#define VIBROMOTOR3_AUTO_CAL_TIME_500MS   0x20
 
#define VIBROMOTOR3_AUTO_CAL_TIME_1000MS   0x30
 
#define VIBROMOTOR3_OTP_PROG   0x01
 
#define VIBROMOTOR3_PROPERTY_DISABLE   0
 Vibro Motor 3 Property enable or disable values.
 
#define VIBROMOTOR3_PROPERTY_ENABLE   1
 
#define VIBROMOTOR3_SET_DEV_ADDR   0x5A
 Vibro Motor 3 device address setting.
 
#define VIBROMOTOR3_DEF_FREQ   235
 Vibro Motor 3 default PWM frequency.
 
#define VIBROMOTOR3_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping.
 

Enumerations

enum  vibromotor3_return_value_t { VIBROMOTOR3_OK = 0 , VIBROMOTOR3_ERROR = -1 }
 Vibro Motor 3 Click return value data. More...
 

Functions

void vibromotor3_cfg_setup (vibromotor3_cfg_t *cfg)
 Vibro Motor 3 configuration object setup function.
 
err_t vibromotor3_init (vibromotor3_t *ctx, vibromotor3_cfg_t *cfg)
 Vibro Motor 3 initialization function.
 
err_t vibromotor3_default_cfg (vibromotor3_t *ctx)
 Vibro Motor 3 default configuration function.
 
err_t vibromotor3_generic_write (vibromotor3_t *ctx, uint8_t reg, uint8_t *tx_buf, uint8_t tx_len)
 Vibro Motor 3 I2C writing function.
 
err_t vibromotor3_generic_read (vibromotor3_t *ctx, uint8_t reg, uint8_t *rx_buf, uint8_t rx_len)
 Vibro Motor 3 I2C reading function.
 
err_t vibromotor3_set_duty_cycle (vibromotor3_t *ctx, float duty_cycle)
 Vibro Motor 3 sets PWM duty cycle.
 
err_t vibromotor3_pwm_stop (vibromotor3_t *ctx)
 Vibro Motor 3 stop PWM module.
 
err_t vibromotor3_pwm_start (vibromotor3_t *ctx)
 Vibro Motor 3 start PWM module.
 
void vibromotor3_enable (vibromotor3_t *ctx, uint8_t state)
 Enable the device function.
 
void vibromotor3_write_byte (vibromotor3_t *ctx, uint8_t reg, uint8_t wr_data)
 Generic write the byte of data function.
 
uint8_t vibromotor3_read_byte (vibromotor3_t *ctx, uint8_t reg)
 Generic read the byte of data function.
 
void vibromotor3_set_mode (vibromotor3_t *ctx, uint8_t mode_sel)
 Sets the desired mode function.
 
void vibromotor3_soft_rst (vibromotor3_t *ctx)
 Reset function.
 
void vibromotor3_stb_mode (vibromotor3_t *ctx, uint8_t state)
 Software standby mode.
 
uint8_t vibromotor3_get_stat (vibromotor3_t *ctx)
 Get status register value function.
 
void vibromotor3_set_rtp_input (vibromotor3_t *ctx, uint8_t data_in)
 Sets the desired input for RTP mode function.
 
void vibromotor3_set_state_hi_z (vibromotor3_t *ctx, uint8_t state)
 Set the devices in HI-Z state function.
 
void vibromotor3_set_library (vibromotor3_t *ctx, uint8_t lib_sel)
 Set the desired vibrating patterns library.
 
void vibromotor3_start_motor (vibromotor3_t *ctx, uint8_t state)
 Starts or stops moving the motor function.
 
void vibromotor3_set_ovdr_offset (vibromotor3_t *ctx, uint8_t data_in)
 Sets overdrive offset function.
 
void vibromotor3_set_sustain_offset_pos (vibromotor3_t *ctx, uint8_t data_in)
 Sets sustain offset - positive function.
 
void vibromotor3_set_sustain_offset_neg (vibromotor3_t *ctx, uint8_t data_in)
 Sets sustain offset - negative function.
 
void vibromotor3_set_brake_time_offset (vibromotor3_t *ctx, uint8_t data_in)
 Sets brake time offset function.
 
void vibromotor3_set_rated_volt (vibromotor3_t *ctx, uint8_t data_in)
 Sets the reference voltage function.
 
void vibromotor3_set_ovdrv_clamp_volt (vibromotor3_t *ctx, uint8_t data_in)
 Sets a clamp function.
 
uint8_t vibromotor3_get_calib_res_comp (vibromotor3_t *ctx)
 Reads the voltage-compensation function.
 
float vibromotor3_get_supply_volt_val (vibromotor3_t *ctx)
 Reading of the supply voltage function.
 
float vibromotor3_get_lra_resonance_period (vibromotor3_t *ctx)
 Reads the measurement of the LRA resonance period function.
 
void vibromotor3_set_lra_mode (vibromotor3_t *ctx, uint8_t state)
 Sets the device in LRA mode function.
 
void vibromotor3_set_brake_factor (vibromotor3_t *ctx, uint8_t brk_fac)
 Set brake factor function.
 
void vibromotor3_set_loop_gain (vibromotor3_t *ctx, uint8_t gain)
 Selects a loop gain function.
 
void vibromotor3_set_input (vibromotor3_t *ctx, uint8_t data_in)
 Sets the input to PWM or analog function.
 
void vibromotor3_enable_ac_coulping (vibromotor3_t *ctx)
 Applies a 0.9-V common mode voltage function.
 

Detailed Description

This file contains API for Vibro Motor 3 Click Driver.

Enumeration Type Documentation

◆ vibromotor3_return_value_t

Vibro Motor 3 Click return value data.

Predefined enum values for driver return values.

Enumerator
VIBROMOTOR3_OK 
VIBROMOTOR3_ERROR