MTK6577+Android之TP(触摸屏)

1.     硬件设计


图1

CPU GPIO和msg2133连接引脚对应关系如下:

 

CPU GPIO引脚

Msg2133引脚

GPIO_CTP_PWR_EN(GPIO83)

AVDD(2.8)

SCL_0(GPIO87)

SCL

SDA_0(GPIO88)

SDA

KP_ROW6(GPIO110)

RST

EINT6(GPIO75)

INT

 

根据msg2133的数据手册,并没有RST引脚,只有CHIP_EN引脚,这里应该是原理图搞错了,msg2133有电容式触摸传感器接口(capacitive touch sensor interface)、主机接口(host interface)、GPIO接口和电源引脚,下面给出后三种接口的图:


图2

 

 

2.     TP驱动实现

2.1   修改ProjectConfig.mk

修改mediatek\config\prj\ProjectConfig.mk下的CUSTOM_KERNEL_TOUCHPANEL

其值由GT818B改为msg2133


 

2.2   增加ms2133驱动文件夹

根据TP厂家提供的驱动,我们在\mediatek\custom\common\kernel\touchpanel增加msg2133触摸屏驱动文件夹msg2133,并做下面一些简单修改正常使用。

 

(1)  Msg2133接口的初始化

1)     CHIP_EN片选使能引脚

[cpp]  view plain copy
  1. mt_set_gpio_mode(GPIO_CTP_MSG2133_EN_PIN,GPIO_CTP_MSG2133_EN_PIN_M_GPIO);  
  2. mt_set_gpio_dir(GPIO_CTP_MSG2133_EN_PIN,GPIO_DIR_OUT);  
  3. mt_set_gpio_out(GPIO_CTP_MSG2133_EN_PIN,GPIO_OUT_ONE);</span>  

msg2133芯片使能引脚配置为GPIO模式、输出高电平使能。

 

2)     INT中断引脚

[cpp]  view plain copy
  1. mt_set_gpio_mode(GPIO_CTP_MSG2133_EINT_PIN,GPIO_CTP_MSG2133_EINT_PIN_M_EINT);  
  2. mt_set_gpio_dir(GPIO_CTP_MSG2133_EINT_PIN,GPIO_DIR_IN);  
  3. mt_set_gpio_pull_enable(GPIO_CTP_MSG2133_EINT_PIN,GPIO_PULL_ENABLE);  
  4. mt_set_gpio_pull_select(GPIO_CTP_MSG2133_EINT_PIN,GPIO_PULL_UP);</span>  

配置为中断模式、输入、使能上下拉功能和设置为上拉。

 

(2)  IIC地址

Msg2133的iic读写地址,我从数据手册上没有找到是如何确定这两个地址的,驱动厂家在驱动代码中提供,如果想要具体是怎么确定的,可咨询厂家。

[cpp]  view plain copy
  1. #defineFW_ADDR_MSG21XX   (0xC4>>1)  
  2. #defineFW_ADDR_MSG21XX_TP  (0x4C>>1)//write,0x26  
  3. #defineFW_UPDATE_ADDR_MSG21XX  (0x92>>1)//read,0x49</span>  

(3)  增加TP的虚拟按键(virtual key)


图3

 

要在TP上增加虚拟按键,需要在tp对应的头文件添加下面的设置:

1)     定义TPD_HAVE_BUTTON

2)     定义TPD_BUTTON_HEIGHT、TPD_KEY_COUNT、TPD_KEYS和TPD_KEYS_DIM,分别用于定义button被识别的纵向坐标、虚拟按键个数、对应的功能键和每个功能键的坐标

[cpp]  view plain copy
  1. #defineTPD_HAVE_BUTTON  
  2.    
  3. #defineTPD_BUTTON_HEIGHT      800  
  4. #defineTPD_KEY_COUNT     4  
  5. #defineTPD_KEYS        { KEY_BACK, KEY_SEARCH,KEY_MENU, KEY_HOMEPAGE }  
  6. #define TPD_KEYS_DIM            {{200,900,10,10},{260,900,10,10},{40,900,10,10},{120,900,10,10}}</span>  

其中,{200,900,10,10}对应了KEY_BACK的坐标, (200,900)是该key center的坐标,10是该键的宽度,10是该键的高度。

 

3)     根据显示屏分辨率修改相关的宏定义

[cpp]  view plain copy
  1. #defineTPD_RES_X                480  // (320)  
  2. #defineTPD_RES_Y                800  //(480)</span>  

把常用的实体按键(导航按键)映射到触屏区域的快捷方式,不强制要求一定要有物理按键来支持用户操作,这对开发全触摸屏的产品非常有利。

 


2.3   TP驱动具体的源代码后面深入学习在分享

 

 

参考链接:

mtk的android平台触摸坐标调整触摸坐标旋转

http://blog.sina.com.cn/s/blog_539238aa0101ed1f.html

Mstar虚拟按键触摸屏驱动(芯片msg2133,按键使用android虚拟按键实现,特定报点,识别为按键)

http://blog.csdn.net/duanlove/article/details/8098418

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值