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

  • 55
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值