一、概述

通用输入输出端口(General-purpose input/output,GPIO),可以通过软件来控制其输入和输出。通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-高/低电平。用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等,GPIO口的使用非常广泛。

对于一个IO Port来讲,有两方面需要配置,一是本身的功能设定,二是如果作为GPIO的话输入输出的设定。前者由Pin Controller控制,后者由GPIO Controller控制。GPIO Controller控制包括:1、配置GPIO的方向;2、如果是输出,可以配置high level或者low level;3、如果是输入,可以获取GPIO引脚上的电平状态。

本文主要描述GPIO接口输入输出的测试方案。

二、环境信息

linux系统、串口线、硬件设备(如监控摄像机)

三、测试方案

测试方案一:申请创建新的GPIO口:设置申请的GPIO口为输入/输出,获取/设置gpio口的电平状态,确定查看/设置电平状态是否生效。

测试方案二:使用已有GPIO口:通过系统驱动调试命令,查看/设置GPIO引脚的电平状态,确定查看/设置电平状态是否生效。


注意:输入GPIO引脚仅可以获取电平状态,输出GPIO引脚可以获取/设置电平状态。

四、操作步骤及预期结果

测试方案一:

操作步骤:

1、在串口或ssh连接下打开打印:cat /proc/kmsg &

2、查看所有GPIO接口的状态:cat /sys/kernel/debug/gpio(in代表输入、out代表输出、hi代表高电平、lo代表低电平)

3、申请gpio口:echo gpio口序号 > /sys/class/gpio/export(不要与之前已有GPIO口序号重复)【GPIO口文件在/sys/class/gpio目录下。】

例:echo 93 > /sys/class/gpio/export,系统会在/sys/class/gpio/目录下生成gpio93文件夹,此文件夹出现代表gpio口申请成功。




luatos 怎样检测gpio电平状态 gpio接口测试_luatos 怎样检测gpio电平状态


4、控制gpio93口为输入方向:echo in > /sys/class/gpio/gpio93/direction

控制为输入方向后查看方向是否正确:cat /sys/kernel/debug/gpio|grep 93


luatos 怎样检测gpio电平状态 gpio接口测试_输入输出_02


获取gpio输入引脚的电平状态:cat /sys/class/gpio/gpio口序号/value

5、控制gpio93口为输出方向:echo out > /sys/class/gpio/gpio93/direction

控制为输入方向后查看方向是否正确:cat /sys/kernel/debug/gpio|grep 93


luatos 怎样检测gpio电平状态 gpio接口测试_引脚_03


设置gpio输出引脚的电平状态:echo 0/1 > /sys/class/gpio/gpio口序号/value【0为低电平、1为高电平】。

例:设置gpio93口为低电平状态:echo 0 > /sys/class/gpio/gpio93/value(注:需先设置gpio23为输出方向)

例:设置gpio93口为高电平状态echo 1 > /sys/class/gpio/gpio93/value(注:需先设置gpio23为输出方向)

设置后查看电平状态是否设置成功:cat /sys/class/gpio/gpio口序号/value

预期结果:

1、控制gpio93口为输入方向时,获取gpio输入引脚的电平状态成功


luatos 怎样检测gpio电平状态 gpio接口测试_输入输出_04


2、控制gpio93口为输出方向时:

设置gpio输出引脚为低电平状态成功


luatos 怎样检测gpio电平状态 gpio接口测试_可用性测试_05


设置gpio输出引脚为高电平状态成功


luatos 怎样检测gpio电平状态 gpio接口测试_输入输出_06


测试方案二:

操作步骤:

1、在串口或10023端口下打开打印:cat /proc/kmsg &

2、查看设备GPIO接口的控制功能node号:cat /proc/sys/klsp/klsp_debug(各个设备会有差异,需要先查看)

3、查看所有GPIO接口的状态:cat /sys/kernel/debug/gpio(in代表输入、out代表输出、hi代表高电平、lo代表低电平)

4、设置GPIO输出引脚的电平状态:echo node号#w 0 [pin] [val] > /proc/sys/klsp/klsp_debug(其中pin指的是GPIO的pin_id即GPIO引脚序号,val是指设置输出电平【0为低电平、1为高电平】。

例:输出GPIOG引脚GPIO-86本身是低电平,将输出电平设置为高电平:echo 6#w 0 86 1 > /proc/sys/klsp/klsp_debug。设置成功后获取GPIO-86的状态:echo 6#r 0 86

5、对比获取GPIO输入引脚的电平状态:echo node#r 0 [pin] > /proc/sys/klsp/klsp_debug(其中pin指的是GPIO的pin_id即GPIO引脚序号)

例:获取输出引脚GPIO-81的电平状态: echo 6#r 0 81 > /proc/sys/klsp/klsp_debug 对比 cat /sys/kernel/debug/gpio|grep 81

预期结果:

1、设置输出引脚GPIO-86输出电平为高电平成功


luatos 怎样检测gpio电平状态 gpio接口测试_luatos 怎样检测gpio电平状态_07


2、获取输入引脚GPIO-81的电平状态成功,对比一致