Quantcast
Viewing all articles
Browse latest Browse all 20046

Unable to get any signals on SPI MOSI, variant.cpp has bugs in data structures

In order to get started with using SPI on the Edison, I have wired up one of Adafruit's OLED boards (Monochrome 128x32 SPI OLED graphic display ID: 661 - $17.50 : Adafruit Industries, Unique & fun DIY electronics and kits) to my edison on the Intel Arduino breakout board.

 

I am using the linux 64 bit weekly 68 SDK (http://downloadmirror.intel.com/24271/eng/edison-sdk-linux64-weekly-68.zip)

 

I am using http://downloadmirror.intel.com/24271/eng/arduino-linux64-1.0.3.tgz for my IDE.

 

I have attached a log of my boot sequence output; it shows what versions of the kernel, etc I am using.  I am just using the Yocto image from http://downloadmirror.intel.com/24271/eng/edison-image-ww36-14.zip.

 

I started with Adafruit's arduino sample code for the oled (adafruit/Adafruit_SSD1306 · GitHub) and Adafruit_SSD1306/ssd1306_128x32_spi.ino at master · adafruit/Adafruit_SSD1306 · GitHub.

 

Depending on which  Adafruit_SSD1306 constructor is used, one can choose from software SPI (where CLK and MOSI are twiddled as GPIOs) or hardware SPI (where the Arduino SPI object is used).

 

When I use the software SPI constructor, all is good.  Basically, this version just uses pins 13 (clk), 11 (mosi), 10 (slave select), plus a couple of oled-specific lines as gpios.

 

When I use the hardware SPI constructor, I have no success.

 

In the process of debugging my problem I have determined that the current version of arduino-1.5.3-Intel.1.0.3//hardware/arduino/edison/variants/edison_fab_c/variants.cpp has problems in the mux structures with respect to SPI.

 

First of all, MuxDesc13's entry for the SPI MODE gpio is:

{ 109, PIN_MODE_1, FN_GPIO }, // SPI mode

instead of

{ 109, PIN_MODE_1, FN_SPI }, // SPI mode

 

Next,  g_APinDescription[] does not contain any entries for the GPIOs (109, 114, 115) referenced in MuxDesc11, MuxDesc12, and MuxDesc13.

 

I fixed these issues in my local version of variant.cpp, and that still did not get hardware SPI working.

 

I am watching pins 13, 11, and 10 (with LEDs) to see if they ever go high  when I run my oled sketch mentioned above, and I see that the clk (13) does go high, the slave select seems to be working, but that's just a plain old gpio, and most importantly, pin 11 (mosi) never goes high, indicating no data is being sent over the wire.

 

By the way, with the same hardware configuration, if I switch to "software spi" and just use pins 13 and 11 as gpio pins, I see these pins go high as expected.

 

So my question is, has anybody gotten hardware spi working on the Edison using the Arduino breakout board?

 

If so, how?

Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 20046

Trending Articles