文件名称:GPIO驱动-卷积神经网络的数学推导
文件大小:8.6MB
文件格式:PDF
更新时间:2024-06-29 07:17:48
周立功 嵌入式 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);