Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "RockpiS/dev/libmraa"

< RockpiS‎ | dev
(UART test)
(Install essential packages: Added "install compiler" since gcc is not preinstalled in the March 2020 image)
(10 intermediate revisions by 3 users not shown)
Line 11: Line 11:
 
==== Install essential packages ====
 
==== Install essential packages ====
  
Package libmraa is in the Radxa APT bionic-testing and buster-testing repositories.
+
Package libmraa is in the Radxa APT bionic-stable and buster-stable repositories.
  
 
Execute the following commands to add Radxa APT
 
Execute the following commands to add Radxa APT
  
  rock@rockpis:~$ export DISTRO=bionic-testing     # for Bionic
+
  rock@rockpis:~$ export DISTRO=bionic-stable     # for Bionic
  
 
or
 
or
  
  rock@rockpis:~$ export DISTRO=buster-testing     # for Buster
+
  rock@rockpis:~$ export DISTRO=buster-stable     # for Buster
 
  rock@rockpis:~$ echo "deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main" | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list
 
  rock@rockpis:~$ echo "deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main" | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list
  
Line 31: Line 31:
 
  rock@rockpis:~$ sudo apt-get install -y rockchip-overlay rockpis-dtbo libmraa # libmraa version: >=0.4
 
  rock@rockpis:~$ sudo apt-get install -y rockchip-overlay rockpis-dtbo libmraa # libmraa version: >=0.4
 
  rock@rockpis:~$ sudo apt-get install -y linux-4.4-rockpis-latest # ROCK Pi S kernel version: >= 4.4.143-47
 
  rock@rockpis:~$ sudo apt-get install -y linux-4.4-rockpis-latest # ROCK Pi S kernel version: >= 4.4.143-47
 +
 +
Install compiler:
 +
rock@rockpis:~$ sudo apt install -y build-essential
  
 
==== Enable interface ====
 
==== Enable interface ====
Line 85: Line 88:
 
     PIN26      ADC_IN0          //the measure voltage must lower than 1.8v
 
     PIN26      ADC_IN0          //the measure voltage must lower than 1.8v
  
For those ROCK Pi S system images released after March 1st, 2020, to enable '''pwm2,pwm3,uart1,uart2,i2c0,i2c1,i2c3''' and so overlays=, need to follow [https://wiki.radxa.com/Device-tree-overlays Device tree overlays].
+
For those ROCK Pi S system images released after March 1st, 2020, the configuration file is /boot/uEnv.txt. For more details, follow this guide, [https://wiki.radxa.com/Device-tree-overlays Device tree overlays].
  
For those ROCK Pi S system images released before March 1st, 2020, modify '''/boot/uEnv.txt''' to enable '''pwm2,pwm3,uart1,uart2,i2c0,i2c1,i2c3''' for test.
+
For those ROCK Pi S system images released before March 1st, 2020, the configuration file is /boot/hw_intfc.conf.
 
+
<pre>
+
rock@rockpis:~$ cat /boot/uEnv.txt
+
verbosity=7
+
overlay_prefix=rockchip
+
rootfstype=ext4
+
fdtfile=rockchip/rk3308-rock-pi-s.dtb
+
overlays=rk3308-console-on-uart0 rk3308-i2c0 rk3308-i2c1 rk3308-i2c3
+
rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848
+
initrdsize=0x64d1d4
+
kernelversion=4.4.143-47-rockchip-g495ff574976c
+
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
+
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c
+
</pre>
+
  
 
==== Test ====
 
==== Test ====
Line 113: Line 102:
 
You should pay more attention to the Black Bold words when modifying configuration file /boot/uEnv.txt.
 
You should pay more attention to the Black Bold words when modifying configuration file /boot/uEnv.txt.
  
===== test gpio =====
+
===== GPIO test =====
  
 
Use '''mraa-gpio tool''' to test
 
Use '''mraa-gpio tool''' to test
  
    root@rockpis:~# mraa-gpio list
+
root@rockpis:~# mraa-gpio list
    01        3V3:  
+
01        3V3:  
    02          5V:  
+
02          5V:  
    03    I2C_SDA: GPIO I2C   
+
03    I2C_SDA: GPIO I2C   
    04          5V:  
+
04          5V:  
    05    I2C_SCL: GPIO I2C   
+
05    I2C_SCL: GPIO I2C   
    06        GND:  
+
06        GND:  
    07 I2S0_8CH_MC: GPIO  
+
07 I2S0_8CH_MC: GPIO  
    08    UART0_TX: GPIO UART  
+
08    UART0_TX: GPIO UART  
    09        GND:  
+
09        GND:  
    10    UART0_RX: GPIO UART  
+
10    UART0_RX: GPIO UART  
    11 PWM2,I2C3_S: GPIO I2C  PWM   
+
11 PWM2,I2C3_S: GPIO I2C  PWM   
    12 I2S0_8CH_SC: GPIO  
+
12 I2S0_8CH_SC: GPIO  
    13 PWM3,I2C3_S: GPIO I2C  PWM   
+
13 PWM3,I2C3_S: GPIO I2C  PWM   
    14        GND:  
+
14        GND:  
    15    SPDIF_TX: GPIO  
+
15    SPDIF_TX: GPIO  
    16 I2S0_8CH_SD: GPIO  
+
16 I2S0_8CH_SD: GPIO  
    17        3V3:  
+
17        3V3:  
    18 I2S0_8CH_SD: GPIO  
+
18 I2S0_8CH_SD: GPIO  
    19 UART1_RTSN,: GPIO SPI  UART  
+
19 UART1_RTSN,: GPIO SPI  UART  
    20        GND:  
+
20        GND:  
    21 UART1_CTSN,: GPIO SPI  UART  
+
21 UART1_CTSN,: GPIO SPI  UART  
    22 I2S0_8CH_LR: GPIO  
+
22 I2S0_8CH_LR: GPIO  
    23 UART1_RX,I2: GPIO I2C  SPI  UART  
+
23 UART1_RX,I2: GPIO I2C  SPI  UART  
    24 UART1_TX,I2: GPIO I2C  SPI  UART  
+
24 UART1_TX,I2: GPIO I2C  SPI  UART  
    25        GND:  
+
25        GND:  
    26    ADC_IN0: AIO  
+
26    ADC_IN0: AIO  
    root@rockpis:~# mraa-gpio set 15 1          #pin15 pull high
+
root@rockpis:~# mraa-gpio set 15 1          #pin15 pull high
    root@rockpis:~# mraa-gpio set 15 0          #pin15 pull high
+
root@rockpis:~# mraa-gpio set 15 0          #pin15 pull high
  
 
===== PWM test =====
 
===== PWM test =====
Line 226: Line 215:
 
ROCK Pi S V1.2 provides 3 UART,There are  '''uart0''' ,'''uart1''', '''uart2'''. If you need the uatr function, you can turn on one or more of them.
 
ROCK Pi S V1.2 provides 3 UART,There are  '''uart0''' ,'''uart1''', '''uart2'''. If you need the uatr function, you can turn on one or more of them.
  
Firstly, Disable console and enable uart0 for uart test.modify the '''/boot/uEnv.txt''' file to add the following
+
Firstly, Disable console and enable '''uart0''' for uart test.modify the '''/boot/uEnv.txt''' file to add the following
  root@rockpis:~# cat /boot/uEnv.txt  
+
 
  verbosity=7
+
root@rockpis:~# cat /boot/uEnv.txt  
  overlay_prefix=rockchip
+
verbosity=7
  rootfstype=ext4
+
overlay_prefix=rockchip
  fdtfile=rockchip/rk3308-rock-pi-s.dtb
+
rootfstype=ext4
  overlays=rk3308-uart0 rk3308-uart1 rk3308-uart2
+
fdtfile=rockchip/rk3308-rock-pi-s.dtb
  rootuuid=c3800af9-fa58-4fb3-bb56-e52fd04837ba
+
'''overlays=rk3308-uart0 rk3308-uart1 rk3308-uart2'''
  initrdsize=0x5c96c3
+
'''console='''
  kernelversion=4.4.143-47-rockchip-g495ff574976c
+
rootuuid=c3800af9-fa58-4fb3-bb56-e52fd04837ba
  initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
+
initrdsize=0x5c96c3
  kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c
+
kernelversion=4.4.143-47-rockchip-g495ff574976c
 +
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
 +
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c
 +
 
 +
Here set console to NULL value.
 +
 
 +
then reboot . use ssh connect to rockpis,we must have 2 windows,one is for send data,anothor is for receive.
 +
 
 +
send command follow:
 +
rock@rockpis:~$ sudo mraa-uart dev 0 baud 1500000 send  radxa
 +
 
 +
Another window sets the baud  1500000 and receives the data
 +
 
 +
radxa
 +
 
 +
receive command follow:
 +
rock@rockpis:~$ sudo mraa-uart dev 0 baud 1500000 recv  1000
 +
radxa
  
 
===== SPI test =====
 
===== SPI test =====
Line 260: Line 266:
 
Create file test-spi.c and add the following contents.
 
Create file test-spi.c and add the following contents.
  
  rock@rockpis:~/mraa-examples$ cat test-spi.c  
+
rock@rockpis:~/mraa-examples$ cat test-spi.c  
  #include <signal.h>
+
#include <signal.h>
  #include <stdlib.h>
+
#include <stdlib.h>
  #include <unistd.h>
+
#include <unistd.h>
 
+
  /* mraa header */
+
/* mraa header */
  #include "mraa/spi.h"
+
#include "mraa/spi.h"
 
+
  /* SPI declaration */
+
/* SPI declaration */
  '''#define SPI_BUS 2'''
+
'''#define SPI_BUS 2'''
 
+
  /* SPI frequency in Hz */
+
/* SPI frequency in Hz */
  #define SPI_FREQ 10000000
+
#define SPI_FREQ 10000000
  int
+
int
  main(int argc, char** argv)
+
main(int argc, char** argv)
  {
+
{
      mraa_result_t status = MRAA_SUCCESS;
+
    mraa_result_t status = MRAA_SUCCESS;
      mraa_spi_context spi;
+
    mraa_spi_context spi;
      int i, j;
+
    int i, j;
 
+
      /* initialize mraa for the platform (not needed most of the times) */
+
    /* initialize mraa for the platform (not needed most of the times) */
      mraa_init();
+
    mraa_init();
 
+
      //! [Interesting]
+
    //! [Interesting]
      /* initialize SPI bus */
+
    /* initialize SPI bus */
      spi = mraa_spi_init(SPI_BUS);
+
    spi = mraa_spi_init(SPI_BUS);
      if (spi == NULL) {
+
    if (spi == NULL) {
          fprintf(stderr, "Failed to initialize SPI\n");
+
        fprintf(stderr, "Failed to initialize SPI\n");
          mraa_deinit();
+
        mraa_deinit();
          return EXIT_FAILURE;
+
        return EXIT_FAILURE;
      }
+
    }
 
+
      /* set SPI frequency */
+
    /* set SPI frequency */
      status = mraa_spi_frequency(spi, SPI_FREQ);
+
    status = mraa_spi_frequency(spi, SPI_FREQ);
      if (status != MRAA_SUCCESS)
+
    if (status != MRAA_SUCCESS)
          goto err_exit;
+
        goto err_exit;
 
+
      /* set big endian mode */
+
    /* set big endian mode */
      status = mraa_spi_lsbmode(spi, 0);
+
    status = mraa_spi_lsbmode(spi, 0);
      if (status != MRAA_SUCCESS) {
+
    if (status != MRAA_SUCCESS) {
          goto err_exit;
+
        goto err_exit;
      }
+
    }
     
+
   
      j = 10;
+
    j = 10;
      while(j) {
+
    while(j) {
    j--;
+
  j--;
          printf("0x%x\n",mraa_spi_write(spi, 0xaa));
+
        printf("0x%x\n",mraa_spi_write(spi, 0xaa));
      }
+
    }
  err_exit:
+
err_exit:
      mraa_result_print(status);
+
    mraa_result_print(status);
 
+
      /* stop spi */
+
    /* stop spi */
      mraa_spi_stop(spi);
+
    mraa_spi_stop(spi);
 
+
      /* deinitialize mraa for the platform (not needed most of the times) */
+
    /* deinitialize mraa for the platform (not needed most of the times) */
      mraa_deinit();
+
    mraa_deinit();
 
+
        return EXIT_FAILURE;
+
      return EXIT_FAILURE;
  }
+
}
  rock@rockpis:~/mraa-examples$ gcc -o test-spi test-spi.c -lmraa
+
rock@rockpis:~/mraa-examples$ gcc -o test-spi test-spi.c -lmraa
  
 
Then short pin19 and pin21 and run  test-spi
 
Then short pin19 and pin21 and run  test-spi
Line 341: Line 347:
  
 
<pre>
 
<pre>
rock@rockpis:~/mraa-examples$ gcc aio aio.c -lmraa
+
rock@rockpis:~/mraa-examples$ gcc -o aio aio.c -lmraa
 
rock@rockpis:~/mraa-examples$ sudo ./aio
 
rock@rockpis:~/mraa-examples$ sudo ./aio
 
ADC A0 read 1A5 - 421
 
ADC A0 read 1A5 - 421

Revision as of 08:24, 12 May 2020

    ROCK Pi S >  Development >  Install Libmraa 

Libmraa on ROCK Pi S

This guide describes how to use libmraa on ROCK Pi S.

Install essential packages

Package libmraa is in the Radxa APT bionic-stable and buster-stable repositories.

Execute the following commands to add Radxa APT

rock@rockpis:~$ export DISTRO=bionic-stable      # for Bionic

or

rock@rockpis:~$ export DISTRO=buster-stable      # for Buster
rock@rockpis:~$ echo "deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main" | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list

Get the pub key

rock@rockpis:~$  wget -O -  apt.radxa.com/buster-testing/public.key | sudo apt-key add -

Install essential packages:

rock@rockpis:~$ sudo apt-get update
rock@rockpis:~$ sudo apt-get install -y rockchip-overlay rockpis-dtbo libmraa # libmraa version: >=0.4
rock@rockpis:~$ sudo apt-get install -y linux-4.4-rockpis-latest # ROCK Pi S kernel version: >= 4.4.143-47

Install compiler:

rock@rockpis:~$ sudo apt install -y build-essential

Enable interface

See ROCK Pi S GPIO pintout. ROCK Pi S has a 26-pin colorful expansion header. Each pin is distinguished by color. mraa define is shown below:

Hardware V12

16 GPIO:

   PIN03      GPIO2_A2
   PIN05      GPIO2_B0
   PIN07      GPIO2_B3
   PIN09      GPIO4_C4
   PIN11      GPIO4_C2
   PIN12      GPIO4_A3
   PIN13      GPIO4_C6
   PIN15      GPIO4_C5
   PIN16      GPIO4_D2
   PIN18      GPIO4_D4
   PIN19      GPIO1_B0
   PIN21      GPIO1_A7
   PIN22      GPIO4_D5
   PIN23      GPIO1_B1
   PIN24      GPIO1_B2
   PIN26      GPIO1_B2

3 I2C:

   PIN23      I2C0_SDA
   PIN24      I2C0_SCL
   PIN3       I2C1_SCL
   PIN5       I2C1_SDA
   PIN13      I2C3_SDA
   PIN15      I2C3_SCL
  

1 SPI:

   PIN19      SPI2TX        //must disable i2c0
   PIN21      SPI2RX        //must disable i2c0
   PIN23      SPI2CLK
   PIN24      SPI2CSN

3 UART:

   PIN8       UART0_TX
   PIN10      UART0_RX
   PIN23      UART1_TX
   PIN24      UART1_RX
   PIN19      UART2_RX
   PIN21      UART2_TX

2 PWM:

   PIN11      PWM2
   PIN13      PWM3

1 ADC:

   PIN26      ADC_IN0          //the measure voltage must lower than 1.8v

For those ROCK Pi S system images released after March 1st, 2020, the configuration file is /boot/uEnv.txt. For more details, follow this guide, Device tree overlays.

For those ROCK Pi S system images released before March 1st, 2020, the configuration file is /boot/hw_intfc.conf.

Test

Package libmraa provides some examples for testing spi, uart, i2c, gpio, etc. We way use the c files in /usr/local/share/mraa/examples/c.

And we copy them to home directory.

rock@rockpis:~/mraa-examples$ cp -av /usr/local/share/mraa/examples/c /home/rock/mraa-examples

You should pay more attention to the Black Bold words when modifying configuration file /boot/uEnv.txt.

GPIO test

Use mraa-gpio tool to test

root@rockpis:~# mraa-gpio list
01         3V3: 
02          5V: 
03     I2C_SDA: GPIO I2C  
04          5V: 
05     I2C_SCL: GPIO I2C  
06         GND: 
07 I2S0_8CH_MC: GPIO 
08    UART0_TX: GPIO UART 
09         GND: 
10    UART0_RX: GPIO UART 
11 PWM2,I2C3_S: GPIO I2C  PWM  
12 I2S0_8CH_SC: GPIO 
13 PWM3,I2C3_S: GPIO I2C  PWM  
14         GND: 
15    SPDIF_TX: GPIO 
16 I2S0_8CH_SD: GPIO 
17         3V3: 
18 I2S0_8CH_SD: GPIO 
19 UART1_RTSN,: GPIO SPI  UART 
20         GND: 
21 UART1_CTSN,: GPIO SPI  UART 
22 I2S0_8CH_LR: GPIO 
23 UART1_RX,I2: GPIO I2C  SPI  UART 
24 UART1_TX,I2: GPIO I2C  SPI  UART 
25         GND: 
26     ADC_IN0: AIO 
root@rockpis:~# mraa-gpio set 15 1           #pin15 pull high
root@rockpis:~# mraa-gpio set 15 0           #pin15 pull high
PWM test

ROCK Pi S V1.2 provides 2 PWM, PWM2 and PWM3. It is necessary to enable PWM1, PWM2 and PWM3 at the same time if you need PWM function.

Firstly, modify the /boot/uEnv.txt file to add the following

root@rockpis:~# cat /boot/uEnv.txt
verbosity=7
overlay_prefix=rockchip
rootfstype=ext4
fdtfile=rockchip/rk3308-rock-pi-s.dtb
overlays=rk3308-console-on-uart0 rk3308-pwm1 rk3308-pwm2 rk3308-pwm3
rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848
initrdsize=0x64d1d4
kernelversion=4.4.143-47-rockchip-g495ff574976c
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c


Modify the macro PWM in /home/rock/mraa-examples/pwm.c as follows to test PWM2. To test PWM3, change #define PWM 11 to #define PWM 13.

/* PWM declaration */
#define PWM 11

Save and compile pwm.c

rock@rockpis:~/mraa-examples$ gcc -o pwm pwm.c -lmraa
rock@rockpis:~/mraa-examples$ sudo ./pwm 
PWM value is 0.010015
PWM value is 0.019985
PWM value is 0.030000
PWM value is 0.040014
PWM value is 0.049984
PWM value is 0.059999
I2C test

ROCK Pi S V1.2 provides 3 I2C,There are I2C0 ,I2C1, I2C3. If you need the I2C function, you can turn on one or more of them.

Firstly, modify the /boot/uEnv.txt file to add the following

root@rockpis:~# cat /boot/uEnv.txt
verbosity=7
overlay_prefix=rockchip
rootfstype=ext4
fdtfile=rockchip/rk3308-rock-pi-s.dtb
overlays=rk3308-console-on-uart0  rk3308-i2c0 rk3308-i2c1 rk3308-i2c3
rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848
initrdsize=0x64d1d4
kernelversion=4.4.143-47-rockchip-g495ff574976c
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c

We use MPU6050 tets i2c. Modify the macro MPU6050 in /home/rock/mraa-examples/i2c_mpu6050.c ,as follows to test I2C0. To test I2C1 and I2C3, change #define I2C_BUS 0 to #define I2C_BUS 1 or#define I2C_BUS 3 .

  /* mraa header */
  #include "mraa/i2c.h"
  #define I2C_BUS 0
  

Save and compile pwm.c

rock@rockpis:~/mraa-examples$ gcc -o i2c_mpu6050 i2c_mpu6050.c  -lmraa
rock@rockpis:~/mraa-examples$ sudo ./i2c_mpu6050
accel: x:0 y:0 z:0
gyro: x:-10 y:1 z:7
  
accel: x:0 y:0 z:0
gyro: x:107 y:-12 z:69
   
accel: x:0 y:0 z:0
gyro: x:6 y:136 z:-50
   
accel: x:0 y:0 z:0
gyro: x:-5 y:48 z:-103
     
accel: x:0 y:0 z:0
gyro: x:3 y:3 z:5
UART test

ROCK Pi S V1.2 provides 3 UART,There are uart0 ,uart1, uart2. If you need the uatr function, you can turn on one or more of them.

Firstly, Disable console and enable uart0 for uart test.modify the /boot/uEnv.txt file to add the following

root@rockpis:~# cat /boot/uEnv.txt 
verbosity=7
overlay_prefix=rockchip
rootfstype=ext4
fdtfile=rockchip/rk3308-rock-pi-s.dtb
overlays=rk3308-uart0 rk3308-uart1 rk3308-uart2
console=
rootuuid=c3800af9-fa58-4fb3-bb56-e52fd04837ba
initrdsize=0x5c96c3
kernelversion=4.4.143-47-rockchip-g495ff574976c
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c

Here set console to NULL value.

then reboot . use ssh connect to rockpis,we must have 2 windows,one is for send data,anothor is for receive.

send command follow:

rock@rockpis:~$ sudo mraa-uart dev 0 baud 1500000 send  radxa

Another window sets the baud 1500000 and receives the data

radxa

receive command follow:

rock@rockpis:~$ sudo mraa-uart dev 0 baud 1500000 recv  1000
radxa
SPI test

Firstly, modify the /boot/uEnv.txt file.

root@rockpis:~# cat /boot/uEnv.txt
verbosity=7
overlay_prefix=rockchip
rootfstype=ext4
fdtfile=rockchip/rk3308-rock-pi-s.dtb
overlays=rk3308-console-on-uart0 rk3308-spi-spidev
param_spidev_spi_bus=2
rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848
initrdsize=0x64d1d4
kernelversion=4.4.143-47-rockchip-g495ff574976c
initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c
kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c

then execute command, sync, followed by reboot.

Create file test-spi.c and add the following contents.

rock@rockpis:~/mraa-examples$ cat test-spi.c 
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>

/* mraa header */
#include "mraa/spi.h"

/* SPI declaration */
#define SPI_BUS 2

/* SPI frequency in Hz */
#define SPI_FREQ 10000000
int
main(int argc, char** argv)
{
    mraa_result_t status = MRAA_SUCCESS;
    mraa_spi_context spi;
    int i, j;

    /* initialize mraa for the platform (not needed most of the times) */
    mraa_init();

    //! [Interesting]
    /* initialize SPI bus */
    spi = mraa_spi_init(SPI_BUS);
    if (spi == NULL) {
        fprintf(stderr, "Failed to initialize SPI\n");
        mraa_deinit();
        return EXIT_FAILURE;
    }

    /* set SPI frequency */
    status = mraa_spi_frequency(spi, SPI_FREQ);
    if (status != MRAA_SUCCESS)
        goto err_exit;

    /* set big endian mode */
    status = mraa_spi_lsbmode(spi, 0);
    if (status != MRAA_SUCCESS) {
        goto err_exit;
    }
   
    j = 10;
    while(j) {
  	j--;
        printf("0x%x\n",mraa_spi_write(spi, 0xaa));
    }
err_exit:
    mraa_result_print(status);

    /* stop spi */
    mraa_spi_stop(spi);

    /* deinitialize mraa for the platform (not needed most of the times) */
    mraa_deinit();

     return EXIT_FAILURE;
}
rock@rockpis:~/mraa-examples$ gcc -o test-spi test-spi.c -lmraa

Then short pin19 and pin21 and run test-spi

rock@rockpis:~/mraa-examples$ sudo ./test-spi 
0xaa
0xaa
0xaa
0xaa
0xaa
0xaa
0xaa
0xaa
0xaa
0xaa
MRAA: SUCCESS
ADC test

connect signal you want to measure, and then compile mraa example c file, aio.c, to test.

rock@rockpis:~/mraa-examples$ gcc -o aio aio.c -lmraa
rock@rockpis:~/mraa-examples$ sudo ./aio
ADC A0 read 1A5 - 421
ADC A0 read float - 0.41153
ADC A0 read 1A5 - 421
ADC A0 read float - 0.41153
ADC A0 read 1A5 - 421
ADC A0 read float - 0.41153
ADC A0 read 1A5 - 421
ADC A0 read float - 0.41153

Development

More introduction of libmraa can look at libmraa official website.

Troubleshooting