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


Rock PI 4 Android Mraa API

Mraa Java Lib is packaged in aar format and can be used in AndroidStudio: aar

Default IO Map



GPIO number Function2 Function1 GPIO Pin# Pin# GPIO Function1 Function2 GPIO number
+3.3V 1 2 +5.0V
71 I2C7_SDA GPIO2_A7(X) 3 4 +5.0V
72 I2C7_SCL GPIO2_B0(X) 5 6 GND
75 SPI2_CLK GPIO2_B3(X) 7 8 GPIO4_C4(X) UART2_TXD 148
GND 9 10 GPIO4_C3(X) UART2_RXD 147
146 PWM0 GPIO4_C2(X) 11 12 GPIO4_A3 I2S1_SCLK 131
150 PWM1 GPIO4_C6(X) 13 14 GND
149 SPDIF_TX GPIO4_C5 15 16 GPIO4_D2 154
+3.3V 17 18 GPIO4_D4 156
40 UART4_TXD SPI1_TXD(X) GPIO1_B0(X) 19 20 GND
39 UART4_RXD SPI1_RXD(X) GPIO1_A7(X) 21 22 GPIO4_D5 157
41 SPI1_CLK(X) GPIO1_B1 23 24 GPIO1_B2 SPI1_CSn(X) 42
GND 25 26 ADC_IN0
64 I2C2_SDA GPIO2_A0(X) 27 28 GPIO2_A1(X) I2C2_CLK 65
74 I2C6_SCL(X) SPI2_TXD GPIO2_B2(X) 29 30 GND
73 I2C6_SDA(X) SPI2_RXD GPIO2_B1(X) 31 32 GPIO3_C0 SPDIF_TX UART3_CTSn 112
76 SPI2_CSn GPIO2_B4(X) 33 34 GND
133 I2S1_LRCK_TX GPIO4_A5 35 36 GPIO4_A4 I2S1_LRCK_RX 132
158 GPIO4_D6 37 38 GPIO4_A6 I2S1_SDI 134
GND 39 40 GPIO4_A7 I2S1_SDO 135


class constructor constructor2 class constructor constructor2
Aio Aio (int pin_index) NA Gpio Gpio(int pin_index) NA
I2c I2c (int i2c_index) NA Pwm Pwm (int pin_index) NA
Spi Spi (int spi_index) NA Uart Uart(int uart_index) NA

Index Class

RockPI4I2C Field Index Value Hardware I2c Number RockPI4SPI Field Index Value Hardware Spi Number
ROCK_PI_4_I2C2 1 i2c2 ROCK_PI_4_SPI1 1 spi1
ROCK_PI_4_I2C6 2 i2c6 ROCK_PI_4_SPI2 0 spi2
ROCK_PI_4_I2C7 0 i2c7
RockPI4Uart Field Index Value Hardware Uart Number
ROCK_PI_4_UART2 0 uart2
ROCK_PI_4_UART4 1 uart4


Methods Parameter Description Return
dir(Dir dir) Dir Set input/output Result
readDir() void Read input/output dir Dir
mode(Mode mode) Mode Set STRONG/PULLUP/PULLDOWN/HIZ Result
read() void Set input and read gpio value 0/1
write(int v) 0/1 Set output value Result
unexport() void Unexport gpio in /dev/class/gpio Result


Methods Parameter Description Return
read() void Read value. Default will shift the raw value up/down to a 10 bit. long
readFloat() void Read value and return it as a normalized float. 0.0 - 1.0
setBit(int b) int Set the bit value which will shift the raw reading from the ADC to. Result
getBit() void Gets the bit value mraa is shifting the analog read to. int


Methods Parameter Description Return
address(short a) 0x00-0xFF Set i2c address Result
readByte() void Read a byte data form i2c short
writeByte(short b) Mode Write a byte data to i2c Result
read(byte[] buf) byte[] Read a byte[] data form i2c read size
write(byte[] buf) byte[] Write a byte[] data to i2c Result
readReg(short a) 0x00-0xFF Read a byte data form i2c addr short
writeReg(short a, short d) 0x00-0xFF, 0x00-0xFF Write a byte data to i2c addr Result
readWordReg(short a) 0x00-0xFF Read a byte[2] data form i2c addr int
writeWordReg(short a, int d) 0x00-0xFF, 0x0000-0xFFFF Write a byte[2] data to i2c addr Result
readBytesReg(short a, byte[] b) 0x00-0xFF, byte[] Read a byte[] data form i2c addr int


Methods Parameter Description Return
period(float s) 0.0001 - 2.147483 Set pwm period Result
period_ms(int m) 1 - 2147 Set pwm period Result
period_us(int u) 1 - 2147483 Set pwm period Result
pulsewidth(float s) 0.0001 - 2.147483 Set pwm duty Result
pulsewidth_ms(int m) 1 - 2147 Set pwm duty Result
pulsewidth_us(int u) 1 - 2147483 Set pwm duty Result
max_period() void Get pwm max period int(us)
min_period() void Get pwm min period int(us)
read() void Get pwm period/duty 0.0 - 1.0
write(float p) 0.0 - 1.0 Set pwm period/duty percentage Result
enable(boolean e) true/false dis/enable pwm Result
unexport() void Unexport pwm in /dev/class/pwm Result


Methods Parameter Description Return
defaultConfig() void Set mraa default config (mode0,lsb=0,bits=8) Result
mode(Spi_Mode m) void Set spi mode Result
frequency(int f) int Set spi frequency max=48000000 Result
lsbmode(boolean l) true/false Set spi lsmode Result
bitPerWord(long b) 8/16 Set spi bit_pre_word Result
writeByte(short a) 0x00-0xFF Write a byte data to spi int(recv data)
writeWord(int a) 0x0000-0xFFFF Write a byte[2] data to spi int(recv data)
write(byte[] b) byte[] Write a byte[] data to spi byte[](recv data)


Methods Parameter Description Return
defaultConfig() void Set mraa default config (9600 8N1, no echo or special character) Result
setBaudRate(long b) long Set uart baudrate max=150000000 Result
setMode(int bytesize, UartParity parity, int stopbits) int Set the transfer mode Result
setFlowcontrol(boolean xonxoff, boolean rtscts) true/false Set the flowcontrol Result
setTimeout(int read, int write, int interchar) -1 - int_max Set the timeout for read and write operations Result
setNonBlocking(boolean b) true/false Set the blocking state for write operations Result
sendBreak(int b) 0 - max_int Send a break to the device. Result
flush() void Flush the outbound data. Result
dataAvailable() void Check to see if data is available on the device for reading, return immediately boolean
dataAvailable(long timeout) 1 - int_max Check to see if data is available on the device for reading and time out boolean
readStr(int length) 1 - int_max Read bytes from the device into a String object String
writeStr(String s) String Write bytes in String object to a device int
read(byte[] data) byte[] Check to see if data is available on the device for reading and time out int(read size)
wrtie(byte[] data) byte[] Check to see if data is available on the device for reading and time out int(write size)



   import mraa.*;
   Gpio gpio40 = new Gpio(RockPI4.ROCK_PI_4_PIN40.swigValue());
   // do sth
   // if you want


   import mraa.*;
   Spi spi = new Spi(RockPI4SPI.ROCK_PI_4_SPI1.swigValue());
   byte[] recv = spi.write(new byte[]{0x11, 0x22});
   Log.d(TAG, String.format("onCreate: recv[0]=0x%x, recv[1]=0x%x", recv[0], recv[1]));


   import mraa.*;
   Pwm pwm = new Pwm(RockPI4.ROCK_PI_4_PIN11.swigValue());
   pwm.write((float) 0.5);
   // do sth


   import mraa.*;
   Aio aio = new Aio(0);
   Log.d(TAG, "aio0: " +;


   import mraa.*;
   I2c i2c = new I2c(RockPI4I2C.ROCK_PI_4_I2C2.swigValue());
   i2c.address((short) 0x50);
   i2c.writeReg((short)0x01, (short) 0x57);
   try {
   } catch (InterruptedException e) {
   i2c.address((short) 0x50);
   Log.d(TAG, "i2c2 read: 0x" + Integer.toHexString(i2c.readReg((short)0x01)));


   import mraa.*;
   Uart uart = new Uart(RockPI4Uart.ROCK_PI_4_UART4.swigValue());
   String read = uart.readStr(6);
   Log.d(TAG, "uart4 read: " + read);