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.

Multiple DRV2605 from same MCU

Other Parts Discussed in Thread: DRV2605, MSP430F2274, TCA9548A, DRV2604

Hi

I am trying to design a haptic feedback device using multiple actuators on different points of the body. For independent control of each LRA, I was planning on using multiple DRV2605s, one for each actuator. This was then to be controlled by a single MCU using I2C to update waveforms on respective target drivers. 

However I have now realized that the DRV2605 I2C slave address seems to be fixed and identical for each device! This means that any I2C command from the master will apply to every connected slave driver.

My question then is how do I best design a system where I can control multiple drivers independently? Individual PWM control seems like the best solution at the moment but is unfortunately expensive for the MCU. Is there a better way, such as dynamically disabling the drivers I don't want to communicate with? Does a low EN pin block I2C communication (including slave responding on data line)?

Thank you very much in advance for any advice

Enrico

  • Hi Enrico:

    As of right now, the best solution would be to use an I2C switch (TCA954xA series). Depending on how many DRV2605 you are planning on using, it will dictate how many channels you would need. Only design problem about the I2C switch is that it requires external pull-up resistors for each SDA and SCLK lines, so it can be a large solution. The nice thing about this switch is that it's not a mux, you can select any combination of channels to be connected to the master input I2C lines. This solution is good if you want to independently set up each driver, but be able to play the waveforms all at the same time.

    Individual PWM control is definitely not the more efficient solution compared to the I2C control. The EN pin will block I2C communication. The DRV2605 must be enabled and be out of standby mode to be able to communicate it with. Using the I2C switch has one drawback, if you are reading back values, you would have to read each driver individually since conflict will occur if multiple data lines have different values and ultimately act as an "AND" bus.

     

    How many DRV2605 and what MCU are you planning on using?

     

    Thanks

    David Wang                                                                                                                                                                Analog Applications | Haptics

  • Hi David

    Thank you for your prompt reply! I had not heard of an I2C switch and that actually sounds like a very good solution. I had a small circuit board designed (30x60mm) for 6 drivers and I suppose the addition of independent I2C lines and pullup resistors will make it less compact than I had hoped. However for having full control of each driver this is a sacrifice that is worth making.

    I was planning on using the MSP430F2274 on the eZ430-RF2500T target board and at this point six drivers/LRAs. The project is for a body-worn feedback system for immersion in a virtual environment so the wireless capability and USB integration of the development tool is appealing.

    On your point about the drawback of the I2C switch being the need to read each driver individually, wouldn't this also affect any devices on a I2C line? If each driver had its own address, I would still have to read from that device address specifically. Let me know if I am misunderstanding something.

    I think the solution I will go for is using a TCA9548A switch for my drivers. Hopefully adding it to my circuit design won't be too much of a pain!

    Thank you very much for your help

    Enrico

  • Reading each driver individually will not affect other devices on the I2C line because of the way the I2C protocol is designed since it would need a  start bit followed by a 7-bit slave addr. Also with the I2C switch being able to isolate what I2C line channel you want, all the other DRV2605's will not be affected nor any other devices. You would just need to write command the TCA9548A to select the appropriate channel and then send a read command to the DRV2605. I have verified this already with the TCA9548A and our drivers.

    Thanks

    David Wang                                                                                                                                                                                 Analog Applications | Haptics

  • Thank you again for your help. I have implemented the switch into my circuit design.

    Regards

    Enrico

  • Hi David,

    I have a similar problem and question. Before finding this forum, I have been considering the following connections/scenario. Would you be able to confirm if you believe it will work, please?

    I have four DRV2605 devices all on the same I²C bus.

    I plan to communicate to each of them individually by pulling its EN line high, and setting a waveform sequence. I am assuming the ones with their EN line low will do nothing during I²C comms.

    When set up, I then plan to trigger them all at the same time with high going pulses at their IN/TRIG pins.

    Do you believe this would work? Or do you recommend I²C switch?

    For added flexibility I was planning on 'OR-ing' a single PWM output from my processor to the 4 IN/TRIG pins, so that (when configured for PWM mode) they could be driven from a single PWM. Do you believe this would work also?

    I would appreciate any suggestion/help for my solution.

    Regards

    Steve

  • Hi, Steve:

    I have information to share about I2C acknowledge of DRV2605.

    I had tested with my DRV2604 (which is the same family). Even if the EN pin is digital low, DRV2604 can acknowledge I2C addressing, but some registers cannot be changed.

  • Ok, thank you Peter.

    I will look at using an I²C switch.

    Regards

    Steve

  • Hi.
    What would be a solution for controlling up to 12 vibration motors? I have not found a i2c switch with more than 8 channels. How can I do that?
    Thanks, Bernhard
  • Hi, Bernhard:

    Sorry for cannot provide further assistance on this.