<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.radxa.com/mw/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.radxa.com/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tan</id>
		<title>Radxa Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.radxa.com/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tan"/>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/Special:Contributions/Tan"/>
		<updated>2026-06-12T06:29:09Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>https://wiki.radxa.com/RockpiS/dev/libmraa</id>
		<title>RockpiS/dev/libmraa</title>
		<link rel="alternate" type="text/html" href="https://wiki.radxa.com/RockpiS/dev/libmraa"/>
				<updated>2022-08-02T09:52:20Z</updated>
		
		<summary type="html">&lt;p&gt;Tan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{rockpiS_header}}&lt;br /&gt;
&lt;br /&gt;
{{Languages|rockpiS/dev/libmraa}}&lt;br /&gt;
&lt;br /&gt;
    [[rockpiS | ROCK Pi S]] &amp;gt; [[rockpiS/dev | Development]] &amp;gt; [[rockpiS/dev/libmraa  | Install Libmraa ]]&lt;br /&gt;
&lt;br /&gt;
=== Libmraa on ROCK Pi S ===&lt;br /&gt;
&lt;br /&gt;
This guide describes how to use libmraa on ROCK Pi S.&lt;br /&gt;
&lt;br /&gt;
==== Install essential packages ====&lt;br /&gt;
&lt;br /&gt;
Package libmraa is in the Radxa APT bionic-stable and buster-stable repositories.&lt;br /&gt;
&lt;br /&gt;
Execute the following commands to add Radxa APT&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~$ export DISTRO=bionic-stable      # for Bionic&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~$ export DISTRO=buster-stable      # for Buster&lt;br /&gt;
 rock@rockpis:~$ echo &amp;quot;deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main&amp;quot; | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list&lt;br /&gt;
&lt;br /&gt;
Get the pub key&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~$  wget -O -  apt.radxa.com/buster-testing/public.key | sudo apt-key add -&lt;br /&gt;
&lt;br /&gt;
Install essential packages:&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~$ sudo apt-get update&lt;br /&gt;
 rock@rockpis:~$ sudo apt-get install -y rockchip-overlay libmraa # libmraa version: &amp;gt;=0.4&lt;br /&gt;
 rock@rockpis:~$ sudo apt-get install -y linux-4.4-rock-pi-s-latest # ROCK Pi S kernel version: &amp;gt;= 4.4.143-47&lt;br /&gt;
&lt;br /&gt;
Install compiler:&lt;br /&gt;
 rock@rockpis:~$ sudo apt install -y build-essential&lt;br /&gt;
&lt;br /&gt;
==== Enable interface ====&lt;br /&gt;
&lt;br /&gt;
See ROCK Pi S [[rockpiS/hardware/gpio | GPIO pintout]]. ROCK Pi S has a 26-pin colorful expansion header. Each pin is distinguished by color. mraa define is shown below:  &lt;br /&gt;
&lt;br /&gt;
===== Hardware V1.2 =====&lt;br /&gt;
&lt;br /&gt;
16 GPIO:&lt;br /&gt;
    PIN03      GPIO2_A2&lt;br /&gt;
    PIN05      GPIO2_B0&lt;br /&gt;
    PIN07      GPIO2_B3&lt;br /&gt;
    PIN09      GPIO4_C4&lt;br /&gt;
    PIN11      GPIO4_C2&lt;br /&gt;
    PIN12      GPIO4_A3&lt;br /&gt;
    PIN13      GPIO4_C6&lt;br /&gt;
    PIN15      GPIO4_C5&lt;br /&gt;
    PIN16      GPIO4_D2&lt;br /&gt;
    PIN18      GPIO4_D4&lt;br /&gt;
    PIN19      GPIO1_B0&lt;br /&gt;
    PIN21      GPIO1_A7&lt;br /&gt;
    PIN22      GPIO4_D5&lt;br /&gt;
    PIN23      GPIO1_B1&lt;br /&gt;
    PIN24      GPIO1_B2&lt;br /&gt;
    PIN26      GPIO1_B2&lt;br /&gt;
&lt;br /&gt;
3 I2C:&lt;br /&gt;
    PIN23      I2C'''0'''_SDA&lt;br /&gt;
    PIN24      I2C'''0'''_SCL&lt;br /&gt;
    PIN3       I2C'''1'''_SCL&lt;br /&gt;
    PIN5       I2C'''1'''_SDA&lt;br /&gt;
    PIN13      I2C'''3'''_SDA&lt;br /&gt;
    PIN15      I2C'''3'''_SCL&lt;br /&gt;
   &lt;br /&gt;
1 SPI:&lt;br /&gt;
    PIN19      SPI'''2'''TX        //must disable i2c0&lt;br /&gt;
    PIN21      SPI'''2'''RX        //must disable i2c0&lt;br /&gt;
    PIN23      SPI'''2'''CLK&lt;br /&gt;
    PIN24      SPI'''2'''CSN&lt;br /&gt;
&lt;br /&gt;
3 UART:&lt;br /&gt;
    PIN8       UART'''0'''_TX&lt;br /&gt;
    PIN10      UART'''0'''_RX&lt;br /&gt;
    PIN23      UART'''1'''_TX&lt;br /&gt;
    PIN24      UART'''1'''_RX&lt;br /&gt;
    PIN19      UART'''2'''_RX&lt;br /&gt;
    PIN21      UART'''2'''_TX&lt;br /&gt;
&lt;br /&gt;
2 PWM:&lt;br /&gt;
    PIN11      PWM'''2'''&lt;br /&gt;
    PIN13      PWM'''3'''&lt;br /&gt;
&lt;br /&gt;
1 ADC:&lt;br /&gt;
    PIN26      ADC_IN0          //the measure voltage must lower than 1.8v&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
For those ROCK Pi S system images released before March 1st, 2020, the configuration file is /boot/hw_intfc.conf.&lt;br /&gt;
&lt;br /&gt;
===== Hardware V1.3=====&lt;br /&gt;
&lt;br /&gt;
28 GPIO:&lt;br /&gt;
    PIN03      GPIO2_A2&lt;br /&gt;
    PIN05      GPIO2_B0&lt;br /&gt;
    PIN07      GPIO2_B3&lt;br /&gt;
    PIN08      GPIO2_A1&lt;br /&gt;
    PIN09      GPIO4_C4&lt;br /&gt;
    PIN11      GPIO4_C2&lt;br /&gt;
    PIN12      GPIO4_A3&lt;br /&gt;
    PIN13      GPIO4_C6&lt;br /&gt;
    PIN15      GPIO4_C5&lt;br /&gt;
    PIN16      GPIO4_D2&lt;br /&gt;
    PIN18      GPIO4_D4&lt;br /&gt;
    PIN19      GPIO1_B0&lt;br /&gt;
    PIN21      GPIO1_A7&lt;br /&gt;
    PIN22      GPIO4_D5&lt;br /&gt;
    PIN23      GPIO1_B1&lt;br /&gt;
    PIN24      GPIO1_D1&lt;br /&gt;
    PIN28      GPIO2_B5&lt;br /&gt;
    PIN30      GPIO2_B6&lt;br /&gt;
    PIN32      GPIO2_B7&lt;br /&gt;
    PIN34      GPIO2_C0&lt;br /&gt;
    PIN39      GPIO3_B5&lt;br /&gt;
    PIN40      GPIO3_B4&lt;br /&gt;
    PIN41      GPIO3_B3&lt;br /&gt;
    PIN42      GPIO3_B2&lt;br /&gt;
    PIN43      GPIO2_B4&lt;br /&gt;
    PIN44      GPIO2_B3&lt;br /&gt;
    PIN45      GPIO2_B0&lt;br /&gt;
    PIN46      GPIO2_A6&lt;br /&gt;
&lt;br /&gt;
3 I2C:&lt;br /&gt;
    PIN23      I2C'''0'''_SDA   //must disable SPI2 UART1&lt;br /&gt;
    PIN24      I2C'''0'''_SCL   //must disable SPI2 UART1&lt;br /&gt;
    PIN3       I2C'''1'''_SCL&lt;br /&gt;
    PIN5       I2C'''1'''_SDA&lt;br /&gt;
    PIN13      I2C'''3'''m0_SDA   &lt;br /&gt;
    PIN15      I2C'''3'''m0_SCL&lt;br /&gt;
    PIN40      I2C'''3'''m1_SDA    //must disable SPI1 UART3 &lt;br /&gt;
    PIN39      I2C'''3'''m1_SCL    //must disable SPI1 UART3 &lt;br /&gt;
   &lt;br /&gt;
2 SPI:&lt;br /&gt;
    PIN19      SPI'''2'''TX        //must disable i2c0 UART1 &lt;br /&gt;
    PIN21      SPI'''2'''RX       //must disable i2c0 UART1 &lt;br /&gt;
    PIN23      SPI'''2'''CLK&lt;br /&gt;
    PIN24      SPI'''2'''CSN&lt;br /&gt;
    PIN40      SPI'''1'''TX        //must disable i2c3  UART3 &lt;br /&gt;
    PIN42      SPI'''1'''RX        //must disable i2c3  UART3 &lt;br /&gt;
    PIN41      SPI'''1'''CLK&lt;br /&gt;
    PIN39      SPI'''1'''CSN&lt;br /&gt;
&lt;br /&gt;
4 UART:&lt;br /&gt;
    PIN8       UART'''0'''_TX   &lt;br /&gt;
    PIN10      UART'''0'''_RX&lt;br /&gt;
    PIN23      UART'''1'''_TX&lt;br /&gt;
    PIN24      UART'''1'''_RX&lt;br /&gt;
    PIN19      UART'''2'''_RX  //must disable SPI2 i2c0&lt;br /&gt;
    PIN21      UART'''2'''_TX   //must disable SPI2 i2c0&lt;br /&gt;
    PIN40      UART'''3'''_RX  //must disable SPI1 i2c3&lt;br /&gt;
    PIN39      UART'''3'''_TX   //must disable SPI1 i2c3&lt;br /&gt;
&lt;br /&gt;
2 PWM:&lt;br /&gt;
    PIN11      PWM'''2'''&lt;br /&gt;
    PIN13      PWM'''3'''&lt;br /&gt;
&lt;br /&gt;
1 ADC:&lt;br /&gt;
    PIN26      ADC_IN0          //the measure voltage must lower than 1.8v&lt;br /&gt;
&lt;br /&gt;
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].&lt;br /&gt;
&lt;br /&gt;
For those ROCK Pi S system images released before March 1st, 2020, the configuration file is /boot/hw_intfc.conf.&lt;br /&gt;
&lt;br /&gt;
==== Test ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
And we copy them to home directory.&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ cp -av /usr/local/share/mraa/examples/c /home/rock/mraa-examples&lt;br /&gt;
&lt;br /&gt;
You should pay more attention to the Black Bold words when modifying configuration file /boot/uEnv.txt.&lt;br /&gt;
&lt;br /&gt;
===== GPIO test =====&lt;br /&gt;
&lt;br /&gt;
Use '''mraa-gpio tool''' to test&lt;br /&gt;
&lt;br /&gt;
 root@rockpis:~# mraa-gpio list&lt;br /&gt;
 01         3V3: &lt;br /&gt;
 02          5V: &lt;br /&gt;
 03     I2C_SDA: GPIO I2C  &lt;br /&gt;
 04          5V: &lt;br /&gt;
 05     I2C_SCL: GPIO I2C  &lt;br /&gt;
 06         GND: &lt;br /&gt;
 07 I2S0_8CH_MC: GPIO &lt;br /&gt;
 08    UART0_TX: GPIO UART &lt;br /&gt;
 09         GND: &lt;br /&gt;
 10    UART0_RX: GPIO UART &lt;br /&gt;
 11 PWM2,I2C3_S: GPIO I2C  PWM  &lt;br /&gt;
 12 I2S0_8CH_SC: GPIO &lt;br /&gt;
 13 PWM3,I2C3_S: GPIO I2C  PWM  &lt;br /&gt;
 14         GND: &lt;br /&gt;
 15    SPDIF_TX: GPIO &lt;br /&gt;
 16 I2S0_8CH_SD: GPIO &lt;br /&gt;
 17         3V3: &lt;br /&gt;
 18 I2S0_8CH_SD: GPIO &lt;br /&gt;
 19 UART1_RTSN,: GPIO SPI  UART &lt;br /&gt;
 20         GND: &lt;br /&gt;
 21 UART1_CTSN,: GPIO SPI  UART &lt;br /&gt;
 22 I2S0_8CH_LR: GPIO &lt;br /&gt;
 23 UART1_RX,I2: GPIO I2C  SPI  UART &lt;br /&gt;
 24 UART1_TX,I2: GPIO I2C  SPI  UART &lt;br /&gt;
 25         GND: &lt;br /&gt;
 26     ADC_IN0: AIO &lt;br /&gt;
 root@rockpis:~# mraa-gpio set 15 1           #pin15 pull high&lt;br /&gt;
 root@rockpis:~# mraa-gpio set 15 0           #pin15 pull low&lt;br /&gt;
&lt;br /&gt;
===== PWM test =====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Firstly, modify the /boot/uEnv.txt file to add the following&lt;br /&gt;
&lt;br /&gt;
 root@rockpis:~# cat /boot/uEnv.txt&lt;br /&gt;
 verbosity=7&lt;br /&gt;
 '''overlay_prefix=rockchip'''&lt;br /&gt;
 '''rootfstype=ext4'''&lt;br /&gt;
 fdtfile=rockchip/rk3308-rock-pi-s.dtb&lt;br /&gt;
 overlays=rk3308-console-on-uart0 '''rk3308-pwm1 rk3308-pwm2 rk3308-pwm3'''&lt;br /&gt;
 rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848&lt;br /&gt;
 initrdsize=0x64d1d4&lt;br /&gt;
 kernelversion=4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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'''.&lt;br /&gt;
&lt;br /&gt;
 '''/* PWM declaration */'''&lt;br /&gt;
 '''#define PWM 11'''&lt;br /&gt;
&lt;br /&gt;
Save and compile pwm.c&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ gcc -o pwm pwm.c -lmraa&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ sudo ./pwm &lt;br /&gt;
 PWM value is 0.010015&lt;br /&gt;
 PWM value is 0.019985&lt;br /&gt;
 PWM value is 0.030000&lt;br /&gt;
 PWM value is 0.040014&lt;br /&gt;
 PWM value is 0.049984&lt;br /&gt;
 PWM value is 0.059999&lt;br /&gt;
&lt;br /&gt;
===== I2C test =====&lt;br /&gt;
ROCK Pi S V1.2 provides 3 I2C,There are  I2C0 ,I2C1, I2C3. &lt;br /&gt;
ROCK Pi S V1.3 provides 3 I2C,There are  I2C0 ,I2C1, I2C3m0,I2C3m1. &lt;br /&gt;
If you need the I2C function, you can turn on one or more of them,but you can just choose one between I2C3m0 and I2C3m1 .&lt;br /&gt;
&lt;br /&gt;
Firstly, modify the /boot/uEnv.txt file to add the following&lt;br /&gt;
&lt;br /&gt;
 root@rockpis:~# cat /boot/uEnv.txt&lt;br /&gt;
 verbosity=7&lt;br /&gt;
 '''overlay_prefix=rockchip'''&lt;br /&gt;
 '''rootfstype=ext4'''&lt;br /&gt;
 fdtfile=rockchip/rk3308-rock-pi-s.dtb&lt;br /&gt;
 overlays=rk3308-console-on-uart0  '''rk3308-i2c0 rk3308-i2c1 rk3308-i2c3-m0'''&lt;br /&gt;
 rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848&lt;br /&gt;
 initrdsize=0x64d1d4&lt;br /&gt;
 kernelversion=4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
&lt;br /&gt;
We use  MPU6050 tets i2c.&lt;br /&gt;
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''' .&lt;br /&gt;
 &lt;br /&gt;
   /* mraa header */&lt;br /&gt;
   #include &amp;quot;mraa/i2c.h&amp;quot;&lt;br /&gt;
   '''#define I2C_BUS 0'''&lt;br /&gt;
   &lt;br /&gt;
 rock@rockpis:~/mraa-examples$ gcc -o i2c_mpu6050 i2c_mpu6050.c  -lmraa&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ sudo ./i2c_mpu6050&lt;br /&gt;
 accel: x:0 y:0 z:0&lt;br /&gt;
 gyro: x:-10 y:1 z:7&lt;br /&gt;
   &lt;br /&gt;
 accel: x:0 y:0 z:0&lt;br /&gt;
 gyro: x:107 y:-12 z:69&lt;br /&gt;
    &lt;br /&gt;
 accel: x:0 y:0 z:0&lt;br /&gt;
 gyro: x:6 y:136 z:-50&lt;br /&gt;
    &lt;br /&gt;
 accel: x:0 y:0 z:0&lt;br /&gt;
 gyro: x:-5 y:48 z:-103&lt;br /&gt;
      &lt;br /&gt;
 accel: x:0 y:0 z:0&lt;br /&gt;
 gyro: x:3 y:3 z:5&lt;br /&gt;
&lt;br /&gt;
===== UART test =====&lt;br /&gt;
ROCK Pi S V1.2 provides 3 UART,There are  '''uart0''' ,'''uart1''', '''uart2'''. &lt;br /&gt;
ROCK Pi S V1.3 provides 4 UART,There are  '''uart0''' ,'''uart1''', '''uart2''', '''uart3''' .&lt;br /&gt;
If you need the uart function, you can turn on one or more of them.&lt;br /&gt;
&lt;br /&gt;
Firstly, Disable console and enable '''uart0''' for uart test.modify the '''/boot/uEnv.txt''' file to add the following&lt;br /&gt;
&lt;br /&gt;
 root@rockpis:~# cat /boot/uEnv.txt &lt;br /&gt;
 verbosity=7&lt;br /&gt;
 '''overlay_prefix=rockchip'''&lt;br /&gt;
 '''rootfstype=ext4'''&lt;br /&gt;
 fdtfile=rockchip/rk3308-rock-pi-s.dtb&lt;br /&gt;
 '''overlays=rk3308-uart0 rk3308-uart1 rk3308-uart2 rk3308-uart3'''&lt;br /&gt;
 '''console='''&lt;br /&gt;
 rootuuid=c3800af9-fa58-4fb3-bb56-e52fd04837ba&lt;br /&gt;
 initrdsize=0x5c96c3&lt;br /&gt;
 kernelversion=4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
&lt;br /&gt;
Here set console to NULL value.&lt;br /&gt;
&lt;br /&gt;
then reboot . use '''ssh''' connect to rockpis,we must have '''2 windows''',one is for send data,anothor is for receive.&lt;br /&gt;
&lt;br /&gt;
send command follow:&lt;br /&gt;
 rock@rockpis:~$ sudo mraa-uart '''dev 0''' baud 1500000 send  radxa&lt;br /&gt;
&lt;br /&gt;
Another window sets the baud  1500000 and receives the data &lt;br /&gt;
&lt;br /&gt;
 radxa&lt;br /&gt;
&lt;br /&gt;
receive command follow:&lt;br /&gt;
 rock@rockpis:~$ sudo mraa-uart '''dev 0''' baud 1500000 recv  1000&lt;br /&gt;
 radxa&lt;br /&gt;
&lt;br /&gt;
===== SPI test =====&lt;br /&gt;
&lt;br /&gt;
Firstly, modify the '''/boot/uEnv.txt''' file.&lt;br /&gt;
&lt;br /&gt;
 root@rockpis:~# cat /boot/uEnv.txt&lt;br /&gt;
 verbosity=7&lt;br /&gt;
 overlay_prefix=rockchip&lt;br /&gt;
 rootfstype=ext4&lt;br /&gt;
 fdtfile=rockchip/rk3308-rock-pi-s.dtb&lt;br /&gt;
 overlays=rk3308-console-on-uart0 '''rk3308-spi-spidev'''&lt;br /&gt;
 '''param_spidev_spi_bus=2'''&lt;br /&gt;
 rootuuid=37055840-4ec4-444f-979b-9e47ee4bd848&lt;br /&gt;
 initrdsize=0x64d1d4&lt;br /&gt;
 kernelversion=4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 initrdimg=initrd.img-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
 kernelimg=vmlinuz-4.4.143-47-rockchip-g495ff574976c&lt;br /&gt;
&lt;br /&gt;
then execute command, sync, followed by '''reboot'''.&lt;br /&gt;
&lt;br /&gt;
Create file test-spi.c and add the following contents.&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ cat test-spi.c &lt;br /&gt;
 #include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 /* mraa header */&lt;br /&gt;
 #include &amp;quot;mraa/spi.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 /* SPI declaration */&lt;br /&gt;
 '''#define SPI_BUS 2'''&lt;br /&gt;
 &lt;br /&gt;
 /* SPI frequency in Hz */&lt;br /&gt;
 #define SPI_FREQ 10000000&lt;br /&gt;
 int&lt;br /&gt;
 main(int argc, char** argv)&lt;br /&gt;
 {&lt;br /&gt;
     mraa_result_t status = MRAA_SUCCESS;&lt;br /&gt;
     mraa_spi_context spi;&lt;br /&gt;
     int i, j;&lt;br /&gt;
 &lt;br /&gt;
     /* initialize mraa for the platform (not needed most of the times) */&lt;br /&gt;
     mraa_init();&lt;br /&gt;
 &lt;br /&gt;
     //! [Interesting]&lt;br /&gt;
     /* initialize SPI bus */&lt;br /&gt;
     spi = mraa_spi_init(SPI_BUS);&lt;br /&gt;
     if (spi == NULL) {&lt;br /&gt;
         fprintf(stderr, &amp;quot;Failed to initialize SPI\n&amp;quot;);&lt;br /&gt;
         mraa_deinit();&lt;br /&gt;
         return EXIT_FAILURE;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     /* set SPI frequency */&lt;br /&gt;
     status = mraa_spi_frequency(spi, SPI_FREQ);&lt;br /&gt;
     if (status != MRAA_SUCCESS)&lt;br /&gt;
         goto err_exit;&lt;br /&gt;
 &lt;br /&gt;
     /* set big endian mode */&lt;br /&gt;
     status = mraa_spi_lsbmode(spi, 0);&lt;br /&gt;
     if (status != MRAA_SUCCESS) {&lt;br /&gt;
         goto err_exit;&lt;br /&gt;
     }&lt;br /&gt;
    &lt;br /&gt;
     j = 10;&lt;br /&gt;
     while(j) {&lt;br /&gt;
   	j--;&lt;br /&gt;
         printf(&amp;quot;0x%x\n&amp;quot;,mraa_spi_write(spi, 0xaa));&lt;br /&gt;
     }&lt;br /&gt;
 err_exit:&lt;br /&gt;
     mraa_result_print(status);&lt;br /&gt;
 &lt;br /&gt;
     /* stop spi */&lt;br /&gt;
     mraa_spi_stop(spi);&lt;br /&gt;
 &lt;br /&gt;
     /* deinitialize mraa for the platform (not needed most of the times) */&lt;br /&gt;
     mraa_deinit();&lt;br /&gt;
 &lt;br /&gt;
      return EXIT_FAILURE;&lt;br /&gt;
 }&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ gcc -o test-spi test-spi.c -lmraa&lt;br /&gt;
&lt;br /&gt;
Then short pin19 and pin21 and run  test-spi&lt;br /&gt;
&lt;br /&gt;
 rock@rockpis:~/mraa-examples$ sudo ./test-spi &lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 0xaa&lt;br /&gt;
 MRAA: SUCCESS&lt;br /&gt;
&lt;br /&gt;
===== ADC test =====&lt;br /&gt;
&lt;br /&gt;
connect signal you want to measure, and then compile mraa example c file, aio.c, to test.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rock@rockpis:~/mraa-examples$ gcc -o aio aio.c -lmraa&lt;br /&gt;
rock@rockpis:~/mraa-examples$ sudo ./aio&lt;br /&gt;
ADC A0 read 1A5 - 421&lt;br /&gt;
ADC A0 read float - 0.41153&lt;br /&gt;
ADC A0 read 1A5 - 421&lt;br /&gt;
ADC A0 read float - 0.41153&lt;br /&gt;
ADC A0 read 1A5 - 421&lt;br /&gt;
ADC A0 read float - 0.41153&lt;br /&gt;
ADC A0 read 1A5 - 421&lt;br /&gt;
ADC A0 read float - 0.41153&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Development ====&lt;br /&gt;
&lt;br /&gt;
More introduction of libmraa can look at [http://iotdk.intel.com/docs/master/mraa/index.html libmraa official website].&lt;br /&gt;
&lt;br /&gt;
==== Troubleshooting ====&lt;br /&gt;
&lt;br /&gt;
* Refer [[RockpiS/getting_started/troubleshooting | Troubleshooting page]]&lt;br /&gt;
* Post your issue on the forum: https://forum.radxa.com/c/rockpiS&lt;/div&gt;</summary>
		<author><name>Tan</name></author>	</entry>

	</feed>