Hello Guy, I'm also trying to have BBB on a SPI bus as slave. Is it possible for you to share your code/protocol?
Best, Alireza On Monday, April 14, 2014 at 10:57:29 AM UTC-7, Guy Grotke wrote: > > I am running BBB SPI as slave but using the opposite direction for the > data pins: > > 0x150 0x30 /* spi0_sclk.spi0_sclk, INPUT_PULLUP | MODE0 */ > 0x154 0x10 /* spi0_d0.spi0_d0, OUTPUT_PULLUP | MODE0 */ > 0x158 0x30 /* spi0_d1.spi0_d1, INPUT_PULLUP | MODE0 */ > 0x15c 0x30 /* spi0_cs0.spi0_cs0, INPUT_PULLUP | MODE0 */ > > I think your way can work fine too, it just requires setting up the right > values in the SPI control registers. > > But to make mine work as slave, I had to use mmap to directly access the > SPI hardware registers. I can do that from user-space because the protocol > I designed for my SPI hardware has no realtime requirements that would > require interrupts. (The packets in both directions always fit in the > FIFOs, and run in a half-duplex command/response mode.) > > I don’t think any Linux SPI drivers support slave mode, and there is even > an explanation available from Linus Torvalds if you search the web. If > you need interrupts for more demanding performance, you will have to write > your own driver. > > > > *From:* [email protected] <javascript:> > *Sent:* Saturday, April 12, 2014 1:39 AM > *To:* [email protected] <javascript:> > *Subject:* [beagleboard] Reading over SPI with Beaglebone Black as Slave > > Im trying to use the Beaglebone Black as a slave device and read from > the arduino over SPI. > > Im confused as to why I am just getting 255 repeated over and over on the > terminal as an output. > My thought is that there is some kind of a memory leak or buffer overflow. > I just can not figure out what > I'm doing wrong. Is one supposed to set cs as input? even with it set to > output I have the same issue. > > I have my dts file set as: > > /dts-v1/; > /plugin/; > > / { > compatible = "ti,beaglebone", "ti,beaglebone-black"; > > /* identification */ > part-number = "spi0pinmux"; > > fragment@0 { > target = <&am33xx_pinmux>; > __overlay__ { > spi0_pins_s0: spi0_pins_s0 { > pinctrl-single,pins = < > 0x150 0x30 /* spi0_sclk, INPUT_PULLUP | MODE0 */ > 0x154 0x30 /* spi0_d0, INPUT_PULLUP | MODE0 */ > 0x158 0x10 /* spi0_d1, OUTPUT_PULLUP | MODE0 */ > 0x15c 0x30 /* spi0_cs0, INPUT_PULLUP | MODE0 */ > >; > }; > }; > }; > > fragment@1 { > target = <&spi0>; > __overlay__ { > #address-cells = <1>; > #size-cells = <0>; > > status = "okay"; > pinctrl-names = "default"; > pinctrl-0 = <&spi0_pins_s0>; > > spidev@0 { > spi-max-frequency = <24000000>; > reg = <0>; > compatible = "linux,spidev"; > }; > }; > }; > }; > > My Arduino is wired up like so: > P9.22 SPI0_CLK - Orange - 0x150 0x30 --> Arduino Due 110 SCLK > P9.21 SPI0_D0 - Green - 0x154 0x30 --> Arduino Due 109 MOSI > P9.18 SPI0_D1 - White - 0x158 0x10 --> 108 MISO > P9.17 SP0_CS0 - Black - 0x15C 0x30 ---> Pin 10 Set as Slave Select > > Python File: > import spidev > import time > spi = spidev.SpiDev() > spi.open(1,0) > while True: > resp = spi.readbytes(1) > print resp[0] > > -- > 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] <javascript:>. > 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.
