Hi,
I am controlling a DC amp motor via a TI motor driver DRV8874PWPR, and controlling the motor driver chip via the port expansion chip. The motor pulls about 1.0 amp at 24 volts. Everything is fine normally, but when the motor hits a limit switch and stops, some voltage spikes are introduced into the I2C bus for some inexplicable reason (at least none that I can find so far) and this leads to register corruption when it happens. Here is my setup:
- Vcci = 3.3 volts and Vccp = 5.0 volts
- I2C bus speed is 100kHz
- I2C data is transmitted over a ribbon cable 6" long, as is 5V (Vccp).
- Pullups on SDA, SCL, Int, and Rst are all 10K and located near the TCA6416A port expander.
- The TCA6416A is the only slave device on the I2C bus.
- There are no pullups on either I2C line on the microcontroller board.
- The data sheet did not show any of the standard bypass capacitors, so I neglected to add any myself. Vcci (3.3v) for the device is provided by a linear power supply nearby.
Do you have any suggestions on what I should do to eliminate this problem?
Also, I am unsure how to calculate the various capacitances that affect the choice of pull-ups for the SDA & SCL lines. If that is the problem (the 10k pullups are too large), any guidance on calculating bus capacitance is appreciated.
Thanks,
Scott