【文件属性】:
文件名称:GPIO驱动-卷积神经网络的数学推导
文件大小:8.6MB
文件格式:PDF
更新时间:2021-06-09 13:31:08
周立功 嵌入式 Linux
第4章 GPIO驱动
本章导读
前面章节讲述的 LED字符驱动其实也是 GPIO驱动的实现。本章讲述在内核的 GPIOLIB
框架下实现 GPIO驱动。
4.1 GPIOLIB 简介
GPIO(通用目的输入/输出端口)是一种灵活的软件控制的数字信号。大多数的嵌入式
处理器都引出一组或多组的 GPIO,并且部分普通管脚通过配置可以复用为 GPIO。利用可
编程逻辑器件,或总线(如 I
2
C、SPI)转 GPIO 芯片,也可以扩展系统的 GPIO。不管是何
种 GPIO,GPIOLIB 为内核和用户层都提供了标准的操作方法。
GPIOLIB 的接口十分简洁。在 GPIOLIB,所有的 GPIO 都是用整形的 GPIO 编号标识。
只要获得要操作 GPIO 的编号,就可以调用 GPIOLIB 提供的方法操作 GPIO。
4.2 GPIOLIB 的内核接口
GPIOLIB 的内核接口是指:若某些 GPIO 在 GPIOLIB 框架下被驱动后,GPIOLIB 为内
核的其它代码操作该 GPIO 而提供的标准接口。
GPIO 的申请和释放 1.
GPIO 在使用前,必须先调用 gpio_request()函数申请 GPIO:
int gpio_request(unsigned gpio, const char *label);
该函数的 gpio 参数为 GPIO 编号;label 参数为 GPIO 的标识字符串,可以随意设定。
若该函数调用成功,将返回 0 值;否则返回非 0 值。gpio_request()函数调用失败的原因可能
为 GPIO 的编号不存在,或在其它地方已经申请了该 GPIO 编号而还没有释放。
当 GPIO 使用完成后,应当调用 gpio_free()函数释放 GPIO:
void gpio_free(unsigned gpio);
GPIO 的输出控制 2.
在操作 GPIO 输出信号前,需要调用 gpio_direction_output()函数把 GPIO 设置为输出方
向:
int gpio_direction_output(unsigned gpio, int value);
把 GPIO 设置为输出方向后,参数 value 为默认的输出电平:1 为高电平;0 为低电平。
GPIO 被设置为输出方向后,就可以调用 gpio_set_value()函数控制 GPIO 输出高电平或
低电平:
void gpio_set_value(unsigned gpio, int value);
该函数的 value 参数可取值为:1 为高电平;0 为低电平。
GPIO 的输入控制 3.
当需要从 GPIO 读取输入电平状态前,需要调用 gpio_direction_input()函数设置 GPIO 为
输入方向:
int gpio_direction_input(unsigned gpio);