小键盘TCA8418驱动调试

小键盘TCA8418驱动调试

代码中搜索发现kernel代码中有驱动

$ find -name "*tca841*"
./drivers/input/keyboard/tca8418_keypad.c
./Documentation/devicetree/bindings/input/tca8418_keypad.txt
./include/linux/input/tca8418_keypad.h

查看文档,依照说明配置dtsi

Required properties:
- compatible: "ti,tca8418"
- reg: the I2C address
- interrupts: IRQ line number, should trigger on falling edge
- linux,keymap: Keys definitions, see keypad-matrix.

配置dtsi时发现少了2个属性keypad,num-rows和keypad,num-columns

从datasheet获取芯片通讯地址

完成配置dtsi

tca8418@34 {
compatible = "ti,tca8418";
interrupt-parent = <&msm_gpio>;
interrupts = <11 0x2002>;
reg = <0x34>;
keypad,num-rows = <4>;
keypad,num-columns = <4>;
linux,keymap = <0x0000020a
0x0001000b
0x0002020b
0x0003001c
0x01000008
0x01010009
0x0102000a
0x0103000e
0x02000005
0x02010006
0x02020007
0x0203009e
0x03000002
0x03010003
0x03020004
0x0303001c>;
};

config中配置

CONFIG_KEYBOARD_TCA8418=y

编译烧写后

getevent驱动已经挂载上了,但是按按键没有反应

看原理图

发现外围没有接上拉电阻,一般都会有个上拉电阻,之前调试过小键盘sn7326就是因为没有上拉电阻的问题

只好再研究下芯片手册

果然不用的gpio要拉个上拉,这个纠结了好久,后来看reg设置时发现, 内部默认有个上拉,通过reg可以配置上拉,默认是配置的上拉,所以也没问题

接下来看看是不是reset信号有问题,量reset信号

查看原理图发现reset信号方向反了,对小键盘这边reset应该是输入,上图画成了输出,不过小键盘端有个上拉,reset脚可以一直保持高电平,芯片可以一直工作,不影响

再来看看是不是中断信号有问题,看中断信号

测量KEY_INT, 按键按下前为高,按下后为低,正常

测量GPIO11,按键按下前0.7V,电压不对,找到问题了

分析:从原理图上看电路应该是没问题的,GPIO11通过Q29与1.8V相接,Q29截止的话,实际上相当与拉了个很大的上拉电阻,会造成分压。Q29的1和2脚之前有个很大的电阻。

分析后把GPIO11配置修改成上拉,编译运行,小键盘开始正常工作了。但是当系统休眠后,再按按键就没有反应了。

量电压,系统休眠时1.8V掉电了,在tca8418代码中增加对VREG_L6_1P8V的控制,小键盘在系统休眠后也可以正常工作起来了。

剩下的就是收尾工作,调整下键值的对应关系。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值