Fail - Trashed the micro trying to tap the EEPROM bus

Tapping EEPROM bus fail.  I tried tapping into EEPROM serial bus so I could read and write the device ID on my Bluetooth receiver, but killed the Bluetooth processor instead.

What's wrong with this picture?have

What's wrong with this picture?have

I tied my FT232 based usb-serial adapter directly to the data and clock lines of the EEPROM while it was still on the Bluetooth PCB.  I knew I was tapping in to the circuit and could have problems if the OVC3860 micro was trying to drive the lines the same time I was.  I figured by grounding the micro's reset line, it would tri-state all of it's IO and I would be free to drive the clock and data bus.  I was mistaken.

After a few minutes of not being able to read from the EEPROM, I pulled of the tap wires and power cycled the Bluetooth receiver.  Of course, no more Bluetooth.  

My guess is that I was driving a high signal on the clock line, while the micro was driving low during reset.  The FT232 TX out line was able to source more current than the micro could take and blew out the micro.

What went wrong and the technique to do it right.

The fix is to use series resistors between the usb-serial converter and the EEPROM bus.  The series resistors limit the amount of current that can flow when the micro and the FT232 are driving different voltages.

I settled on 30 ohm resistors to limit the current about 10 ma worst case. 

  • FT232 driving 3.3 volts on to the SCL line
  • OVC3860 micro driving gnd on to the SCL line
  • Current = (Vhigh - Vlow)/ R = (3.3-0)/30 = 3.3/30 = 11 ma (or about 10 ma)

The resistor value also had to be low enough that I could still drive the bus with high and low signals within the spec for the EEPROM.  Since the SDA line is pulled high through a 5k resistor, the series resistors had to be much less than 5k.  Keeping the series resistors to less than 1/100th of the pull up meant that they would have little affect on the circuit operation.  I could have used 50 ohms, but I had 30 ohm resistors available, so I used them.