珠宝销售网站源码,网站设计公司深圳,八方资源网做网站优化怎么样,成都较出名的广告公司Linux提供了GPIO子系统驱动框架#xff0c;使用该驱动框架即可灵活地控制板子上的GPIO。
GPIO命名
泰山派开发板板载了一个40PIN 2.54间距的贴片排针#xff0c;排针的引脚定义兼容经典40PIN接口。 在后续对GPIO进行操作前#xff0c;我们需要先了解k3566的GPIO命名规则使用该驱动框架即可灵活地控制板子上的GPIO。
GPIO命名
泰山派开发板板载了一个40PIN 2.54间距的贴片排针排针的引脚定义兼容经典40PIN接口。 在后续对GPIO进行操作前我们需要先了解k3566的GPIO命名规则 此处以 GPIO0_B7 举例 GPIO 0 B7 控制器bank 端口port 索引序号pin
控制器bankrk3566有5个GPIO控制器分别是GPIO0-GPIO4一个控制器下面包含ABCD个端口每个端口下有包含0-7个索引序号所以一个控制器可控制32个IO引脚。端口port A、B、C、D。对应着数字0-3所以A0、B1、C2、D3索引序号pin固定为0-7共计8个数 代入 GPIO0_B7 该引脚的 ID 可以按照以下规则组成 控制器 (bank) 为 0表示第 0 组控制器。
端口port为 B表示端口号为1。
索引序号pin为7。
根据计算公式32 x 0 1 x 8 7 15可以得到引脚ID为15。
sysfs操控GPIO
在Linux中最常见的读写GPIO方式就是用GPIO sysfs interface 是通过操作 /sys/class/gpio 目录下的 export 、 unexport 、gpio{N}/direction, gpio{N} /value 用实际引脚号替代{N}等文件实现的经常出现shell脚本里面。 在kernel 4.8开始加入了libgpiod的支持而原有基于sysfs的访问方式将被逐渐放弃。
GPIO输出测试
使用杜邦线连接GPIO0_B7 引脚 和 核心板的P53引脚看看能否使用下面的代码控制核心板的LED实现亮灭效果。当然也可以接入逻辑分析仪通过查看高低电平的变化。
#以下所有操作均需要打开管理者权限使用# 将引脚号 15 导出为 GPIO 引脚使其可以被访问和控制。
echo 15 /sys/class/gpio/export# 将引脚号 15 的方向设置为输出模式即设置为输出引脚。
echo out /sys/class/gpio/gpio15/direction# 将引脚号 15 的值设置为 1即将引脚设置为高电平。
echo 1 /sys/class/gpio/gpio15/value# 将引脚号 15 的值设置为 0即将引脚置设置为低电平。
echo 0 /sys/class/gpio/gpio15/value # 将引脚号 15 解除导出即取消对引脚号 15 的 GPIO 控制权。
echo 15 /sys/class/gpio/unexport
GPIO输入测试
使用杜邦线连接GPIO0_B7 引脚 和 核心板的P32引脚核心板上面的按钮外接了P32 然后对按键进行按下和弹起操作并且通过下面的代码打印出来的值。
#以下所有操作均需要打开管理者权限使用# 将引脚号 15 导出为 GPIO 引脚使其可以被访问和控制。
echo 15 /sys/class/gpio/export# 将引脚号 15 的方向设置为输入模式即设置为输入引脚。
echo in /sys/class/gpio/gpio15/direction# 读引脚的值结果为1或0更具引脚实际电平决定。
cat /sys/class/gpio/gpio15/value # 将引脚号 15 解除导出即取消对引脚号 15 的 GPIO 控制权。
echo 15 /sys/class/gpio/unexport
libgpiod操控GPIO
libgpiod是一种字符设备接口GPIO访问控制是通过操作字符设备文件比如 /dev/gpiodchip0 gpio控制器实现的 并通过libgpiod提供一些命令工具、c库以及python封装。想要使用libgpiod需要在板卡上安装libgpiod库。
#安装libgpiod库及头文件
sudo apt install libgpiod-dev #安装gpiod 命令行工具
sudo apt install gpiod
常用的命令行如下可使用 -h 查看命令相对应的使用说明以GPIO0_B7为例 命令 作用 使用举例 说明 gpiodetect 列出所有的GPIO控制器 gpiodetect(无参数) 列出所有的GPIO控制器 gpioinfo 列出gpio控制器的引脚情况 gpioinfo 0 列出第0组控制器引脚组情况 gpioset 设置gpio gpioset 0 150 设置第0组控制器编号7引脚为低电平 gpioget 获取gpio引脚状态 gpioget 0 15 获取第0组控制器编号7的引脚状态 gpiomon 监控gpio的状态 gpiomon 0 15 监控第0组控制器编号7的引脚状态