PIN: (MODE)(DIR)(DOUT)(DIN)(DRIVE)(SMT)(IES)(PULL_EN)(PULL_SEL)(R1 R0)
016: 7000000110
7 ----模式
0 ----输入 0:input pin, 1:output pin
0 ----输出值
0 ----输入值
00 -----DRIVE 占两位 驱动能力,一般可取值0~7
0 -----SMT 使能施密特触发器
1 -----IES [IES] 输入使能,1:input信号有效 0:input信号无效
1 -----PULL_EN 只对input pin有效,使能上/下拉
0 -----PULL_SEL 只对input pin有效,1:上拉 0:下拉
([R1] [R0]) 当前GPIO pin的(上下拉)并联电阻的使能状态
1 0表示enable R1,disable R0
0 1表示disable R1,enable R0
1 1表示enable R1, enable R0
不打印出来,表示当前的GPIO pin不支持PUPD状况,即只有一个上拉电阻、一个下拉电阻
dws 设置
<gpio16>
<eint_mode>false</eint_mode>
<def_mode>7</def_mode>
<inpull_en>true</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>IN</def_dir>
<out_high>false</out_high>
<varName0>GPIO_JTAG_TRSTN_PIN</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio16>
DTS中的设置相关问题:
支持PUPD的GPIO pin设置,举例:
bias-pull-up=<MTK_PUPD_SET_R1R0_01>//上拉R0
bias-pull-down=<MTK_PUPD_SET_R1R0_10> //下拉R1
bias-disabled;//即不上拉也不下拉
不支持PUPD的GPIO pin设置,举例:
bias-pull-up;//上拉
bias-pull-down;//下拉
bias-disabled;//即不上拉也不下拉
dts
&gpio{
gpio_init_default = <0 0 0 0 1 1 1>,
<1 0 0 0 1 1 1>,
<2 0 1 0 0 0 1>,
对应 port mode dir dataout pullen pull smt
MTK平台 通过adb shell 修改/显示 GPIO 状态
首先要了解GPIO的8种模式,真多:
(1)浮空输入:In_Floating
(2)带上拉输入:IPU(In Push_Up)
(3)带下拉输入:IPD(In Push_Down)
(4)模拟输入:AIN(Anolog In) 查了一下,anolog是模拟的意思。
(5)开漏输出:OUT_PD(OD 代表开漏,既Open Drain,OC代表开集,Open Collect)
(6)推挽输出:OUT_PP(PP代表推挽式,Push_Pull)
(7)复用功能推挽输出:AF_PP(AF代表复用功能,Alternate-Fuction)
(8)复用功能开漏输出:AF_OD