Reading I2c Data

Is it possible to read what is being sent over a i2c bus?

I currently have a controller which uses a PIC :( chip to control a frequency synthersizer via l2c , now what i want to do is read exacly what commands are being sent to the synthersizer from the pic chip with my Arduino setup.

The reason i want to do this is i cannot control the synthersizer from a Arduino as i dont know what the synthersizer is looking for. If i could read the data while its doing something i would be able to rewrite the code for it and use the Arduino to do that.

Just in case anyone knows this paticular synthersizer i am trying to control its a SP5055 I currently am talking to it, but i am having limited results on its operation, i can only set it to certain frequencys, when i should be able to set it to any frequency in its range.


Nick Gammon uses a logic analyzer,

Some programs show the I2C data, but I forgot the names.

Could you modify the top post, and change the title ? (L2c to I2C).

Why do you want to do this ? Everything is in the datasheet. Sometimes a chip requires an odd start or stop or ack or nack, the Arduino Wire library can not be used with all chips, but it is good for 99% of the I2C chips.

Do you have pull-up resistors ? Do you check the return value of endTransmission() for errors ?

I read that the problem with that chip is to understand the PLL and the prescaler. About 5 registers should be used to set a frequency.

Modified title as requested.

Why to do I want to do this?, if I could understand the datasheet then great I would not need to read what being sent, but as I have not got the brain or experience then I thought this would be a good approach.

Pull up resistors, I am prob wrong on this, but I thought the Uno r3 has the pull up resistors already in place?

Not checked the return value of endTransmission but I will in a minute.


We have a funny misunderstanding. I ment changing the word "L2c" into the word "I2C" in the subject. So the subject would be "Reading I2C data".

The Arduino uses its internal pull-up resistors for the I2C bus, but those are very weak. You should add 4k7 pull-up resistors. Is that chip with a 5V I2C bus ? If so, connect the 4k7 pull-up resistors to 5V.

What you need is an example how to use the registers of the chip. I can find a lot, but not a good example. Perhaps this,

Perhaps you could start a new topic and ask to help to understand the datasheet of the SP5055. If you do, add a link to this thread so others know the background of the question.

Sorry... I am stupid. (title changed)

Off to try the pull up's but I think the module I am using already has them built in, as I said I am communicating with the device just not correctly. My prob as you said is understanding the datasheet.

Will try a few more things this side, then ask for help understanding the datasheet.

Thanks for your help.

Just to answer a previous question

Wire.endTransmission() is returning 0: success

Ok, that is good. I don't have experience with programming a PLL chip, but I'm sure others can help.