Porting SPI code from (Intel) Galileo to Edison – Arduino

arduinoclockintelspi

I'm currently working to port some Arduino sketches from Intel Galileo that use SPI (using a prototype Arduino Breakout board).

I haven't been able to get it to work so far – but I have used an oscilloscope to have a look at what the SPI is actually doing.

I have observed that the SPI clock signals from the Galileo and Edison are a different shape and are also a different voltage (note the scales on the top of the display). I have also noticed that the Galileo's clock is on the whole time whereas the Edison's switches off and on every few seconds.

oscilloscope

The top one is the Edison, and the bottom one is the Galileo.

As a software guy I don't really know what's going on here – does anyone know what could be causing this? Is this something I can change in software or is it definitely a hardware thing? And would this be caused by the Edison itself or the breakout board?

Thanks – any help or guidance is appreciated!

Edit – More information

Below are some more images of the clocks running at different frequencies – NOTE: The Galileo (desired behaviour) is now at the top, and the Edison is at the bottom. The scales have been adjusted to be the same.

125khz

Imgur

1Mhz

Imgur

4Mhz

Imgur

It looks like the clock is becoming more and more distorted on the Edison as we increase the frequency – could this be what is causing our problems? Now the overshoot is so dominant that it appears to be at a higher logic level.

Best Answer

You really need to determine whether all of that overshoot and ringing displayed on the scope is real, or just an artifact caused by how you're probing the circuit. I suspect it's the latter, so make sure you have a solid ground connection, your probes are properly compensated, and/or borrow/buy some better ones.

In general (ignoring the ringing and focusing on the underlying shape of the waveform), it looks like the Edison has a weaker clock driver than the Galileo, and in fact, it's so weak at 4 MHz that the overall amplitude is seriously reduced. If you're driving a relatively long or heavily-loaded bus, the Edison may need external buffers for the clock and MOSI lines.