目前可直接使用的串口是UART4,设备名称为/dev/ttyS4,其他串口资源已被分配给其它功能,如下表所示,你也可以使用USB转串口来扩展:
串口设备 | 串口资源占用情况 |
UART0 | 已被蓝牙占用 |
UART1 | 已被千兆以太网占用 |
UART2 | 已被作为调试串口 |
UART3 | 已被千兆以太网占用 |
UART4 | 空闲,设备名称为 /dev/ttyS4 (注:需使用20180618之后的ROM) |
接口说明请参考:FriendlyThings APIs/zh
通过 sysfs 方式控制来 GPIO,是先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO编号,使得该 GPIO 的操作接口从内核空间暴露到用户空间,然后就可以操作引脚的 direction 和 value 等,direction 控制 GPIO 方向,而 value 可控制 GPIO 输出或获得 GPIO 输入。
下面中列出RK3399可直接操作的GPIO编号:
物理序号 | GPIO编号 |
Pin11 | 33 |
Pin12 | 50 |
Pin15 | 36 |
Pin16 | 54 |
Pin18 | 55 |
Pin22 | 56 |
Pin37 | 96 |
Pin38 | 125 |
Pin40 | 126 |
物理序号 | Linux索引号 |
Pin11 | 33 |
Pin12 | 50 |
Pin15 | 36 |
Pin16 | 54 |
Pin18 | 55 |
Pin22 | 56 |
接口说明请参考:FriendlyThings APIs/zh
6.2.2 GPIO示例说明可以用LED配件来测试GPIO示例,在界面上对引脚输出高电平时,LED亮,低电平时,LCD灭。
6.3 ADCRK3399引出了三路ADC,channel为0, 2, 3,对应的文件节点为:
频道 | 文件节点 |
Channel 0 | /sys/devices/platform/ff100000.saradc/iio:device0/in_voltage0_raw |
Channel 2 | /sys/devices/platform/ff100000.saradc/iio:device0/in_voltage2_raw |
Channel 3 | /sys/devices/platform/ff100000.saradc/iio:device0/in_voltage3_raw |
在 Android 下用标准的文件读取接口就可以读取,你可以将一个可调电阻配件连接到开发板上进行测试。
6.4 PWMNote: 默认情况下,PWM接口已经用于连接风扇,如果您想自己控制PWM,则需要先禁用风扇,
请参考这篇文章: Template:RK3399 Android PWMFan/zh
RK3399开发板也是通过sysfs方式来控制PWM,直接操作 /sys/class/pwm/pwmchip1 下的文件节点即可,下面以在命令行操作PWM风扇风速作为示例:
可以连接一个PWM风扇(3针)到NanoPC-T4的风扇接口来测试PWM示例。
6.5 I2C运行I2C Demo需要将一个LCD1602的模块连接到NanoPC-T4的以下引脚:
物理序号 | I2C功能 |
Pin3 | I2C2_SDA(3V) |
Pin4 | VCC5V0_SYS |
Pin5 | I2C2_SCL(3V) |
Pin6 | GND |
通过 /sys/class/rtc/rtc0/下面的接口来操作RTC,比如查看当前RTC的日期和时间:
设置开机时间,如设置120秒后开机:
#120秒后定时开机echo +120 > /sys/class/rtc/rtc0/wakealarm看门狗的操作比较简单,打开设备 /dev/watchdog 并定时写入字符即可,如果系统出现问题导致没有写入字符,设备会过一段时间自动重启:
mWatchDogFD = HardwareControler.open("/dev/watchdog", FileCtlEnum.O_WRONLY);HardwareControler.write(mWatchDogFD, "a".getBytes());SPI由于与UART4共用引脚,所以需要修改内核DTS文件,修改方法如下:
编辑内核目录下的dts文件 arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi:
其中,ANDROID_SOURCE请替换为真实的 Android7或Android8源代码目录。
首先找到 spi1 的定义:
&spi1 { status = "disabled"; // 将其中的 disabled 改为 okay然后再在 rk3399-nanopi4-common.dtsi 文件到找到 uart4 的定义:
&uart4 { status = "okay"; // 将其中的 okay 改为 disabled最后重新编译内核:
cd ANDROID_SOURCE/./build-nanopc-t4.sh -K -M更新 rockdev/Image-nanopc_t4/resource.img 到开发板即可,可以将resource.img拷贝到安装有 eflasher 系统的TF卡中,位置是FriendlyARM分区的androidX 目录,替换里面的resource.img文件,然后用TF卡重刷系统。
6.8.2 SPI示例SPI示例默认没有预装,需要手动编译,方法是修改Android源代码的以下文件:
vendor/friendlyelec/apps# vi device-partial.mk
去掉前面的注释:
然后重新编译 Android源代码。
运行SPI示例需要在NanoPC-T4上连接一个 SPI接口的OLED,规格为0.96寸的128x64屏。
屏幕上有7个引脚,与开发板用母对母杜邦线连接,接法如下表:
OLED引脚 | 功能 | NanoPC-T4引脚编号 | 备注 |
GND | Pin6 GND | ||
VCC | Pin2 VCC5V | ||
DO | SCLK | Pin23 (SPI1_CLK(3V) | 时钟信号,由主设备产生 |
DI | MOSI | Pin19 (SPI1_TXD) | 主设备数据输出,从设备数据输入 |
RES | Pin16 (GPIO1_C6(3V)) | ||
D/C | Pin12 (GPIO1_C2) | ||
CS | CS0 | Pin24 (SPI1_CSn0) | 从设备使能信号,由主设备控制 |
所有硬件访问的示例程序均已集成到 Android 的源代码当中,位于 Android7.1.2 和 Android8.1 源代码的以下目录:vendor/friendlyelec/apps,也可以单独网上下载,下表中列出各个 Demo 的源代码地址:
7.1 Android8.17.1.1 Applicable BoardsAndroid8.1 Demos | |
Serial Port | |
GPIO | |
ADC | https://gitlab.com/friendlyelec/rk3399-android-8.1/tree/master/vendor/friendlyelec/apps/ADCDemo |
PWM | https://gitlab.com/friendlyelec/rk3399-android-8.1/tree/master/vendor/friendlyelec/apps/PWMDemo |
I2C | |
RTC | |
Watch dog | |
SPI |
Android7.1.2 Demos | |
Serial Port | |
GPIO | |
ADC | https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/vendor/friendlyelec/apps/ADCDemo |
PWM | https://gitlab.com/friendlyelec/rk3399-nougat/tree/nanopc-t4-nougat/vendor/friendlyelec/apps/PWMDemo |
I2C | |
RTC | |
Watch dog | |
SPI |
欢迎光临 博航智能圈 (http://club.broadon.net/club/) | Powered by Discuz! X2 |