GPIO 调试(adb工具 Android 6.0)
#adb shell
#cd /sys/devices/virtual/misc/mtgpio/
#cat pin //获取GPIO状态
// 每行数据对应 IO编号: 模式, 输入上拉选择,输入值,输出值,输入上拉使能,方向,输入翻转
#echo -wmode 60 0 > pin //设置GPIO60为模式0,即普通IO模式
#echo -wdir 60 1 > pin //设置GPIO60为输出模式
#echo -wdir 60 0 > pin //设置GPIO60为输入模式
#echo -wpen 60 1 > pin //使能GPIO60上/下拉
#echo -wpsel 60 1 > pin //设置GPIO60为上拉
#echo -wdout 60 1 > pin //设置GPIO60输出高
具体可查看mt_gpio.h文件上的定义,进行GPIO的验证调试。
使用ADB工具连接设备,操作GPIO,一般用于驱动调试前的涉及GPIO的一般性操作(如拉高拉低)的验证,确保硬件上不存在问题。
GPIO的配置(DCT工具)
依次来看下GPIO的配置项:
EintMode:中断模式
M0~M7:GPIO支持的模式选择
Def.Mode:默认的模式,根据后面勾选的M0~M7中选择默认模式
InPull En:是否支持上下拉
InPull Sel High:选择上拉还是下拉,勾选表示上拉
Def.Dir:input还是output
In:input
Out:output
OutHigh:输出为高电平还是低电平
SMT#:SMT group
SMT:是否支持SMT(schmitt trigger)功能,波形过滤,输出方波或者脉冲波,延迟滞后具有消噪的功能。一般不用勾选
DCT工具中对codegen.dws文件的配置,编译后最终生成cust_gpio_boot.h和cust_gpio_usage.h两个头文件
GPIO 的使用
MTK 的旧时API(MTK 不建议)
MTK对于GPIO的控制有一套API,但官方已不建议使用此API进行GPIO控制,具体的API及参数定义可查看 <mt-plat/mt_gpio.h>文件
对GPIO的控制流程:
设置mode >> 设置dir >>设置上下拉使能 >>设置上下拉
/*direction*/
int mt_set_gpio_dir(unsigned long pin, unsigned long dir);
int mt_get_gpio_dir(unsigned long pin);
/*pull enable*/
int mt_set_gpio_pull_enable(unsigned long pin, unsigned long enable);
int mt_get_gpio_pull_enable(unsigned long pin);
/*schmitt trigger*/
int mt_set_gpio_smt(unsigned long pin, unsigned long enable);
int mt_get_gpio_smt(unsigned long pin);