#include <errno.h>

. . .

int status = ioctl(fd, SPI_IOC_MESSAGE(1), &transfer);
if(status == -1)
        /* Google the error messege - Pay close attention to
stackoverflow.com posts */
        printf("error: %s\n", strerror(errno));

. . .


On Tue, Sep 29, 2015 at 5:25 PM, Larry M <lkmc...@gmail.com> wrote:

> I'm looking for help from someone much more knowledgeable than me, or my
> BBB is likely to go flying out the window!
>
> I am running Debian Jessie 8.2
> (BBB-eMMC-flasher-debian-8.2-lxqt-4gb-armhf-2015-09-20-4gb) on a BBB Rev C,
> with Kernel 4.0.8 PREEMPT RT.
>
> I have spidev1.0 enabled, currently connected with an SPI device (a MS5611
> barometer, if curious).  In running my code, sometimes my SPI command goes
> out, sometimes nothing goes out (all channels are flat-lined).  I would say
> only about 1/3 of the commands actually go out.  It is very repeatable
> (exactly the same behavior every time the code runs), and depends on what I
> compile in my code (e.g., if I add a printf statement, different SPI
> commands will fail).
>
> Here is an example from a logic analyzer.  SPI is in mode 3, command is
> 0xA2, exactly what I wanted to see.  I slowed the clock down to 100 kHz
> even though the barometer is capable of 20 MHz, just to make sure the
> timing wasn't too fast for the BBB.  (Note: the reply is supposed to be 2
> bytes, but clock stops after 1 byte, so clearly I need to figure out what
> is going on there.  However, at least the right command is going out the
> door.)
>
>
> <https://lh3.googleusercontent.com/-h-Node0Hp1I/VgsoHAnbh2I/AAAAAAAAAGM/bvCFP6Sq9To/s1600/Capture1.PNG>
> <https://lh3.googleusercontent.com/-h-Node0Hp1I/VgsoHAnbh2I/AAAAAAAAAGM/bvCFP6Sq9To/s1600/Capture1.PNG>
>
>
> When it doesn't work, the ioctl command returns -1 and the logic analyzer
> shows that all of the signals are flatline.  Not even the clock or CS
> lines!  This is what happens at least 2 out of 3 times, maybe more.
>
> Here is a snippet from the code, in case someone spots an error.  In this
> case, Tx would have been 0xA2, and length would be 2.
>
>    transfer.tx_buf = (unsigned long) send;     //the buffer for sending
> data
>    transfer.rx_buf = (unsigned long) receive;  //the buffer for receiving
> data
>    transfer.len = length;                      //the length of buffer
>    transfer.speed_hz = 100000;                //the speed in Hz
>    transfer.bits_per_word = 8;                 //bits per word
>    transfer.delay_usecs = 0;                   //delay in us
>
>    // send the SPI message (all of the above fields, inc. buffers)
>    int status = ioctl(fd, SPI_IOC_MESSAGE(1), &transfer);
>
>
>
> So.... HELP!!  Does anyone have a reasonable idea on what might be
> happening, or how I can fix it?  I've wasted more than 24 solid hours
> trying to debug this, to no avail.  I'm counting on you experts out there...
>
> Thanks (in advance)!!
> Larry
>
> --
> 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 beagleboard+unsubscr...@googlegroups.com.
> 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 beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to