SPI0 data in corrupt

28 views
Skip to first unread message

Joe Phaneuf

unread,
Nov 14, 2016, 5:49:28 PM11/14/16
to BeagleBoard

Cross posting from seeed forums, no responses there.

If anyone has had any success whatsoever using spi0 on a beagle bone green wireless, would love to hear about it.


tldr: clocking in data on spi0 looks cattywompus, spi1 ok


Was noticing an issue with some custom hardware/software that utilizes both spi channels, was working on beaglebone black prior.  Wanted to make it easily reproducible so flashed a bbgw and used adafruit bbio library as an example. 

steps:

1.) flash BBGW with latest production image 4.4.15-ti-r37 (tested on 4.1 kernel, and some other images that I forgot to document as well)

2.) prevent sound drivers from loading, as they conflict with spi1:

      cd /lib/modules/4.4.15-ti-r37/kernel/sound/core
      mv snd.ko snd.ko.bkp

3.) install adafruit library from source (need latest greatest, pip upgrade didn't work)

      cd ~
      git clone https://github.com/adafruit/adafruit-beaglebone-io-python.git
      cd adafruit-beaglebone-io-python
      python setup.py install
      cd ..

4.) use wires to loopback MOSI to MISO, both channels

      short P9.18 and P9.21 with a piece of wire (SPI0)

      short P9.29 and P9.30 with a piece of wire (SPI1)

5.) put the following into a file and run it

from Adafruit_BBIO.SPI import SPI
def run(x,y):

  print 'running spi {} {}'.format(x,y)
  spi = SPI(x,y)
  spi.mode=2
  spi.msh=4000000
  bytes2send = range(20)
  print 'sending {}'.format(bytes2send)
  print spi.xfer2(bytes2send)
  spi.close()

run(0,0)
run(1,0)

result:
sending [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[128, 7, 28, 31, 112, 231, 124, 127, 192, 135, 156, 159, 240, 231, 252, 255, 0, 7, 28, 31]
running spi 1 0
sending [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

so, spi1 works in loopback.  spi0...wtf? there are places where it looks like it's double clocking MISO (like a 0x00000001 becomes a 0x00000011), some of it just looks random. Works fine on beaglebone black.

Thoughts?
Reply all
Reply to author
Forward
0 new messages