一. GPIO介绍
T5平台有9组端口:PA,PC,PD,PE,PF,PG,PH,PI,PL
如GPIO-E:
1.1 内部结构图:
包括:功能/模式配置、输出data值、驱动能力、上下拉;
1.2 驱动能力配置:
当输出高电平时:
n0,n1,n2,n3 全部关闭;
p0,p1,p2,p3 打开;
根据驱动能力大小导通不同的PMOS管;
当输出低电平时:
p0,p1,p2,p3 全部关闭;
n0,n1,n2,n3 打开;
根据驱动能力大小导通不同的NMOS管;
1.3 上下拉配置:
二.sunxi_pinctrl 节点控制
cd /sys/kernel/debug/sunxi_pinctrl/
2.1 查看配置状态:
//查看PE13状态
echo PE13 > sunxi_pin_configure && cat sunxi_pin_configure
每个 pin 都有 4 种属性:function:复用、data:数据值、dlevel:驱动能力、pull:上下拉
这 4 个属性都能读写;
2.2 控制 gpio输出
//拉高 PE13
echo PE13 1 > data && cat sunxi_pin_configure
//拉低 PE13
echo PE13 0 > data && cat sunxi_pin_configure
2.3 修改上下拉
//PE13输出下拉
echo PE13 0 > pull && cat sunxi_pin_configure
//PE13输出上拉
echo PE13 1 > pull && cat sunxi_pin_configure
三. pinctrl节点控制
3.1 查看IO属性
cat sys/kernel/debug/pinctrl/pio/pinmux-pins
PE13=13 + 128 = 141
PE16=16 + 128 = 144
3.2 查看IO值
cat sys/kernel/debug/gpio
四. 寄存器控制gpio
此平台支持8组GPIO(PE也在其中),基地址是0x0300B00
4.1 查看寄存器值
cd sys/class/sunxi_dump/
echo 0x300B094 > dump
cat dump
4.2 写入寄存器值
cd sys/class/sunxi_dump/
echo 0x300B0AC 0x8000000 > write //寄存器地址, 值
4.3 查看写入内容
cat write
4.4 回读寄存器
cat dump
4.5 以PE13为例
计算configure addr、drving addr、 pull addr 其中:addr= base addr + offset
configure addr= 0x300B000 + 0x0098 = 0x300B098 (bit2:0)
drving addr = 0x300B000 + 0x00A8 = 0x300B0A8(bit1:0)
pull addr = 0x300B000 + 0x00B0 = 0x300B0B0(bit1:0)
0x01707111(bit2:0=1 即output)
PS:此方法无法修改output值值拉高/拉低gpio