Rigol 1054z I2C Channel Bleed Issue - Page 1
Forum section: electronics / beginners

author: HopWorks
author_rank: Contributor
timestamp: October 30, 2017, 12:13:21 am
content: Greets All,I am a new guy to using a scope and am learning more everyday, especially here. I am sure my terminology is not correct at all so please bare with me.I ran into a small issue where I2C logic transitions from one channel seem to influence the waveform on the second channel. It seems to be both ways, where the clock transitions seem to effect the data waveform, and vise versa. With all the tutorials, both HTML and Video, the waveforms shown seem to be a bit cleaner than what I am getting, and I just wanted to know why it is happening so I can attempt to correct it. Ground issues, using short jumpers to connect the probes, maybe actually a circuit issue like not enough current on the 3.3vdc rail, incorrect power decoupling capacitors, etc.The platform I am connected to IS on a bread board. Before I start ripping that apart and start connecting wires directly to the gear, I wanted to ask this here. I am using short jumper wires to connect to the test points because I do not want to short anything on the modules. Maybe that is just a probe trust issue. They are retractable spring hook types set at 10x. I have two pulled screen shot files I have included thanks to a wonderful linux python script and the ethernet connection I have with the scope, and SCPI. GOD I LOVE THAT FEATURE!!! Sorry, had to share that. No more smart phone pics of the scope's screen anymore for me! YAY!More about the circuit...I am testing slave I2C programming on a blue pill STM32F103C8T6 with a Bus Pirate V3.6. I have the blue pill board and an accelerometer module (GY 80 -ADXL345, MC5883L, L3G4200D, BMP085) connected to the same bus. Both modules addresses are responding to an I2C address search function from the Bus Pirate as expected. Resistor pull ups to 3.3v are applied through the bus pirate and are enabled. I will take a pic of that set up for this post and include it. There is a side question here... what is the best way to apply my scope's probes? As far as the probes ground connection and the probe's main connection?Here is two screen shots of the waveform that I get. Noticed the little dips and spikes in one waveform when the other transitions. The second shot is zoomed in to show more detail of the anomaly. The last image is my setup. All images are attached. I did not know how to insert an image into the post. Sorry.Thank you for your time and I appreciate anything that could be elaborated on here.

author: TK
author_rank: Super Contributor
timestamp: October 30, 2017, 12:21:55 am
content: It looks like crosstalk to me, due to the use of breadboard and jumper wires. But it might be something else, as I tested this configuration many times (i2c on breadboard + jumper wires) and I did not see any crosstalk. Try using pin headers to connect the probes to the signals you want to visualize, including GND.

author: tautech
author_rank: Super Contributor
timestamp: October 30, 2017, 12:32:37 am
content: Quote from: TK on October 30, 2017, 12:21:55 amIt's not crosstalk.It's DUT based and due to insufficient decoupling. No big deal until the spikes exceed IC bus state levels or decoding thresholds.

author: HopWorks
author_rank: Contributor
timestamp: October 30, 2017, 12:39:38 am
content: What is DUT? I'm sorry that I do not know that.And insufficient decoupling... I will dig into the datasheets on what proper values to use. I have two .1uf caps on the power bus but one one next to a device, and a 10uf on the power bus away from the device.

author: HopWorks
author_rank: Contributor
timestamp: October 30, 2017, 12:40:50 am
content: Headers! That is brilliant! I did not even think about that. I have a mess of them that break apart also. THANK YOU!

author: TK
author_rank: Super Contributor
timestamp: October 30, 2017, 12:41:03 am
content: Quote from: tautech on October 30, 2017, 12:32:37 am"Crosstalk. In electronics, crosstalk is any phenomenon by which a signal transmitted on one circuit or channel of a transmission system creates an undesired effect in another circuit or channel. Crosstalk is usually caused by undesired capacitive, inductive, or conductive coupling from one circuit or channel to another ..."

author: tautech
author_rank: Super Contributor
timestamp: October 30, 2017, 12:46:14 am
content: Quote from: TK on October 30, 2017, 12:41:03 amOK, then best to specify the type.I was referring to inter-channel scope crosstalk.

author: rstofer
author_rank: Super Contributor
timestamp: October 30, 2017, 12:52:16 am
content: Add a large capacitor at the far end of the Vcc bus - maybe 100 ufd or so.Add 0.1 ufd ceramic capacitor where each device connects to the bus. As close to the device as possible.Even then, you won't get rid of all the 'glitches' and it really doesn't matter. What matters is the state of SDA when SCL comes along.The pull-ups should be at the far end (Bus Pirate probably IS at the far end) and no less than 2.2k and, considering all the capacitance of your setup, perhaps 1k might be better. I would try 2.2k...http://www.ti.com/lit/an/slva689/slva689.pdf

author: ebclr
author_rank: Super Contributor
timestamp: October 30, 2017, 12:52:25 am
content: It's everything just running as expected, With the construction made, the actual ground connections, and long wires, together with poor power supply decoupling is a lucky and nice signal.If you want something better, must make a decent PCB, a better power supply, with decoupling everywhere, a proper ground plane, a unique point short ground.

author: TK
author_rank: Super Contributor
timestamp: October 30, 2017, 12:53:16 am
content: Quote from: tautech on October 30, 2017, 12:46:14 amI paid more attention to the post text (breadboard + jumper wire issue) and not the title as you did... sorry

author: HopWorks
author_rank: Contributor
timestamp: October 30, 2017, 01:20:53 am
content: OK, Grazie everyone. I'm just prototyping and tweaking my slave firmware to get the results I need. To that end, I'm not going to create a PCB yet to improve the signal results. Your posts have given me a bit to think about though, and highlighted some of my oversights I should know much more about by now. As far as geography of the I2C bus, I had not thought of that. In the final design, it will only be a connection between the STM32F103C8T6 and a RPI Zero Wifi. The bus pirate was just connected along with the GY80 module to see why my code is not responding to the read bit in the addressing, and where the pull ups went kind of got lost in the circuit. As far as I know, the RPI applies pull ups to the I2C1 port internally but I do not remember what the values are.This just threw me a bit, seeing those spikes and dips where I did not expect them, and in relation to transitions on the other channel. Especially when I see some kid just wire a mess to a scope and get a near perfect waveform. lolThanks again!!

author: tautech
author_rank: Super Contributor
timestamp: October 30, 2017, 01:37:34 am
content: Quote from: TK on October 30, 2017, 12:53:16 amI think back to the days before digital, or at least when it was in its infancy where the term crosstalk was only used in audio defining the coupling between channels and sometime later when I got very interested in scopes where inter-channel crosstalk is again used in specifications.This is not to say that's the term is incorrect in the digital domain, just IMO it's too broad a term to use.Whenever you see it in specs or datasheets it's usually for a finished commercial product.In HopWorks case the effect seen is quite common in the digital domain and as long as it doesn't exceed thresholds there's no problem.Interesting discussion, others POV may support mine or yours.

author: sokoloff
author_rank: Super Contributor
timestamp: October 30, 2017, 01:55:00 am
content: Quote from: HopWorks on October 30, 2017, 12:39:38 am"Device Under Test" (the thing you're hooking the scope up to).

author: rstofer
author_rank: Super Contributor
timestamp: October 30, 2017, 02:44:51 pm
content: Quote from: HopWorks on October 30, 2017, 01:20:53 amYou need to know! Middle of Page 4 here:https://www.raspberrypi.org/app/uploads/2012/04/Raspberry-Pi-Schematics-R1.0.pdfThe board provided resistors onthe RPi are 10k. These may, or may not, be adequate. I would consider putting another 10k in parallel at the end of the bus. That would bring the pull-up value down to 5k. Maybe provide for the resistors in the custom PCB and decide later whether to install them.Getting rid of the breadboard and stringy wires will be a help but the biggest issue I see on the traces is a lack of decoupling. This isn't uncommon.