在Cubieboard上通过GPIO成功点亮第一个LED【My first step on G...

一世执手 提交于 2020-04-10 22:26:17

如果你不知道什么是Cubieboard,点这里。

GPIO是干嘛的?你能看到的就是那96个pin针脚,可以用来:外接其他外设或传感器,比如LED灯,步进电机,继电器,温度传感器,红外传感器,超声波传感器等。

理论上,51开发板上的针脚能实现的,cubieboard都能实现。

我折腾了很多天、很多个内核之后,终于迈出了第一步,成功点亮了一个LED灯。


正面



看看引脚


控制输出电平

简单的说一下步骤:
首先要编译与你内核版本对应的sun4i-gpio.ko驱动(我同时也编译了uImage),我的内核版本是3.0.57+
将编译好的驱动放到SD卡上rootfs分区的/lib/modules/3.0.57+(换为你的内核版本)/kernel/drivers/misc/sun4i-gpio.ko

然后修改script.bin,转为script.fex,添加gpio_para配置段,然后转回script.bin,放到SD卡第一个分区,覆盖script.bin(我同时也将uImage给替换了,应该不改uImage也可以)

gpio_para配置如下(只是测试,没把所有的针脚都加进来):

[gpio_para]
gpio_used = 1
gpio_num = 4
gpio_pin_1 = port:PG00<1><default><default><default>
gpio_pin_2 = port:PB19<1><default><default><default>
gpio_pin_3 = port:PG02<1><default><default><default>
gpio_pin_4 = port:PG04<1><default><default><default>

引脚名字请参考  http://linux-sunxi.org/Cubieboard#Expansion_ports
名字后面的1表示把这个引脚以输出模式工作,0则为输入

驱动和script.bin放进去后,把卡插回到cubieboard,启动,在系统中加载你编译好的驱动:insmod /lib/modules/3.0.57+(换为你的内核版本)/kernel/drivers/misc/sun4i-gpio.ko

我用的PG0引脚来做测试的,根据wiki,PG0位于U15(即USB和以太网卡之间的那两排)的5号引脚,所以我接的这里,然后把led另一头接地(我用的U15的19号针脚)

然后通过 echo 1 > /sys/devices/virtual/misc/sun4i-gpio/pin/***来向对应的针脚输出高电平(***代表对应的针脚,echo 0则为低电平),当然也可以用C语言来实现。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!