Electronic – I2C weird data and clock output/input

ci2cmicrocontrolleroscilloscopepic

Hello I am trying to communicate that is using SMBus. So when I try to send a data which was 0x0D and address of the device was 0x16. I see something like that on the data line:

SDA

And this is how my clock (SCL) pin looks like:

SCL

So my questions are :

  1. Is this data and clock signals look normal? I know data is not normal because I cannot transmit the message but what about clock signal?
  2. So Data looks like 1 1 1 1 1 1 …. 1 1, is it because I cannot ack ACK/NACK from slave, it keep sending the data over and over again? Or maybe something else behind this strange data signal.
  3. I used 20 K pull up resistors for SDA and SCL for 5 V Vdd. (For SMBus I think I should have used 15 k ohm.) Can it be the reason? Or any other ideas that causes this? Thanks beforehand

In the datasheet of the battery that I try to communicate, it says:

For pull up resistors

So I thought I could use 20 k ohm as pull up resistors.(to be honest I could not really understand what they say in the document..)

And this is how SCL/SDA signals look like together

SCL/SDA signal

This is the circuit schematic (I use RB1 and RB2 for SMBus communication.)

Schematic

This is the pin diagram for the battery. I am communicating with the first section, PINS 1-4:

PINOUT

Best Answer

The I2C bus actually requires not 2 wires, but 3: SCL, SDA, and ground. It's usually just assumed because I2C is intended for communication on the same board. If you are really only connecting SCL and SDA from your PIC to your battery, and there is no common ground connection between them, you might see something like this.

The ground from your PIC should be connected to the ground of the battery monitoring circuit. It is not necessarily the actual battery ground itself; they may provide a separate ground pin intended for communication. What is the pinout of your smart battery?

Related Topic