1
\$\begingroup\$

I just ordered my first scope (a Rigol DS1054Z) and have been thinking about some interesting experiments/learning projects to perform with it. Thus far most of my experience has been in building circuits/MCU + FPGA programming.

One thing I'd like to try to play around with is signal reverse engineering on a bus between two unknown MCU's. While tapping the signal either with a scope, or with a logic analyzer which I also have is fairly straight forward, the question occurred to me, how might one determine signal 'direction'-- I.e. Assuming it is communication between two MCU's, not just out to a passive peripheral, for any given signal, how might one determine, at any given point in time which chip is actually the one 'doing the talking' ?

My first thought in this regard was to design a simple off board circuit that I could use to tap into the bus that would have scope touch points and two LED's in an opposing parallel configuration with the minimum required resistance to operate them. While of course this may not preserve the complete signal integrity for the duration, at least I might be able to obtain a matching 'time/direction' map on the scope I could use to compare with an unfettered bus signal.

However, reading around a little bit I've seen suggestions that imply in this case 'current flow', is not always equivalent to direction, and so this approach might not work.

Even still, it seems to me that the signal must have some temporal propagation delay, implying direction, however small.

My question then is what might be the most reasonable/logical approach to address such an exploration ?

\$\endgroup\$
  • 1
    \$\begingroup\$ It's highly subjective, but generally speaking, edges will be "sharper" and voltage levels will be "stronger" if you're probing near the chip that is currently driving the signal. If you probe close to the chip that is receiving, edges will be more rounded and voltage levels will be more attenuated. It's a comparative thing, as opposed to any sort of absolute criteria. \$\endgroup\$ – Dave Tweed Apr 9 '15 at 23:25
  • 2
    \$\begingroup\$ I don't know where I've seen this before, but one way would be to cut the line and add a small-ish resistor in line, then measure the voltages on each side of the resistor. The side with the higher voltage is the driver. \$\endgroup\$ – helloworld922 Apr 10 '15 at 0:50
  • \$\begingroup\$ Thanks both for the suggestions on this. Once getting my thoughts out in writing I also considered another possibility that might work which I hadn't considered before-- Assuming there is some significant propagation delay why not try probing the same line twice ? I.e. Place one probe at the pin of one MCU and the second at the matching connector pin of the second MCU. Thus (at least assuming the channels are isolated and that it won't create some kind of strange short) direction can be inferred by the direction in time delay/offset of the signal. \$\endgroup\$ – Anthony Balducci Apr 10 '15 at 7:42
  • 1
    \$\begingroup\$ The propagation delay method is workable provided the MCUs under test can function with connecting cables long enough for the delay to show clearly on your scope. On a scope with 50MHz bandwidth it would be desirable to see at least 20nS difference which imples roughly 15 inch cables. \$\endgroup\$ – cuddlyable3 Apr 10 '15 at 11:25
1
\$\begingroup\$

As "helloworld922" said, put a low value in-line resistor (you can probably get away with something as high as 100R, but I'd go for something like 10R), and also pull both sides of that resistor to GND with equal, high-value resistors (e.g. 10k). You should be able to see the voltage drop on a "high" signal.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.