瑞芯微RK3568开发:GPIO实践篇

Posted 青龙战

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瑞芯微RK3568开发:GPIO实践篇相关的知识,希望对你有一定的参考价值。

        SOC平台各类GPIO构建原理是大道一统的,在各个诸如状态、数据、中断和屏蔽等寄存器具体含义用法,有少许差异。玩好RK的GPIO,需要先理解这类通用接口的框架。

        介绍RK3568的GPIO,认为讲2类重要地址和记录几种编程实践方法即可。

一、2类地址

        RK3568的MUX复用配置地址和通用寄存器类地址。

1、MUX功能复用配置类寄存器,基址:0xFDC20000(GPIO0 Bank)、0xFDC60000(GPIO1-GPIO4 Banks)。

 

2、GPIO通用类数据、状态、中断、MASK类寄存器,基址:0xFDD60000(GPIO0)、0x0xFE740000(GPIO1)、0xFE750000(GPIO2)、0xFE760000(GPIO3)、0xFE770000(GPIO4)。

 

二、几种操作方式

1、io tool

io -4 -w 0xFDD6000C 0xffff4000
io -4 -w 0xFDD60004 0xffff4081
io -4 -r 0xFDD6000C
io也可以单字节操作,参考io -h

2、用户态类调用

内核注册了gpio接口操作命令行,

查看以注册gpio端口:cat /sys/kernel/debug/gpio;

申请和释放:echo n > /sys/class/gpio/export,echo n > /sys/class/gpio/unexport;

3、uboot或kernel编程

裸机直接对寄存器物理地址进行读写操作,如writel和readl;

上系统接口的话,有标准的gpio接口,dts和of_xxx那一套;

宁远电子瑞芯微RK3399开发板DLT3399A底层接口调用

 GPIO口控制

DLT3399A板卡正面写有GPIOUART4_1V8丝印的接口,并看到板子反面对应的引脚gpio丝印,选择相对应的gpio控制节点,接口位置如下图所示:

 

 技术图片

 技术图片

1、dlt3399a上有6gpio控制节点(板卡正面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输出低电平;

2、测试用例

#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;

 

 

 

 

 

 串口(TTL)

串口接口位置如下图所示:

 技术图片

设备节点:”/dev/ttyS4”

串口自测方法:短接UART4_RXUART4_TX两个管脚(可看板卡丝印),Android系统中打开ComAssistant串口软件,采用自发自收的测试方式,发的内容是能正确的接收回来显示,说明数据通信正常;

 

 

 

 

 

 

 

 

 

 

 

 

散热风扇控制接口

风扇接口位置如果所示:

 技术图片

1、系统自动控制:读取CPU温度,如果CPU温度超过60℃,散热风扇接口会输出12V电压,开启风扇。温度低于40℃以下,散热风扇接口会关闭风扇。

2、如果客户需要控制风扇的开启和关闭,方法如下:

温度获取节点:”/sys/devices/virtual/thermal/thermal_zone0/temp”

如果读取的到的温度值为:48750,换算温度为48750/1000=48.75℃;

控制散热风扇开启和关闭的控制节点:”/dev/fan”

使用write函数控制gpio输出:

写入’1’,代表开启散热风扇;

写入’0’,代表关闭散热风扇;

写入’2’,  代表客户不进行控制,用底层默认自动控制;

测试代码用例,可参考GPIO口控制测试用例;

 

以上是关于瑞芯微RK3568开发:GPIO实践篇的主要内容,如果未能解决你的问题,请参考以下文章

rk3568 | 瑞芯微平台GPIO引脚驱动编写

RK3568开发笔记:瑞芯微RK3568芯片介绍,入手开发板的核心板介绍

Camera | 1.Camera基础知识

Camera | 1.Camera基础知识

测评 | 国产“芯” · 瑞芯微 RK3568 性能解析

史上最全! 瑞芯微RK3568核心板评估板资源分享!