Rockpi4/android-mraa
< Rockpi4
Contents
Rock PI 4 Android Mraa API
Mraa Java Lib is packaged in aar format and can be used in AndroidStudio: aar
Default IO Map
Enable:Uart2(consloe),Uart4,SPI2,I2C2,I2C7,PWM0,PWM1
Disable:I2C6,SPI1
| 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
| 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 |
Gpio
| 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 |
Aio
| 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 |
I2C
| 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 |
Pwm
| 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 |
SPI
| 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) |
UART
| 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) |
Example
Gpio
import mraa.*; Gpio gpio40 = new Gpio(RockPI4.ROCK_PI_4_PIN40.swigValue()); gpio40.dir(Dir.DIR_OUT); gpio40.write(1); // do sth // if you want gpio40.unexport();
Spi
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]));
Pwm
import mraa.*; Pwm pwm = new Pwm(RockPI4.ROCK_PI_4_PIN11.swigValue()); pwm.period_us(20000); pwm.write((float) 0.5); pwm.enable(true); // do sth ..... pwm.enable(false); pwm.unexport();
Aio
import mraa.*; Aio aio = new Aio(0); Log.d(TAG, "aio0: " + aio.read());
I2c
import mraa.*;
I2c i2c = new I2c(RockPI4I2C.ROCK_PI_4_I2C2.swigValue());
i2c.address((short) 0x50);
i2c.writeReg((short)0x01, (short) 0x57);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i2c.address((short) 0x50);
Log.d(TAG, "i2c2 read: 0x" + Integer.toHexString(i2c.readReg((short)0x01)));
Uart
import mraa.*;
Uart uart = new Uart(RockPI4Uart.ROCK_PI_4_UART4.swigValue());
uart.defaultConfig();
uart.setBaudRate(115200);
uart.writeStr("radxa");
String read = uart.readStr(6);
Log.d(TAG, "uart4 read: " + read);
