【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+GPIO口的使用
[复制链接]
我项目是使用LicheePi 4A控制小车,那么肯定离不开GPIO口,参考文档里面似乎没有python对gpio的使用,现在把我尝试的操作说一下,供大家参考。
根据文档描述,板上的IO映射如下:
但缺省情况下,并没有映射对应的GPIO,如下:
查看sudo cat /sys/kernel/debug/gpio,也没有相关信息:
可以通过设置export来新增对这些GPIO口的sysfs节点,进而控制。具体操作可以查询wiki,在wiki文档中有一点点漏写了,系统重export的权限是200,并不能直接通过
echo pin number进/sys/class/gpio/export来生成gpioxx目录
需要先增加sudo chmod 202 export,接下来就可以照文档操作
num=xxx
echo ${num} > /sys/class/gpio/export
这时已经增加了对应的gpio节点。
与之类似,如果想设置GPIO的in/out,需要增加direction的可写权限,如下:
在这里,我将11脚(GPIO1_3)设置成输出低电平(0),12脚(GPIO1_4)设置成读取(当前悬空),继续使用sudo cat /sys/kernel/debug/gpio命令查看,可以看到在缺省基础上增加了427、428的显示:
用pydevmem操作也很简单。
查询接口对应内存关系表
参考https://www.cnpython.com/pypi/devmem#
和
安装python-devmem
sudo pip install devmem --break-system-packages
使用方法
使用sudo权限运行python3
执行
import devmem
a = devmem.DevMem
mem = a(0xffec006000, length=100)
mem.write(0x4,[0x00402078])
使用
print(mem.read(0x0, 32).hexdump(4))
可以看到修改效果
如果同时查看
sudo cat /sys/kernel/debug/gpio
可以看到427~430都变成out了
再使用
mem.write(0x0,[0x00402078])
可以看到427~430都设置为高电平输出了。
比较有意思的是在地址0xffec006050段的值也随着高低电平发生了变化,尝试过,这个地址的值写入是无效的。
|