This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV2605L: DRV2605L audio to vibe register problems

Part Number: DRV2605L
Other Parts Discussed in Thread: DRV2605

Tool/software:

I am trying to accomplish Waveform Playback Using Audio-to-Vibe Mode as described in section 8.5.8.2.4 of  the DRV2605L device documentation.

Register settings:

MODE[2:0] bit at register 0x01 to is set to 4

AC_COUPLE bit in register 0x1B is set to 1

And  the N_PWM_ANALOG bit in register 0x1D is set to 1

As defined in the documentation.

I am driving an ERM haptic device.  The DRV2605L automatically drives the ERM at startup with a 100µS 0-1VP signal at approximately 18 KHz  and ignores any additional input at the INT/TRIG pin.

This behavior occurs even when the INT/TRIG pin is grounded.

The DRV2605L works normally when it is driven with internal wave forms.

There are no other inputs used at the device other than its SDC and SCL connections to the micro-controller.

Can anyone please offer any guidance to me on this issue?

Thank you for any and all recommendations.

  • Cliff, 

    Thanks for reaching out. Your question has been received and we will provide the feedback as soon as possible. 

    Best,

    Hailong

  • I thought that I may have damaged the INT/TRIG port on the device so I purchased a new one to test with the same results.  If it is helpful I am posting my code as follows:

    # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
    # SPDX-License-Identifier: MIT
    
    from board import SCL, SDA
    from busio import I2C
    from adafruit_bus_device.i2c_device import I2CDevice
    from adafruit_register.i2c_struct import UnaryStruct
    
    DEVICE_ADDRESS = 0x5A  # device address of PCA9685 board
    A_DEVICE_REGISTER_1 = 0x01  # DRV2605_REG_MODE[2:0] (8.5.8.2.4)
    A_DEVICE_REGISTER_2 = 0x1B  # DRV2605_REG_CONTROL1 AC coupled input (8.5.8.2.4)
    A_DEVICE_REGISTER_3 = 0x1D  # DRV2605_REG_CONTROL3 N_PWM_ANALOG (8.5.8.2.4)
    
    class DeviceControl:  # pylint: disable-msg=too-few-public-methods
        def __init__(self, i2c):
            self.i2c_device = i2c  # self.i2c_device required by UnaryStruct class
    
        register1 = UnaryStruct(A_DEVICE_REGISTER_1, "<B")  # 8-bit number
        register2 = UnaryStruct(A_DEVICE_REGISTER_2, "<B")  # 8-bit number
        register3 = UnaryStruct(A_DEVICE_REGISTER_3, "<B")  # 8-bit number
    
    # The follow is for I2C communications
    comm_port = I2C(SCL, SDA)
    device = I2CDevice(comm_port, DEVICE_ADDRESS)
    registers = DeviceControl(device)
    
    # set the bits in the device
    registers.register1 = 4
    registers.register2 = 1 
    registers.register3 = 1
    
    
    # display the device values for the bits
    print("register 1: {}; register 2: {}; register 3: {}"
    .format(registers.register1, registers.register2, registers.register3))

    Thanks very much once again.

  • I see. Thanks for providing your code!

  • Hi Hailoing Chen, thank you!

    A brief update on this issue.  With reference to the following, excerpted from the DRV2605L documentation:

    8.5.8.2.4 Waveform Playback Using Audio-to-Vibe Mode
    To take advantage of the audio-to-vibe feature, connect the DRV2605L device to a line-out source as shown in
    Figure 59. The full-scale range of the IN/TRIG pin in the audio-to-vibe mode is 1.8 VPP. A 0.1 μF capacitor is
    recommended to AC couple the audio source and the IN/TRIG pin. For sources smaller than 1.8 VPP, the
    ATH_MAX_INPUT bit in register 0x13 can scale down the input range.
    The device enters audio-to-vibe mode when the MODE[2:0] bit is set to 4 in register 0x01 and when the
    AC_COUPLE bit in register 0x1B and the N_PWM_ANALOG bit in register 0x1D are set to 1. See the Register
    Map section for details.

    I have found that the the DRV2605 will automatically fire the ERM the instant I set the MODE[2:0] register bit to "4" even if the IN/TRIG pin is at ground.  Any other changes to the PWM or AC_COUPLE register have no effect.  Injecting a 1.8Vp-p 1KHz signal at the IN/TRIG pin (with the PWM and AC_COUPLE registers set to 0x01) has no effect, does not change the vibration frequency of the ERM.

    I suspect that there is some other toggle that needs to be initiated to set the DRV2605 to "listen" for an audio input signal on the IN/TRIG pin but the document is not clear (to me at least) on what that may be, if in fact, such a setting is necessary.

    Again, thanks so much for your patient assistance.

  • Thanks for the additional info. I will need to talk to our firmware expert and then provide the feedback. Thanks for your patience. 

  • Hi Hailong Chen, thank you for your time and assistance.  I've been trying to get this to work for a while as this feature is an integral component for a project that I am working on.  Again, thanks!

  • Cliff, 

    Thanks for sending the document via email. To close the issue here. 

  • Hi Hailong Chen, I've not heard anything from you since sending you my "schematic".  Please let me know if you have anything further for me after speaking with the firmware team.