Rockpi4/android-mraa
Contents
Rock PI 4 Android Mraa API
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 | 0 | i2c2 | ROCK_PI_4_SPI1 | 0 | spi1 | ||
ROCK_PI_4_I2C6 | 1 | i2c6 | ROCK_PI_4_SPI2 | 1 | spi2 | ||
ROCK_PI_4_I2C7 | 2 | 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) | 1 - int_max | Write bytes in String object to a device | int |
read(byte[] data) | 1 - int_max | Check to see if data is available on the device for reading and time out | int(read size) |
wrtie(byte[] data) | 1 - int_max | 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);