IOT-9608I-L 的GPIO应用

目录

概述

1 GPIO接口介绍

2 板卡上操作IO

2.1 查看IO驱动

2.2 使用ECHO操作IO

2.2.1 端口选择

 2.2.2 查看IO

 2.2.3 echo操作IO

3 C语言实现一个操作IO的案例

3.1 功能介绍

3.2 代码实现

3.3 详细代码

4 测试


测试视频地址:

IOT-9608I-L的一个简单测试,官方不提供源码内核,说是驱动程序已经做好了,直接用就行。

概述

本文主要IOT-9608I-L 的GPIO的一般操作方法,IoT-9608已经实现lIO相关的driver,开发者只需调用相应的接口,就可以实现配置IO为输出或者输入、以及置高或者置低操作。

1 GPIO接口介绍

IoT-9608提供了多路通用数字I/O接口,连接器为2×10Pin, 2.54mm间距的简易牛角座,
主板上的标志为“GPIO”。

板卡上的编号处理器 IOLinux 驱动的编号
P0.2GPIO0_2gpio2
P0.3GPIO0_3gpio3
P0.8GPIO0_8gpio8
P0.9GPIO0_9gpio9
P0.10GPIO0_10gpio10
P0.11GPIO0_11gpio11
P1.28GPIO1_28gpio60
P2.20GPIO2_10gpio74

2 板卡上操作IO

2.1 查看IO驱动

GPIO 的全部操作通过/sys/class/gpio 目录下的文件来完成。该目录下提供了 GPIO 的相关操作接口。该目录下默认有如下文件。使用如下命令查看IO信息:

ls /sys/class/gpio/   -l

执行命令后,系统会列出IO的驱动信息 

2.2 使用ECHO操作IO

2.2.1 端口选择

笔者选择gpio10作为测试端口,板卡上再该端口连接一个LED,通过观察LED的状态变化,以确定IO端口的状态。

板卡上的编号处理器 IOLinux 驱动的编号
P0.10GPIO0_10gpio10

 2.2.2 查看IO

需要操作某个 GPIO,只需操作 gpioN 里面的文件即可。例如操作 gpio10,首先进入gpio10 目录,查看里面可操作的文件:

cd gpio10

ls

 2.2.3 echo操作IO

direction 用于设置或查询 GPIO 的方向,可能值为“in” 或者“out”,分别表示输入或者输出; value 表示 GPIO 的电平值,在输入模式下表示该引脚的电平(0 或者 1),在输出模式下表示写入该引脚的值(0 或者 1)。
1) 设置IO为输出端口

echo out > direction

设置IO 为高电平

echo 1 > value

设置IO 为低电平

echo 0 > value

2) 设置IO为输入端口

echo in > direction

读取IO的值

cat value

测试读取IO值功能

state-1:   将IO连接上一个高电平,读取IO的值

state-2:   将IO连接上一个高电平,读取IO的值 

3 C语言实现一个操作IO的案例

3.1 功能介绍

使用C语言编写一个案例,控制IO输出端口IO电平的变化,软件流程如下:

1)配置IO为输出模式

while( cnt   > 0  )

{

       1)设置IO端口为高电平,延时1s

       2)  设置IO端口为低电平,延时1s

       cnt --

}

3.2 代码实现

代码介绍

代码第17行: 进入到该驱动文件夹

代码第20行:使能IO操作

代码第24行:设置IO为输出

代码第29行:设置IO为高电平

代码第33行:设置IO为低电平

3.3 详细代码

/***************************************************************
Copyright  2024-2029. All rights reserved.
文件名     : IOT_9608_IO_Test.c
作者       : tangmingfei2013@126.com
版本       : V1.0
描述       : IOT_9608 IO端口测试程序
其他       : 无
日志       : 初版V1.0 2024/04/23
***************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <string.h>
#include <time.h>


int main(void)
{
    int count = 10;

    if(access("/sys/class/gpio/gpio10/value",F_OK) != 0)
    {
        /* enable IO port */
        system("echo 10 > /sys/class/gpio/export"); 
    }

    /*set IO as output */
    system("echo out > /sys/class/gpio/gpio10/direction");

    while( count-- )
    {
        /* turn on led */
        system("echo '1' > /sys/class/gpio/gpio10/value");
        sleep(1);

        /* turn off led */
        system("echo '0' > /sys/class/gpio/gpio10/value");
        sleep(1);
    }

}

/* End of this file */

4 测试

编译代码,然后将生成的.bin文件共享到NFS目录,然后在板卡中运行。

1)编译代码

2)板卡上运行程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/585774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Gradio搭建聊天UI实现质谱AI智能问答

一、调用智谱 AI API 1、获取api_key 智谱AI开放平台网址&#xff1a; https://open.bigmodel.cn/overview 2、安装库pip install zhipuai 3、执行一下代码&#xff0c;调用质谱api进行问答 from zhipuai import ZhipuAIclient ZhipuAI(api_key"xxxxx") # 填写…

回溯Backtracking Algorithm

目录 1) 入门例子 2) 全排列-Leetcode 46 3) 全排列II-Leetcode 47 4) 组合-Leetcode 77 5) 组合总和-Leetcode 39 6) 组合总和 II-Leetcode 40 7) 组合总和 III-Leetcode 216 8) N 皇后 Leetcode 51 9) 解数独-Leetcode37 10) 黄金矿工-Leetcode1219 其它题目 1) 入…

汽车热辐射、热传导、热对流模拟加速老化太阳光模拟器系统

汽车整车结构复杂&#xff0c;材料种类繁多&#xff0c;在使用过程中会面临各种严酷气候环境的考验&#xff0c;不可避免会出现零部件材料老化、腐蚀等不良现象&#xff0c;从而影响汽车的外观、功能&#xff0c;甚至产生安全隐患。因此&#xff0c;分析汽车零部件材料老化腐蚀…

【图论】图论基础

图论不同地方讲的不太一样&#xff0c;本文仅限作者的理解 定义 图是一般由点集 V V V 和边集 E E E 组成。 对于 v ∈ V v\in V v∈V&#xff0c;称 v v v 为该图的一个节点。 对于 e ∈ E e\in E e∈E&#xff0c;一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e&am…

Matlab生成txt文件导入到Vivado仿真

Matlab处理数据并将其写入txt文件 %% Txt Generate pre_RS_datadec2bin(simDataIn,8); %将数据转化为8bit的二进制 fidfopen("F:\FPGA\Xilinx_vivado\project\dvbstestbench\dbvs\matlab\pre_RS_data.txt","wt"); for i1:n*nMessages %数据…

记一次使用Notepad++正则表达式批量替换SQL语句

目录 一、需求二、解决方案三、正则解析 一、需求 存在如下SQL建表脚本&#xff1a; CREATE TABLE "BUSINESS_GOODS" ( "ID" VARCHAR(32) NOT NULL, "GOODS_CODE" VARCHAR(50), "GOODS_NAME" VARCHAR(100), ... NOT CLUSTER PRIMARY…

设计模式第一次测验 | 数据库连接设计(单例模式、抽象工厂模式、工厂模式)

需求如下&#xff1a; 我们需要设计一个工具&#xff0c;它负责创建一个与数据库软件的连接池。 该工具由在容器&#xff08;Tomcat等&#xff09;内运行的应用程序用来连接数据库软件。 在同一个容器中运行的所有应用程序共享同一个连接池对象。 现在我们需要支持以下数据库软…

TCP/IP和HTTP协议

TCP/IP OSI 七层模型在提出时的出发点是基于标准化的考虑&#xff0c;而没有考虑到具体的市场需求&#xff0c;使得该模型结构复杂&#xff0c;部分功能冗余&#xff0c;因而完全实现 OSI 参考模型的系统不多。而 TCP/IP 参考模型直接面向市场需求&#xff0c;实现起来也比较…

arthas如何排除CPU使用率过高问题

1、首先启动arthas java -jar arthas-boot.jar 2、使用thread查看各线程CPU使用率 thread 可以看到CPU使用率最高的有2个线程&#xff0c;以线程ID为19的为例子&#xff1a; 输入thread 19查看线程19的堆栈信息&#xff1a; thread 19 可以看到是(CpuController.java:78行…

「C/C++ 01」类型转换与整型提升

目录 一、类型转换和截断问题 1. 隐式类型转换 2. 强制类型转换 3. 截断问题 二、整型提升 0. 算数表达式的计算过程 1. 整型提升是什么&#xff1f; 2. 为什么要整型提升&#xff1f; 3. 如何进行整型提升 4. 唯一的注意事项 5. 通过在vs中的监视窗口来观察整型提升 6. 整型…

螺旋角和导程、转位后的齿轮有什么关系?

最近和小伙伴聊到了一个问题&#xff1a;斜齿轮螺旋角和导程的关系&#xff0c;主要是在遇到在采用转位设计方式的刀具时&#xff0c;更觉得有点迷惑&#xff0c;今天咱们就聊聊这个事儿。 先来说斜齿轮螺旋角和导程的关系&#xff1a; 斜齿轮是有多个螺旋面组成的&#xff0…

力扣153. 寻找旋转排序数组中的最小值

Problem: 153. 寻找旋转排序数组中的最小值 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化左右指针left和right&#xff0c;指向数组的头和尾&#xff1b; 2.开始二分查找&#xff1a; 2.1.定义退出条件&#xff1a;当left right时退出循环&#xff1b; 2.2.当nums…

【会员单位】浙江晧月水务科技有限公司

中华环保联合会理事单位 水环境治理专业委员会副主任委员单位 公司成立于2018年3月14日&#xff0c;是专业研究废水处理业务的国家高新技术企业。 公司自主研发的脱硫废水“零排放”的技术&#xff0c;不仅适应性好&#xff0c;技术先进&#xff0c;智慧化程度高&#xff0c…

深度学习中的变形金刚——transformer

很荣幸能和这些大牛共处一个时代。网络结构名字可以是一个卡通形象——变形金刚&#xff0c;论文名字可以来源于一首歌——披头士乐队的歌曲《All You Need Is Love》。 transformer在NeurIPS2017诞生&#xff0c;用于英语-德语&#xff0c;英语-法语的翻译&#xff0c;在BLEU…

21 如何进行高保真压测和服务扩容?

在后台架构中&#xff0c;压测非常常见&#xff0c;也是必须的工作。它能够帮我们发现微服务架构中的性能瓶颈&#xff0c;以及知道构建的微服务能承载的流量极限值。 但实际情况是&#xff0c;很多压测并不能发现瓶颈点和微服务所能承载的真实流量极限值。一方面是因为压测时…

LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)

0x01 产品简介 LiveGBS是安徽青柿信息科技有限公司研发的一款国标(GB28181)流媒体服务软件,可提供提供用户管理及Web可视化页面管理,开源的前端页面源码;提供设备状态管理,可实时查看设备是否掉线等信息等。 0x02 漏洞概述 LiveGBS user/save 接口处存在逻辑缺陷漏洞,未…

【Qt之OpenGL】01创建OpenGL窗口

1.创建子类继承QOpenGLWidget 2.重写三个虚函数 /** 设置OpenGL的资源和状态,最先调用且调用一次* brief initializeGL*/ virtual void initializeGL() override; /** 设置OpenGL视口、投影等&#xff0c;当widget调整大小(或首次显示)时调用* brief resizeGL* param w* para…

请求接口报错:java.lang.IllegalStateException: argument type mismatch

目录 一、场景二、报错信息三、控制器四、接口调用五、原因六、解决 一、场景 1、调用后端接口报错 2、接口参数以Json方式传递 – 二、报错信息 java.lang.IllegalStateException: argument type mismatch Controller [com.xxx.huarunshouzheng.controller.MallControlle…

Ubuntu如何更换 PyTorch 版本

环境&#xff1a; Ubuntu22.04 WLS2 问题描述&#xff1a; Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案&#xff1a; 决定不升级CUDA版本&#xff0c;而是使用一个与CUDA 11.5兼容的PyTorch版本&#xff0c;您可…

75、堆-前K个高频元素

思路 这道题还是使用优先队列&#xff0c;是要大根堆&#xff0c;然后创建一个类&#xff0c;成员变量值和次数。大根堆基于次数排序。前k个就拿出前k的类的值即可。代码如下&#xff1a; class Solution {public int[] topKFrequent(int[] nums, int k) {if (nums null || …