Electronic – Not able to read SPI signal with digital oscilloscope


I'm trying to connect my beagle board xm rev. C to an external SPI device. Before doing this, I want to study SPI signal coming out from SIMO pin when running the spidev_test program (included in the Linux kernel source tree under Documentation/spi/spidev_test.c).

The problem is that I cannot see any signal coming out from pin 19 (McSPI3_SIMO), although spidev_test is working fine. In fact, if I short-circuit pin 19 and pin 17 (McSPI3_SOMI), I can see a bunch of bytes going out and coming back. I'm new to oscilloscope so I'm doing something wrong for sure in setting the scope.

My scope is a Siglent SDS1000DL. It is new and it is working fine, since I tested it with other simple signals.

Reading the BB xm rev. C SRM (http://beagleboard.org/static/BBxMSRM_latest.pdf) I know the voltage levels on the expansion header are 1.8V. From what I understood this means that when I transmit an hex digit on the wire, for example '0xA' (in binary it is '1010', decimal '10'), I should see on the scope an impulse whose amplitude is 1.8V (the first logical '1'), then the signal should fall down to 0V (the second binary '0'), then again an impulse at 1.8V (the third logical '1') and in conclusion the last '0'.

For this reason, I set the Volt/div parameter to 1.8V, in order to have a logical '1' on the wire displayed as high as a single screen vertical division.

Regarding Sec/div parameter, it don't know the best value to set. The clock frequency of the SPI test signal is 500 kHz. I know this because it is an information printed on stdout when running the spidev_test program. 500 kHz is a period of 2 µs. I am wondering if setting sec/div to 2 µs has sense. My screen has 15 horizontal divisions.

For the physical setup I hooked up the probe to pin 19 (SIMO) and the probe alligator clip to pin 27 (GND). You can read which signals come out from which pin on the bb xm SRM, page 108.

Finally, I don't know what's the best probe setting, 1X or 10X (I have only these two options).

So I would like to ask to who already tried this kind of measurements; What are the best scope settings in order to capture and display SPI signals?

Best Answer

It looks like the test is designed to be done as a loopback test (i.e. with the SIMO/SOMI pin shorted)
If you don't have them shorted, you won't see anything on the SIMO line unless you have a signal input from elsewhere.
SIMO = Slave In Master Out
SOMI = Slave Out Master In
I'm assuming the beagleboard sets itself up as a SPI slave, hence the pin names (more commonly MISO and MOSI)

As far as the scope settings go, x10 for the probe is best as it adds the lowest capacitance load to the line under test (means you can see higher frequencies)

For the timebase and Vdiv, just set things up as needed on the fly. 2us and 1V/div sounds fine to start with. You would often set the Vdiv to a sensible value for the bus voltage to get the signal to fill a large portion of the screen.

Then adjust the timebase in/out when you want to focus on different things, e.g. smaller if you want to check the risetime of the signal, ringing or transients, larger if you want to see more than one byte or stuff like power supply interference.
You will quickly find you are twiddling the knobs constantly when debugging, so don't worry too much about initial settings.