研究了一段时间的gpio,arm上的gpio不像树莓派上可以直接用wiringPi的库直接使用。这个gpio需要配置内核或者直接写入寄存器的方式进行操控。下面就以两种方法使用gpio,简单介绍寄存器,详细的记录一下配置内核的方法。
1. 寄存器
寄存方式得需要用户手册才能使用。主要是查询各个gpio的地址,其中包括控制寄存器的地址和数据寄存器的地址。
其主要流程为下:
1. 写入16位数据至控制寄存器,使gpio使能。(注意引脚的复用功能)
2. 待配置好gpio为输出时,写入16位数据至数据寄存器,配置其高低电平。
2.配置内核
首先要查看 /sys/class/gpio是否有gpio文件夹的存在。若没有,则需要配置内核,使用gpio。
1.配置内核。(若存在gpio跳过)
下载官方的内核文件。linux命令行:
git clone https://github.com/friendlyarm/linux-3.4.y.git
下载完成之后按照维基百科继续进行。make menuconfig配置
Device Drivers —> GPIO SUPPORT —> /sys/class/gpio/…
配置好内核。
2.使用说明
首先查看引脚的映射使用su模式在/sys/class/gpio目录下输入
for i in gpiochip* ; do echo `cat $i/label`: `cat $i/base` ; done
会得到:
gpioa: 0
gpioe: 128
gpiob: 32
gpioc: 64
gpiod: 96其中gpioa就代表着gpioa。若想要控制gpioA1,则数字为0+1 = 0。若想控制GPIOC2,数字为64+2 = 66
echo 1 > export
会发现出现一个gpio1的文件夹,cd gpio1在里面的direction可配置输入输出,高低电平。in、out、high、low
echo high > direction
就将gpioA1的引脚配置为高电平。
输出端口数据
echo 1 & > value