使用树莓派控制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代码编程,更加通用方便。

软通动力彭强:拥抱智能化时代 加速转型升级
瞬间售罄 华为Mate9 Pro首发 京东抢购成功体验
全球15城市对iPhone12系列手机5G速率测评 韩国首尔全球之首
区分寄生二极管方向
受新能源汽车厂商青睐,锂电池产量大增
使用树莓派控制GPIO教程
什么是光模块
传感器的静态特性与动态特性解析
重磅活动| SIA汽车电子专委会走进整车厂,打造产业生态圈
亿纬储能:“技术+质量”核心能力推动高质量发展
丰田计划投资近30亿美元研发自动驾驶汽车软件 并领头成立新公司
高速信号设计中紧耦合与松耦合之间的对比
SoC片内PMU有什么用 两个PWU之间有何区别
ARM营收超预期 一半营收来自于手机之外
电气设备管理三级保养
基于AI上的应用展望有哪些
半导体市场低迷 飞思卡尔称不利本季营运
PCB设计时应满足的焊接工艺要求
高通针对低成本WCDMA手机推出入门级芯片组
电感镇流器电线发热如何解决