rated_voltage = drv260x_calculate_voltage(VIB_RATED_MV); overdrive_voltage = drv260x_calculate_voltage(VIB_OVERDRIVE_MV); drv2605L_reg_write_one_byte(DRV260X_RATED_VOLT,rated_voltage); drv2605L_reg_write_one_byte(DRV260X_OD_CLAMP_VOLT,overdrive_voltage); drv2605L_reg_write_one_byte(DRV260X_MODE,DRV260X_AUTO_CAL); drv2605L_reg_write_one_byte(DRV260X_CTRL3,DRV260X_NG_THRESH_2); drv2605L_reg_write_one_byte(DRV260X_FEEDBACK_CTRL,DRV260X_FB_REG_LRA_MODE | DRV260X_BRAKE_FACTOR_4X | DRV260X_LOOP_GAIN_HIGH ); //calibration result_i2c = drv2605L_reg_write_one_byte(DRV260X_GO,DRV260X_GO_BIT); if(result_i2c != CY_SCB_I2C_SUCCESS) { Term_Printf("drv2605L(%d) write reg DRV260X_GO err\r\n",seq); goto drv2605L_err; } do { result_i2c = SCB3_I2C_Reg_Read(DRV2605L_I2C_ADDR,DRV260X_GO,®_data,1); if(result_i2c != CY_SCB_I2C_SUCCESS) { Term_Printf("drv2605L(%d) read reg DRV260X_GO err\r\n",seq); goto drv2605L_err; } } while (reg_data == DRV260X_GO_BIT); //set TRIGGER mode drv2605L_reg_write_one_byte(DRV260X_MODE,DRV260X_EXT_TRIGGER_EDGE); #define VIB_RATED_MV 1800 #define VIB_OVERDRIVE_MV 1800 #define DRV260X_AUTO_CAL 0x07 #define DRV260X_NG_THRESH_2 (1 << 6) #define DRV260X_FB_REG_LRA_MODE (1 << 7) #define DRV260X_BRAKE_FACTOR_4X (3 << 4) #define DRV260X_LOOP_GAIN_HIGH (2 << 2) #define DRV260X_GO_BIT 0x01 #define DRV260X_RT_PLAYBACK 0x05 #define DRV260X_EXT_TRIGGER_EDGE 0x01 //DRV2605L reg list #define DRV260X_STATUS 0x0 #define DRV260X_MODE 0x1 #define DRV260X_RT_PB_IN 0x2 #define DRV260X_LIB_SEL 0x3 #define DRV260X_WV_SEQ_1 0x4 #define DRV260X_WV_SEQ_2 0x5 #define DRV260X_WV_SEQ_3 0x6 #define DRV260X_WV_SEQ_4 0x7 #define DRV260X_WV_SEQ_5 0x8 #define DRV260X_WV_SEQ_6 0x9 #define DRV260X_WV_SEQ_7 0xa #define DRV260X_WV_SEQ_8 0xb #define DRV260X_GO 0xc #define DRV260X_OVERDRIVE_OFF 0xd #define DRV260X_SUSTAIN_P_OFF 0xe #define DRV260X_SUSTAIN_N_OFF 0xf #define DRV260X_BRAKE_OFF 0x10 #define DRV260X_A_TO_V_CTRL 0x11 #define DRV260X_A_TO_V_MIN_INPUT 0x12 #define DRV260X_A_TO_V_MAX_INPUT 0x13 #define DRV260X_A_TO_V_MIN_OUT 0x14 #define DRV260X_A_TO_V_MAX_OUT 0x15 #define DRV260X_RATED_VOLT 0x16 #define DRV260X_OD_CLAMP_VOLT 0x17 #define DRV260X_CAL_COMP 0x18 #define DRV260X_CAL_BACK_EMF 0x19 #define DRV260X_FEEDBACK_CTRL 0x1a #define DRV260X_CTRL1 0x1b #define DRV260X_CTRL2 0x1c #define DRV260X_CTRL3 0x1d #define DRV260X_CTRL4 0x1e #define DRV260X_CTRL5 0x1f #define DRV260X_LRA_LOOP_PERIOD 0x20 #define DRV260X_VBAT_MON 0x21 #define DRV260X_LRA_RES_PERIOD 0x22 #define DRV260X_MAX_REG 0x23