GPIO口控制
RK3399主板在DLT3399A板卡上总共有6个GPIO口,看到板卡反面对应的引脚gpio丝印,选择相对应的gpio控制节点,接口位置如下图所示:
RK3399是瑞芯微推出的一款低功耗、高性能的应用处理器芯片,该芯片基于Big.Little架构,即具有独立的NEON协同处理器的双核Cortex-A72及四核Cortex-A53组合架构,主要应用于计算机、个人互联网移动设备、VR、广告机等智能终端设备。RK3399内置多个高性能硬件处理引擎,能够支持多种格式的视频解码,如:4K*2K@60fps H.264/H.265/VP9,也支持1080P@30fps的H.264/MVC/VP8 以及高质量的JPEG编解码和图像的前后处理器。
- dlt3399a上有6个gpio控制节点(板卡正面GPIO丝印):
高电平为3.0V:
"/dev/gpio4_c5"
"/dev/gpio4_c6"
"/dev/gpio4_d5"
"/dev/gpio4_d6"
高电平为1.8V:
"/dev/gpio1_b1"
"/dev/gpio1_b2"
读写方法:
(1)使用read函数读gpio输入状态:
读取到数值 1,代表输入为高电平;
读取到数值 0,代表输入为低电平;
(2)使用write函数控制gpio输出:
写入'1',代表gpio输出高电平;
写入'0',代表gpio输出低电平;
- 测试用例
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
int main (void)
{
int fd;
char gpio_in = -1;
char gpio_out='0';
fd = open ("/dev/gpio4_c5", O_RDWR); //打开设备节点
if (fd < 0)
exit(0);
/* read */
read (fd, &gpio_in, sizeof(char)); //读取GPIO输入状态
printf("gpio_in value = %d\n", gpio_in);
/* write */
printf("gpio_out value: %d\n", gpio_out);
if (write(fd, &gpio_out, sizeof(char)) < 0) //输出GPIO状态
{
perror("fail to write");
}
close (fd);
return 0;
}