2014-05-14 14:49 GMT+02:00 Stuart Reynard <[email protected]>:
> Hi Jose,
>
> I finished this project a couple of weeks ago.
>
> I wanted to thank you for getting back to me with such helpful information,
> and I also wanted to follow up with my solution to the SPI problem (for
> future users).
>

Great

> I ended up using a different driver file for SPI0 than the one provided by
> Adafruit:
>
> http://elinux.org/BeagleBone_Black_Enable_SPIDEV
>
> Guide for adding SPI driver:
>
> http://stackoverflow.com/questions/21276090/beaglebone-black-enable-spi-interface
>

I'm not using adafruit library anymore. It doesn't work with newest
kernels, so I had to use another one.

> For me, the easiest method for verification was to read the DEVID register
> on the accelerometer.
>
> #python code:
> print spi.xfer2([0x80,0x00])
>
> This prints a list of 2 bytes. With how I understand SPI to work, the second
> byte in the printed list should always be the DEVID. The first byte may or
> may not be the DEVID. This is just one of the nuances of the data flow of
> SPI.


I think it's not a spi fault but a combination of spi and the way
Analog Devices set it up .

Thanks for your advices and confirmation.

José L.


>
> -Stuart
>
>
>
>
> On Sunday, March 30, 2014 3:43:07 PM UTC-4, José Luis Redrejo wrote:
>>
>> Hello Stuart, I've been using BBB to communicate with another Analog
>> Devices device (ADE7753) , and I can confirm you that it works.
>> Have you tried to do a loopback test before connecting the ADXL275?
>> Just use a wire in the BBB to join DI and DO in P9, and run this
>> program:
>>
>>
>> from Adafruit_BBIO.SPI import SPI
>>
>> spi = SPI(0,0)
>> spi.mode=2
>>
>> spi.msh=2000000
>> spi.open(0,0)
>>
>> print spi.xfer2([32, 11, 110, 22, 220])
>> spi.close()
>>
>> You should see 32,11,110,22,220 in your terminal as it's returned by
>> the spi instruction.
>>
>> You don't need
>> spi.cshigh = low
>> because that's its default value.
>>
>> If the loopback test works, then you can try with the device. I can
>> confirm you that using ADE7753 and adafruit python library I have need
>> some time to get it working, until I found out the trick.
>>
>> Regards.
>> José L.
>>
>>
>>
>> 2014-03-30 18:10 GMT+02:00 Stuart Reynard <[email protected]>:
>> > I am working on a design project involving a BeagleBone Black and an
>> > ADXL375
>> > Accelerometer.
>> >
>> > Per the data sheet (attached), in order to enable the maximum sampling
>> > rate
>> > of the ADXL375, I need my BBB to communicate with the ADXL375 over SPI
>> > (I2C
>> > is not fast enough for this).
>> >
>> > I have used the Adafruit library for I2C just to test the functionality
>> > of
>> > the ADXL375, and I can confirm that the accel. does in fact work.
>> > However, I
>> > am unsure of how to even perform a simple read of the ADXL375 DEVID
>> > register
>> > using SPI. I have included my steps for how I think a read should be
>> > performed, but I suspect that this process is incorrect as I get no
>> > output.
>> >
>> > I am using the Adafruit BBIO library which I understand is just a python
>> > wrapper for the file spimodule.c. All of this is available here:
>> >
>> > https://github.com/adafruit/adafruit-beaglebone-io-python/
>> >
>> > Based on that code, I am not sure if I will need to hold CS low using
>> > one of
>> > the methods/variables of an SPI object or if the
>> > writebytes()/readbytes()
>> > methods take care of this for me. In other words, I don't know if I
>> > should
>> > be doing something like
>> >
>> > spi.cshigh = low
>> > spi.writebytes([list])
>> > spi.readbytes(numBytes)
>> >
>> > OR if I can just do
>> >
>> > spi.writebytes([list])
>> > spi.readbytes(numBytes)
>> >
>> > Process for reading from SPI (from python terminal):
>> >
>> > from Adafruit_BBIO.SPI import SPI
>> >
>> > #using SPI bus 0 on P9 of BBB, assuming i'm using dev0, not really sure
>> > how
>> > to determine this, but I have no other peripherals connected
>> > spi = SPI(0,0)
>> >
>> > #set desired frequency, 2MHz
>> > spi.msh = 2000000
>> >
>> > #per the ADXL375 datasheet, when performing a read, need to send a byte
>> > where bits 0-5 are address bits (DEVID register is 0x0), bit 6 is a
>> > multiple
>> > bytes bit (for reading/writing multiple bytes), and bit 7 is a
>> > read/write
>> > bit where read is '1' and write is '0'
>> >
>> > #so I use 0b10000000 or 0x80 and call writebytes
>> > spi.writebytes([0x80])
>> >
>> > From here I receive no output, even if I do spi.readbytes(1), I get [0]
>> > back.
>> >
>> > I have a pretty good understanding of Linux, Python, C, and the concept
>> > of
>> > SPI seems simple enough, but this is my first experience with a BBB. I
>> > feel
>> > like I am missing something simple like setting CS low, which I don't
>> > think
>> > is very clearly documented in the attributes for the SPI library.
>> >
>> > Here is some info about my BBB:
>> > lsb_release -a
>> > Distributor ID: Angstrom
>> > Description: Angstrom GNU/Linux v2012.12 (Core edition)
>> > Release: v2012.12
>> > Codename: Core edition
>> >
>> > uname -a
>> > Linux beaglebone 3.8.13 #1 SMP Wed Sep 4 09:09:32 CEST 2013 armv7l
>> > GNU/Linux
>> >
>> > I have also attached the breakout board user guide for the ADXL375. I
>> > would
>> > be happy to come back with any additional info.
>> >
>> > Thanks,
>> > Stuart
>> >
>> > --
>> > For more options, visit http://beagleboard.org/discuss
>> > ---
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "BeagleBoard" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an
>> > email to [email protected].
>> > For more options, visit https://groups.google.com/d/optout.
>
> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to