全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发

时间:2025-03-06 11:23

人气:

作者:admin

标签: OpenHarmony  RK3568  GPIO  驱动开 

导读:【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发GPIO基础知识...

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系统,主要面向物联网网关、NVR存储、工控平板、工业检测、工控盒、卡拉OK、云终端、车载中控等行业。

wKgZPGfJFRCAVVF2AAD8foavbSM335.png

【本文摘自】【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发

【相关视频】OpenHarmony学习开发系列教程(第1期 北向基础篇一)

OpenHarmony学习开发系列教程(第2期 南向基础篇一)

实战:第一篇OpenHarmony配置HDF驱动控制LED

第1章GPIO基础知识

1.1什么是GPIO

GPIO意为通用输入/输出接口,GPIO端口可以配置为输入或输出状态,用于产生或读取高低电平信号。其高低电平的数量、波形组合及变化方式没有任何协议限制,用户可以根据需求自由设定。GPIO广泛应用于驱动简单外设,如LED、按键、开关等,不需要复杂的协议支持。

与GPIO不同,专用IO端口通常是为特定通信协议设计的,具有更严格的协议要求。它们的高低电平数量、波形组合以及波形的持续时间必须严格遵循相应协议的规范。常见的专用IO协议包括I2C、SPI、UART和PWM等。这些接口通常用于数据传输或信号控制,如在传感器、显示模块、通信设备等应用中,要求精确的时序和信号格式。

芯片通常需要提供丰富的功能和外部接口,以满足各种应用需求。然而,由于芯片的管脚(pin)数量有限,为了最大化资源的利用,许多IO管脚支持多功能设计,并通过软件配置实现管脚的分时复用。也就是说,同一个管脚可以根据需求在不同的功能模式之间切换。需要注意的是,并非所有IO管脚都可以用作GPIO。某些管脚被专门设计用于支持特定的专用接口(例如用于连接外部存储芯片或通信模块),这些管脚的功能是固定的,无法配置为GPIO。而另一些管脚则可以自由配置为GPIO,供用户根据实际需求灵活使用。

1.2 GPIO引脚计算

为了更高效地管理数量众多的GPIO,通常会将GPIO管脚按照一定规则进行分组管理。每个GPIO管脚都会被分配一个组号和组内偏移(offset)值,后者表示该管脚在所在组中的位置。通过这种分组方式,可以简化GPIO的访问和配置。

不同的芯片,其GPIO的分组数量和每组内包含的管脚数量可能有所不同。这些设计差异通常取决于芯片的架构和应用需求。例如,在RK3568芯片中有5组GPIO bank:GPIO0~GPIO4,每组又以A0~A7, B0~B7, C0~C7, D0~D7作为编号区分,常用以下公式计算引脚:

GPIO pin脚计算公式:pin = bank * 32 + number //bank为组号,number为小组编号

GPIO小组编号计算公式:number = group * 8 + X

引脚编号=控制寄存器的寄存器基数+控制引脚寄存器位数。 在rk3568中,GPIO_number的计算方法为:n*32 + (K-A)*8 + x;括号里面的A、B、C、D分别代表数值0、1、2、3, 在计算时候分别对应即可。

下面演示LED9用户LED灯的GPIO0_PB7 pin脚计算方法:

bank = 0; //GPIO0_B7=> 0, bank∈[0,4]

group = 1; //GPIO0_B7 => 1, group∈{(A=0), (B=1), (C=2), (D=3)}

X = 7; //GPIO4_D7 => 5, X∈[0,7]

number = group * 8 + X = 1 * 8 + 7 =15

pin = bank*32 + number= 0 * 32 + 15 = 15;

1.3 GPIO用户态测试

sysfs控制接口为/sys/class/gpio/export和/sys/class/gpio/unexport。如下图所示:

wKgZO2fJFPGAWB8XAACO5vQx5yg904.png

/sys/class/gpio/export用于将GPIO控制从内核空间导出到用户空间。/sys/class/gpio/unexport用于取消GPIO控制从内核空间到用户空间的导出。export和unexport,他们都是只写的。GpiochipX代表GPIO控制器

export:用于将指定编号的GPIO引脚导出。在使用GPIO引脚之前,需要将其导出,导出成功之后才能使用它。注意export文件是只写文件,不能读取,将一个指定的编号写入到export文件中即可将对应的GPIO引脚导出,以GPIO0_PB7为例(pin计算值为15)使用export文件进行导出,导出成功如下图所示:

echo 15 > export

wKgZPGfJFPGAXOUZAACHkWLfpEo325.png

会发现在/sys/class/gpio目录下生成了一个名为gpio15的文件夹(gpioX,X表示对应的编 号),该文件夹就是导出来的GPIO引脚对应的文件夹,用于管理、控制该GPIO引脚。

unexport:将导出的GPIO引脚删除。当使用完GPIO引脚之后,需要将导出的引脚删除,同样该文件也是只写文件、不可读,使用unexport文件进行删除GPIO0_PB7,删除成功如下图所示:

echo 15 > unexport

wKgZPGfJFPGAUI8fAACjwgNBZuQ504.png

可以看到之前生成的 gpio15文件夹就会消失!

需要注意的是,并不是所有 GPIO引脚都可以成功导出,如果对应的GPIO已经被导出或者在内核中被使用了,那便无法成功导出,导出失败如下图所示:

wKgZPGfJFPGAVSdXAABHiKbLLb4780.png

出现上图报错的原因是该GPIO已经被其他GPIO使用,需要在内核中找到使用GPIO的驱动,并取消该驱动才可以正常使用GPIO。在使用GPIO15时,需要取消Linux内核源码中LED灯的配置,如下所示:

wKgZO2fJFPGADsugAADGUcqd5B0951.png

再次使用以下命令导出GPIO0_PB7引脚,导出成功之后进入gpio15文件夹如下图所示:

echo 15 > export

wKgZO2fJFPGAZ2VpAAB8PVVI_Hc818.png

可以看到gpio15文件夹下分别有active_low、device、direction、edge、power、subsystem、uevent、value八个文件,需要关心的文件是active_low、direction、edge以及value这四个属性文件,接下来分别介绍这四个属性文件的作用:

direction:配置GPIO引脚为输入或输出模式。该文件可读、可写,读表示查看GPIO当前是输入还是输出模式,写表示将GPIO配置为输入或输出模式;读取或写入操作可取的值为"out"(输出模式)和"in"(输入模式)。

在“/sys/class/gpio/gpio15”目录下使用cat命令查看direction输入输出模式,如下图所示:

cat direction

wKgZPGfJFPKAX5RxAABGACzzLIA517.png

默认状态下的输入输出状态为“in”,由于direction为可读可写,可以使用以下命令将模式配置为输出,配置完成如下图所示

echo out > direction

cat direction

wKgZPGfJFPKAM4VXAABT9eIKw94721.png

active_low:用于控制极性得属性文件,可读可写,默认情况下为0,使用cat命令进行文件内容的查看,如下图所示 :

cat active_low

当 active_low等于0时,value值若为1则引脚输出高电平,value值若为0则引脚输出低电平。当active_low等于1时 ,value值若为0则引脚输出高电平,value值若为1则引脚输出低电平。

edge:控制中断的触发模式,该文件可读可写。在配置GPIO引脚的中断触发模式之前,需将其设置为输入模式,四种触发模式的设置如下所示:

非中断引脚:echo "none" > edge

上升沿触发:echo "rising" > edge

下降沿触发:echo "falling" > edge

边沿触发: echo "both" > edge

value:设置高低电平,如果我们要把这个管脚设置成高电平,我们只需要给value设置成1即可,反之,则设置成0。使用命令

echo 1 > value

反之,把GPIO设置成低电平,使用命令

echo 0 > value

wKgZO2fJFPKAL707AAEfrd_mLb4205.png
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信