使用树莓派控制GPIO教程

描述

平台:树莓派 bcm2835 Raspberry Pi 3 Model B Rev 1.2

树莓派

树莓派

应用层控制gpio目前知道有两种方式——通过gpio设备文件和内存映射。

第一种,通过gpio设备文件

设备文件位于/sys/class/gpio目录下

树莓派

通过向export中写gpio号可以挂载对应的gpio,gpio号是bcm的号,不是wiringPi的。

树莓派

挂载后在gpio的文件夹下会有配置接口文件,向这些接口文件写命令就能控制gpio了。

树莓派

上面用echo这种方式写成shell脚本就可以用脚本控制gpio了。

如果通过c语言控制,使用Linux操作文件的API编程即可。

树莓派

第二种,内存映射

将gpio的地址映射到内存空间,之后所有对这片内存的操作就是对gpio的操作。使用mmap函数实现映射。物理内存的设备文件是/dev/mem。

树莓派

bcm2835的外设地址是0x3f000000,gpio的地址是外设地址基础上偏移0x200000。

树莓派

使用open函数可以打开mem设备文件,之后使用mmap函数映射,其返回值就是分配的内存空间的起始地址。

树莓派

注:必须有管理员权限才能打开mem设备文件,所以运行命令时必须加上sudo。

gpio有41个寄存器,每个寄存器都是32位的。

树莓派

前六个用来设置gpio的功能,前五个寄存器每个设置10个gpio,最后一个设置4个,三个位设置一种功能。

树莓派

gpio的设置寄存器是第8和9,清除寄存器是第11和12。一个位对应一个gpio。

树莓派

树莓派

根据以上寄存器的布局方式,可以使用下面的代码来设置和控制gpio。图中小写gpio就是映射后返回的地址指针,g是gpio号。

树莓派

树莓派

小结: 第一种方式比较适合对单独gpio的控制,比如调试和测试,更适用脚本编程;第二种方式适合c代码编程,更加通用方便。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分