IOT-9608I-L 的GPIO应用

news2024/11/20 18:33:28

目录

概述

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)板卡上运行程序

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索APP分发的新趋势 - 内容包括小猪APP分发平

APP分发探索APP分发的新趋势 - 内容包括小猪APP分发平台的重要性 APP分发是移动互联网的核心环节探索APP分发的新趋势 - 内容包括小猪APP分发平台&#xff0c;它链接探索APP分发的新趋势 - 内容包括小猪APP分发平台了开发者和用户探索APP分发的新趋势 - 内容包括小猪APP分发平…

区块链 | 由外部实体导致的 NFT 安全问题

&#x1f98a;原文&#xff1a; Understanding Security Issues in the NFT Ecosystem &#x1f98a;警告&#xff1a; 本文只记录了原文的第 6 节。 1 问题描述 NFT 所指向的数字资产&#xff08;图片、视频等&#xff09;必须是可以访问的&#xff0c;这样 NFT 才具有意义…

牛客网刷题 | BC70 计算单位阶跃函数

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi最近学习了信号…

慧言AIVoceChat实现在线客服及社区频道

原文链接&#xff1a;小回博客 慧言AI&VoceChat实现在线客服及社区频道 一、VoceChat 简介 官网&#xff1a;https://voce.chat VoceChat 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上&#xff0c;部署简单&#xff0c;很少需要维护…

VS2022 .Net6.0 无法打开窗体设计器

拿Vs2022 建了个Demo&#xff0c;运行环境是net6.0-windows&#xff0c;无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…

变电站综合自动化系统:Modbus-PLC-645转IEC104网关方案

前言 电力行业作为关系国计民生的重要基础产业&#xff0c;是关系千家万户的公用事业。但是要做好电力行业安全保障工作的前提&#xff0c;是需要对应的技术人员详细了解电力工业使用的系统、设备以及各类协议的安全特性&#xff0c;本文将主要介绍IEC 104协议的定义和钡铼技术…

动手学深度学习——softmax分类

1. 分类问题 回归与分类的区别&#xff1a; 回归可以用于预测多少的问题&#xff0c; 比如"预测房屋被售出价格"&#xff0c;它是个单值输出。softmax可以用来预测分类问题&#xff0c;例如"某个图片中是猫、鸡还是狗&#xff1f;"&#xff0c;这是一个多…

Springboot+Vue项目-基于Java+MySQL的入校申报审批系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Tomact安装配置及使用(超详细)

文章目录 web相关知识概述web简介(了解)软件架构模式(掌握)BS&#xff1a;browser server 浏览器服务器CS&#xff1a;client server 客户端服务器 B/S和C/S通信模式特点(重要)web资源(理解)资源分类 URL请求路径(理解)作用介绍格式浏览器通过url访问服务器的过程 服务器(掌握)…

Python | Leetcode Python题解之第57题插入区间

题目&#xff1a; 题解&#xff1a; class Solution:def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:left, right newIntervalplaced Falseans list()for li, ri in intervals:if li > right:# 在插入区间的右侧且无交集…

ASP.NET数据存储与交换系统设计

摘 要 该系统以Microsoft Visual Studio 2003作为开发工具&#xff0c;选用SQL Server 2000数据库来实现数据存储&#xff0c;并设计开发了一种基于B/S模式的数据存储与交换系统。该系统完成了用户注册管理、后台管理和用户空间管理功能&#xff1b;为每个用户提供了个人的存…

企业家必须提升演讲口才的原因(3篇)

企业家必须提升演讲口才的原因&#xff08;3篇&#xff09; **篇&#xff1a;企业家必须提升演讲口才的原因——建立品牌影响力 一、引言 在当今竞争激烈的市场环境中&#xff0c;企业家作为企业的灵魂和代表&#xff0c;其个人形象和品牌影响力对于企业的成功至关重要。而演…

【大语言模型LLM】-基于ChatGPT搭建客服助手(1)

&#x1f525;博客主页&#xff1a;西瓜WiFi &#x1f3a5;系列专栏&#xff1a;《大语言模型》 很多非常有趣的模型&#xff0c;值得收藏&#xff0c;满足大家的收集癖&#xff01; 如果觉得有用&#xff0c;请三连&#x1f44d;⭐❤️&#xff0c;谢谢&#xff01; 长期不…

Java File类

1. File类概述 1.1 什么是File类 File是java.io包下作为文件和目录的类。File类定义了一些与平台无关的方法来操作文件&#xff0c;通过调用File类中的方法可以得到文件和目录的描述信息&#xff0c;包括名称、所在路径、读写性和长度等&#xff0c;还可以对文件和目录进行新建…

C语言 | Leetcode C语言题解之第61题旋转链表

题目&#xff1a; 题解&#xff1a; struct ListNode* rotateRight(struct ListNode* head, int k) {if (k 0 || head NULL || head->next NULL) {return head;}int n 1;struct ListNode* iter head;while (iter->next ! NULL) {iter iter->next;n;}int add n…

c#数据库: 9.删除和添加新字段/数据更新

先把原来数据表的sexy字段删除,然后重新在添加字段sexy,如果添加成功,sexy列的随机内容会更新.原数据表如下: using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.…

3D看车有哪些强大的功能?适合哪些企业使用?

3D看车是一种创新的汽车展示方式&#xff0c;它提供了许多强大的功能&#xff0c;特别适合汽车行业的企业使用。 3D看车可实现哪些功能&#xff1f; 1、细节展示&#xff1a; 51建模网提供全套汽车行业3D数字化解决方案&#xff0c;3D看车能够将汽车展示得更加栩栩如生&…

ClickHouse高原理与实践

ClickHouse高原理与实践 1 ClickHouse的特性1.1. OLAP1.2. 列式存储1.3. 表引擎1.4. 向量化执行1.5. 分区1.6. 副本与分片1.7 其他特性 2. ClickHouse模块设计2.1 Parser分析器与Interpreter解释器2.2 Storage2.3 Column与Field2.4 DataType2.4 Block2.5 Cluster与Replication …

C语言.自定义类型:结构体

自定义类型&#xff1a;结构体 1.结构体类型的声明1.1结构体回顾1.1.1结构体的声明1.1.2结构体变量的创建和初始化 1.2结构体的特殊声明1.3结构体的自引用 2.结构体内存对齐2.1对齐规则2.2为什么存在内存对齐2.3修改默认对齐数 3.结构体传参4.结构体实现位段4.1什么是位段4.2位…

【Linux系统编程】30.pthread_exit、pthread_join、pthread_cancel

目录 pthread_exit 参数retval 测试代码1 测试结果 pthread_join 参数thread 参数retvsl 返回值 测试代码2 测试结果 pthread_cancel 参数thread 返回值 测试代码3 测试结果 pthread_exit 退出当前线程。 man 3 pthread_exit 参数retval 退出值。 NULL&#xf…