i2c port dead

16 Sep 2011

Dear Support Team,

I have bad experience, I use i2c protocol to control some ESC-i2cs. I use the pull-up (2.2k) resistor connected to the 3.3Vout as the Handbook recommended. But after several time running, the i2c communication failed and never works again. In the first case, I use p28/27.

I tried to change the port, I move to the p9/10. It works well for some time, but then dead again.

I change the Mbed module with a new one, and the same situation occurred.

I made a new circuit board. But the same problem occurred. I have 3 Mbed modules now with no i2c ability.

Info: the ESC module works in 5V. Maybe this is the cause? If yes, what should I do?

Could anyone or the mbed support team help me??

Thank you

-Raharja-

16 Sep 2011

Should I use a level shifter or converter? If yes. Okay then.

Can my mbed i2c's ability back? How can I repair it?

Thx

16 Sep 2011

What is an 'ESC' module? References, datasheets would help..

Anyhow, the ESC device could destroy your I2C mbed port when it is a 5 volt device that does not comply with I2C specs in the sense that it actively drives 5V out instead of having an open collector/drain output. In that case even a level shifter may be destroyed.

You sure there are no high voltage spikes or something on your I2C lines? Measure the voltage on an unconnected ESC device.

Some 1K series resistors on the mbed I2C lines could provide limited protection but provide no permanent solution.

Test your dead I2C mbed with another device (eg PCF8574) using 3V3 only.

16 Sep 2011

Wim Huiskamp wrote:

What is an 'ESC' module? References, datasheets would help..

Anyhow, the ESC device could destroy your I2C mbed port when it is a 5 volt device that does not comply with I2C specs in the sense that it actively drives 5V out instead of having an open collector/drain output. In that case even a level shifter may be destroyed.

You sure there are no high voltage spikes or something on your I2C lines? Measure the voltage on an unconnected ESC device.

Some 1K series resistors on the mbed I2C lines could provide limited protection but provide no permanent solution.

Test your dead I2C mbed with another device (eg PCF8574) using 3V3 only.

the ESC is from Mikrokopter: http://www.mikrokopter.de/ucwiki/en/BL-Ctrl_2.0

I am pretty sure the circuit or the i2c is clean from any unexpected thing. I made many boards and I have many mbeds. If the cause is the ESC, but others mbed with the typically same circuit are safe, or maybe still safe.

I will try to use the 1K resistor.

-

I have tested the UART at the dead i2c port, and sadly the serial also dead.

Thanks for the reply

16 Sep 2011

Could this not be caused by spikes from the mikrocopter motor(driver)s ?? How are the motors powered and how is the mbed powered? Bad ground lines can cause havoc with high current loads.

17 Sep 2011

I agree with Gert, bad ground lines could result in positive or negative spikes on the ESC i2c lines, resulting in voltages below GND or above 5V on the mbed. For example, the high motor peak current could lead to a 1V voltage drop across the GND wire between the ESC and the mbed GND level. The ESC i2c output of the PIC processor probably has a weak pull-up to the local ESC 5V supply. When the ESC gnd level goes up by 1V, the i2c will be pulled up to +6V with respect to mbed gnd. That is above the safety limit.

The bad gnd problem may not be present on all of your boards, which explains why most of them work fine. The gnd line wire may look OK when you measure it, but note that 10A * 0.1 Ohm = 1V.

Connecting mbed gnd only at the ESC gnd pin should help. Better gnd lines (increased wire cross section, better contacts) may help. Fast schottky protection diodes on the i2c lines may also help. The only alternative is optical isolation of the I2C bus. However, that brings its own challenges.

18 Sep 2011

thanks guys for all yours suggestion