Other Parts Discussed in Thread: TIDA-01373
A little background on what has happened. I have been successfully using this driver to run a BLDC motor and control it's speed.
I was making adjustments to the configuration registers and saving to EEPROM and seeing that the new configuration parameters were successfully saved and being used.
Two days ago, the controller stopped responding to I2C commands. Error returned was a bus collision error. I put a scope on the bus and noticed the data and clock lines were not being pulled high.
My design uses the 3.3V output of the DRV10983-Q1 with resistors for pull-up and there was no 3.3V coming from the chip when power was supplied to the controller. Motor was not running.
My initial thought was that the controller has burned out for some reason, but I don't give up that easily. I then figured maybe the controller had somehow been mis-programmed in such a way that is was powering up in sleep mode. This mode disables the I2C, so the only way to tickle it to life is to apply sufficient voltage to the SPEED pin.
I did this and then noticed the motor would attempt to start, just a "blip" and this would repeat every 5 seconds, and the I2C bus data lines went high. Hey, the 3.3V was back on.
The scope showed a lot of current draw just for that initial start before something in the controller shut it down.
I was then able to command the speedctrl register to 0 using I2C to stop the motor from trying to start. I then set voltage on SPEED pin to 0V and the 3.3V output stayed on. Yea!
I can read valid data from the status registers 0-8.
Now I though all I needed to do was re-program the EEPROM configuration values to known good values and I would be back in business. Here is where things are not working.
After sending the 0xC0DE value to the programming key register, I used to see that the eeReadyStatus would go high indicating I now had access to the config registers.
eeReadyStatus never goes high after sending 0xC0DE access key. So I tried every possible value 0x0000-0xFFFF and not one of those values ever results in eeReadyStatus==1
I'm at a loss as to what to try that might get eeReadyStatus==1. Until I can change the config registers, which are way wrong values, things are dead in the water.
I ignored the fact that eeReadyStatus was 0 and attempted to write the config registers with good values but they read back as the same wrong values.
Any ideas on what I might try next? (Short of replacing the chip)
-Jay