As far as I know .. and I am a beginner also been playing with it for a
month now.. BBB is not compatible with the wifi cape because the spi port
is already routed to be used by HDMI bus port. the best way right now is to
use a USB wifi and it should work fine.
On Monday, November 4, 2013 6:30:16 PM UTC-8, Helen Paiva wrote:
>
>
> Hi all,
> I am beginner with the BeagleBone Black board and I have a problem with
> the SPI communication.
> I am trying to communicate with the Redpine wifi board by SPI. The
> BeagleBone Black is the master and the wifi board is the slave.
>
> Part of the configuration of my BB-SPI0DEV-00A0.dts is the follow:
>
> /* state the resources this cape uses */
> exclusive-use =
> /* the pin header uses */
> "P9.17", /* spi0_cs0 */
> "P9.18", /* spi0_d1 MOSI */
> "P9.21", /* spi0_d0 MISO*/
> "P9.22", /* spi0_sclk */
> /* the hardware ip uses */
> "spi0";
> fragment@0 {
> target = <&am33xx_pinmux>;
> __overlay__ {
> bb_spi0_pins: pinmux_bb_spi0_pins {
> pinctrl-single,pins = <
> 0x150 0x10 /* spi0_sclk.spi0_sclk, OUTPUT_PULLUP |
> MODE0 */
> 0x154 0x30 /* spi0_d0.spi0_d0, INPUT_PULLUP | MODE0 */
> 0x158 0x10 /* spi0_d1.spi0_d1, OUTPUT_PULLUP | MODE0
> */
> 0x15c 0x10 /* spi0_cs0.spi0_cs0, OUTPUT_PULLUP |
> MODE0 */
> >;
> };
> };
> };
>
>
> I made all the configuration for the SPI and I am trying to execute the
> spidev_test exemple.
> I am using the osciloscophe, so I can see that the message sent and
> received are corrects!
> I am sendding 0x15 0x00 and receiving 0x00 0x58, but in the program, the
> receive rx only shows me 0x00 0x00.
> Somebody can help me to find what I am doing wrong? If the osciloscope
> shows me the correct signal for the send, receive, clock and CS. What could
> be wrong in my SPI configuration? I tried so many configurations, I dont
> know if I am setting wrong the ioctl.
>
> Spidev_test exemplo:
>
> #include <stdint.h>
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <getopt.h>
> #include <fcntl.h>
> #include <sys/ioctl.h>
> #include <linux/types.h>
> #include <linux/spi/spidev.h>
>
> #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
>
> static void pabort(const char *s)
> {
> perror(s);
> abort();
> }
>
> static const char *device = "/dev/spidev1.0";
> static uint8_t mode;
> static uint8_t bits = 8;
> static uint32_t speed = 500000;
> static uint16_t delay = 0;
>
> static void transfer(int fd)
> {
> int ret;
> uint8_t tx[] = {
> 0x15, 0x00,
> };
>
> uint8_t rx[ARRAY_SIZE(tx)] = {0, };
>
> struct spi_ioc_transfer tr = {
> .tx_buf = (unsigned long)tx,
> .rx_buf = (unsigned long)rx,
> .len = ARRAY_SIZE(tx),
> .delay_usecs = delay,
> .speed_hz = speed,
> .bits_per_word = bits,
> };
>
> ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
> if (ret < 1)
> pabort("can't send spi message");
>
> for (ret = 0; ret < ARRAY_SIZE(tx); ret++) {
> if (!(ret % 6))
> puts("");
> printf("%.2X ", rx[ret]);
> }
> puts("");
> }
>
>
> int main(int argc, char *argv[])
> {
> int ret = 0;
> int fd;
>
> fd = open(device, O_RDWR);
> if (fd < 0)
> pabort("can't open device");
>
> /*
> * spi mode
> */
> ret = ioctl(fd, SPI_IOC_WR_MODE, &mode);
> if (ret == -1)
> pabort("can't set spi mode");
>
> ret = ioctl(fd, SPI_IOC_RD_MODE, &mode);
> if (ret == -1)
> pabort("can't get spi mode");
>
> /*
> * bits per word
> */
> ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
> if (ret == -1)
> pabort("can't set bits per word");
>
> ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
> if (ret == -1)
> pabort("can't get bits per word");
>
> /*
> * max speed hz
> */
> ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
> if (ret == -1)
> pabort("can't set max speed hz");
>
> ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
> if (ret == -1)
> pabort("can't get max speed hz");
>
> printf("spi mode: %d\n", mode);
> printf("bits per word: %d\n", bits);
> printf("max speed: %d Hz (%d KHz)\n", speed, speed/1000);
>
> transfer(fd);
>
> close(fd);
>
> return ret;
> }
>
--
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/groups/opt_out.