BBB I2C Remote I/O error + voltage below ground

Hello together,
I attached my BBB to a DS3904 to experiment with I2C. Now I have the problem, that i dont understand what my BBB is doing. When I try to send data via I2C I get the error message: Remote I/O error. According to my oscilloscope, the voltage on the I2C-bus is temporarily pulled about 2V below the ground of the BBB. And to make the whole thing perfect it all doesn’t happen always. I’ve got a loop in my programm and sometimes this error happens at the first time I send data, sometimes at the second or third…
Attached you can find my source code, if you want to try it yourself.
I am quite desperate by now so if you’ve got any idea please help me.

I2CTest.cpp (970 Bytes)

Could you throw in the schematic as well? 2V below ground does not sound good.

Gerald

I am currentlx struggeling with the drawing programm (First time I use it), but its nothing big. A wire from the I2C pins of the BBB (P9, pin17 & pin18) to the I2C pins of the DS3904 and each a pullup resistor to a 3.3V source (Also a pin from the BBB). When I got a somewhat understandable schema I’llpost it.

OK. Sounds like a power or ground connection may be missing.

Gerald

Gerald,

it seems you were right. I removed all wires and set it up again and the behaviour looks much better now, it isn’t random anymore.
Although I still got a problem: When i send the first message everything goes fine: Start signal, address, 2 byte data, stop signal. Problem occurs, when I send a second message afterwards, because then the acknowledge bit is always 0. Is this something related to the protocol, (like: “after a write operation must always follow a read” or something…) or is this a problem with my device? I checked it with an oscilloscope, the address send is exactly the same as in the first message.

Best regards
Rafael

I have found the error: After an I2C message the DS3904 enters an internal write cyclus and therefore doesn’t react to signals. I just sent the messages to fast.

Hi Rafael,
Do you remember the procedure you followed to address this issue?

Thanks