这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » 疯壳-鸿蒙OS-总线驱动开发及实现之GPIO

共1条 1/1 1 跳转至

疯壳-鸿蒙OS-总线驱动开发及实现之GPIO

菜鸟
2021-02-05 14:48:16     打赏

总线驱动开发及实现之GPIO         

疯壳 出品

 

一、GPIO管脚标准操作方法

鸿蒙OS中定义了一套GPIO的接口,其中包含不少GPIO操作相关的方法,具体请参考源码目录:

\drivers\hdf\frameworks\include\platform\

\drivers\hdf\frameworks\support\platform\src

下的gpio_if.h、gpio_if.c文件,以及源码目录:

\drivers\hdf\frameworks\include\osal

下的osal_io.h文件。

 

下面我给大家介绍我们本次课程中用到的GPIO相关接口函数,后续课程中涉及GPIO操作的代码将不会继续做过多讲解,请认真对待本次课程。

 

关于osal_if.h文件

 

这个文件的接口相对偏底层,他提供了GPIO功能寄存器相关操作的接口,例如从I/O地址空间读取数据或者将数据写入I/O地址空间,以及I/O地址空间映射相关操作。本次课程代码中用到其中一个接口为:OSAL_WRITEL(value, address),原文截图如下:

该接口用于将一个整数写入I/O地址空间,其中value为要写入的数据,address为I/O地址。本次课程后续会结合实际GPIO操作对该接口进行讲解。

 

关于gpio_if.h、gpio_if.c文件

这两个文件主要提供了GPIO操作——例如设置GPIO方向(输入/输出)、设置GPIO管脚电平值、GPIO中断操作相关的方法,下面我们来一一认识一下他们。

GPIO方向配置

GpioRead 用于读取gpio指定的管脚当前电平值,其中gpio为管脚号,管脚号确定方法同上,val为指向存储电平值的变量的指针。管脚电平值在h头文件中描述如下:

GpioWrite 用于向gpio指定的管脚写入电平值val。

 

GPIO中断处理函数设置

GpioSetIrq 用于设定gpio指定的管脚的中断服务函数,其中mode为中断触发方式,func为中断服务函数指针,arg是指向中断传参的指针。中断相关的定义在源码目录:

\drivers\hdf\frameworks\include\osal\

 

 

下的osal_irq.h文件。例如上面说的mode取值如下:

以上取值分别为:不设置触发方式、上升沿触发、下降沿触发、高电平触发以及低电平触发。

func类型在gpio_if.h文件中定义如下:

同一时刻只能为一个GPIO设置一个中断服务函数,重复调用时,新的设置将会覆盖旧设置。如果不需要为管脚设置中断服务函数则可以通过GpioSetTrq取消设置。

 

GPIO中断使能设置

GpioEnableIrq 与 GpioDisableIrq分别用于使能/失能gpio指定的管脚中断功能,使能时,在对应条件下会触发中断,失能则反之,中断不起作用。

二、驱动代码

下面我们来看一下本次课程驱动代码以及app代码,主要改动在驱动文件,下述内容为主要改动,后续会将会将文件上传,大家可直接下载替换即可。

本次课程使用GPIO5_0作为测试GPIO管脚。

注:关于GPIO管脚功能定义、寄存器地址之类的信息,大家请自行找海思的SDK资料包了解。在海思的SDK资料中,Hi3518EV300_PINOUT_CN.xlsx 文档对GPIO5_0 有如下描述:

 

该管脚对应芯片的 Pin28,也就是我们开发板上标有28的排针引脚,该管脚的功能寄存器地址为0x112C0040,寄存器默认初始值为0x1000,最右一栏为寄存器值具体含义。

比如说我们这次课程需要将该管脚作为普通GPIO来使用,因此需要设置bit3:0 为0x0,bit7:4 选择最高档位的驱动能力0x0,第8bit设置1,使能管脚上拉电阻,第9bit设置0,第10bit设置0,余下保留。

因此代码中做如下设置:

在驱动初始化函数内进行GPIO的初始化:

上图中,GPIO中断mode设置为上升沿/下降沿触发。

其中中断服务函数如下:

每来10次中断我们就打印一次数据。

 

测试接口函数定义:

测试接口函数中,我们每500ms就翻转一次GPIO的电平信号,每次翻转总会触发一次中断(因为总是会有一次上升沿或者下降沿跳变)。

Dispatch修改如下:

App修改就很简单,直接下发一次iotest 命令即可。

 

接下来就是编译下载,我们来看看执行的结果:

上图为逻辑分析仪抓波结果。

上图为hitool调试窗口打印的信息。





关键词: 鸿蒙OS 疯壳    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]