一起游 手游攻略 手游评测 瑞芯微(EASY EAI)RV1126B GPIO使用

瑞芯微(EASY EAI)RV1126B GPIO使用

时间: 来源:互联网 浏览:0

1.GPIO简介

1.1 硬件接线原理图

图片 注意:虽然GPIO可以热插拔,但如果底板没有外壳保护,很容易触摸到底板上的器件,甚至靠近板子的金属部件也很容易导致板子短路。因此,也建议在插拔外设时,最好确保电源已经完全切断。

GPIO的输入/输出电压为3.3V。注意电平匹配,否则会损坏芯片引脚或所连接的器件。

1.2 GPIO硬件资源分布介绍

图片gpiod 库:需要使用上表中的【芯片对象名称】和【线路偏移】。

Sysfs访问方式:需要使用上表中的【GPIO系统节点路径】。

1.3 gpiod 简介

从Linux 4.8开始,增加了对libgpiod的支持,原有的基于sysfs的访问方式将逐渐被放弃。因此,本文对应的demo主要使用gpiod来控制GPIO。 gpiod库通过操作chip对象和line对象来控制GPIO引脚输出电平或读取GPIO引脚电平。

芯片对象名称:调用gpiod_chip_open_by_name获取芯片对象时作为传入参数。

线路偏移:作为调用gpiod_chip_get_line获取线路对象时的传入参数。

以GPIO5_C0为例,[引脚名称][芯片对象名称][线路偏移]之间的关系如下公式所示。

图片

1.4 sysfs访问方式简介

sysfs控制gpio的方式主要是基于内核提供的gpio控制接口文件。即通过读写/sys/class/gpio目录下的文件来控制对应的gpio接口。

Pin号:sysfs访问方式使用pin号作为操作的依据。

GPIO系统节点路径:具体GPIO管脚对应的节点路径。

[管脚名称] [GPIO 系统节点路径] 之间的关系如下式所示。

图片 引脚导出申请:在使用某个引脚之前,需要手动向gpio管理器申请导出引脚资源。

echo 176 /sys/class/gpio/export ## gpio_request 申请导出对应的gpio

设置该引脚的工作模式:输入或输出。

echo in /sys/class/gpio/gpio176/direction ## gpio_direction_output 将对应的gpio设置为输入方向## 或者echo out /sys/class/gpio/gpio176/direction ## gpio_direction_output 将对应的gpio设置为输出方向

根据引脚的工作模式,进行相应的控制:写电平或读电平。

cat /sys/class/gpio/gpio176/value ## gpio_get_value 获取gpio当前状态值## 或者echo 0 /sys/class/gpio/gpio176/value ## gpio_set_value 设置输出低电平echo 1 /sys/class/gpio/gpio176/value ## gpio_set_value 设置输出高电平

引脚释放申请:引脚使用后,需要手动向gpio管理器申请释放引脚资源。

echo 176 /sys/class/gpio/unexport ## gpio_free释放所申请的gpio

2. 快速上手

2.1 开发环境准备

如果您是初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》并按照其相关操作进行编译环境的部署

在PC上的Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,如下图。

cd ~/develop_environment ./run.sh

图片

2.2 源码下载以及例程编译

首先在虚拟机后台终端中执行以下命令创建外设单例源码管理目录:

cd /opt mkdir -p EASY-EAI-Nano-TB/demo

首先从【百度云盘】下载相关单例程序:

链接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234

提取码:1234

例如,将单例程序下载到:本电脑\D:\百度网盘(无规定,用户可自主选择),如下图。

图片 然后将下载的单实例复制到虚拟机的文件系统中。流程如下图所示。

图片 图片 图片 最后进入相应的例程目录进行编译操作。具体命令如下:

cd EASY-EAI-Nano-TB/demo/09_GPIO ./build.sh

注意:

* 由于板子上部署了依赖库,交叉编译过程中必须保持挂载/mnt。

图片编译成功后,会在Release目录下生成相关demo,并自动部署到开发板的/userdata/目录下。

2.3 例程运行

通过串口调试或者ssh调试,进入板子后台,找到例程部署的位置,如下图:

cd /用户数据

图片 执行如下例程命令。

sudo ./test-gpio

执行效果如下。

图片 然后用导线短接[GPIO5_C0]和[GPIO5_C1],即可从[GPIO5_C1]引脚读取[GPIO5_C0]输出的[高电平],如下图。

图片

3. C语言使用案例

GPIO C语言用例,代码地址为09_GPIO/test-gpio/main.c,供用户编码参考。下面的代码展示了GPIO的操作流程:

#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) static const GPIOCfg_t gpioCfg_tab[]={ { .pinName='GPIO5_C0',direction=DIR_OUTPUT,val=0, }, { .pinName='GPIO5_C1',direction=DIR_INPUT,val=0, /* }, { .pinName='GPIO5_C2',direction=DIR_OUTPUT,val=0, }, { .pinName='GPIO5_C6',direction=DIR_INPUT,val=0, */} }; int main(int argc, char **argv) { gpio_init(gpioCfg_tab, ARRAY_SIZE(gpioCfg_tab)); pin_out_val('GPIO5_C0', 1); //pin_out_val('GPIO5_C2', 0); int val=read_pin_val('GPIO5_C1'); printf('GPIO5_C1 val : %d\n', val); //val=read_pin_val('GPIO5_C6'); //printf('GPIO5_C6 val : %d\n', val);返回0; }

其中gpio_init()、pin_out_val()、read_pin_val()是基于libgpiod的简单易用的包。具体实现在09_GPIO/commonApi/gpio.c中

如果用户需要像demo一样引用libgpiod,需要注意以下两点。

* 需要包含头文件:#include.

* 编译时需要添加-lgpiod作为编译参数。

标题:瑞芯微(EASY EAI)RV1126B GPIO使用
链接:https://yqqlyw.com/news/sypc/67692.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
  • 瑞芯微(EASY EAI)RV1126B I2C使用
  • 瑞芯微(EASY EAI)RV1126B TF卡使用
  • 绯红之境兑换码最新2021 礼包兑换码大全

    绯红之境兑换码最新2021 礼包兑换码大全[多图],绯红之境兑换码怎么领取?绯红之境兑换码有哪些?绯红之境在今日

    2026-01-05
    三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法

    三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法[多图],三国群英传7霸王再临怎么玩?三国群英传7霸王再临

    2026-01-05
    妄想山海怎么加好友 加好友方法大全

    妄想山海怎么加好友 加好友方法大全[多图],妄想山海添加好友功能在哪里?妄想山海添加好友的方法是什么?好友添

    2026-01-05
    江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略

    江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略[多图],江南百景图又见桃花村钓鱼怎么钓?又见桃花村钓

    2026-01-05