在TCC89x使用AK4183触摸屏驱动

//=====================================================================
//TITLE:
//    在TCC89x使用AK4183触摸屏驱动
//AUTHOR:
//    norains
//DATE:
//    Monday  18October-2010
//Environment:
//    TCC8900
//    Windows CE 6.0
//=====================================================================

 

    Telechips从TCC79x进化到TCC89x后,触摸屏驱动有了很大的改变,最明显的是可以直接使用GPIO来检测触摸屏触摸了。不过,可能是为了向后兼容,之前的TSC2003和AK4183也是可以用,不过却要进行一些设置。

 

     DRIVERS文件夹有两个触摸屏的驱动,分别是Touch1和Touch2,后者是新的GPIO方式,而前者则是老旧的,适用于TSC2003和AK4183。现在就跟我一起来,让AK4183也能在TCC89x平台上重焕光彩吧!

 


1. ./Src/DRIVERS/dirs

 

    该文件定义的是编译的驱动的文件夹。这里我们需要将Touch2改为Touch1。

 


2. ./Src/DRIVERS/Touch1/sources

 

    该文件定义了需要进行编译的源文件,不知道为什么,默认没有将tca_ak4183tchctl.c给包含进去,所以我们必须手动添加,如:

 

SOURCES= /
    tchmain.cpp /
    tchbasic.cpp /
    TouchPanel.cpp /
    tcc_touch.c /
    tca_tchcontrol.c /
    tca_tchhwctl.c /
    tca_tsc2003tchctl.c /
    tca_ak4183tchctl.c /

 


3. ./Src/DRIVERS/Touch1/tca_tchhwctl.h

 

    该文件主要是用来定义宏,以此来确定是使用TSC2003还是AK4183。因为我们这里使用的是AK4183,所以为了简单起见,我们直接在开头定义一个CONFIG_TOUCHSCREEN_TCC_AK4183宏,如:

 


4. ./Src/DRIVERS/Touch1/tcc_touch.c

 

    这个文件主要是控制触摸屏的行为,不过原代码却有个bug。在tea_tch_readi2c函数中,居然调用tca_tsc2003_setreadcmd来获取AK4183的命令。这样的直接结果是,因为命令不匹配,所以AK4183的中断会一直没有恢复到HIGH,以致TCC89x一直在读取触摸屏数据。为了修正这个BUG,我们根据宏来做相应的处理,如:

 

    其实只是在原来的代码tca_tsc2003_setreadcmd前面增加宏判断以确认是调用哪个函数而已。

 


5. ./Src/DRIVERS/Touch1/TouchPanel.cpp

 

    因为AK4183默认是接在I2C0上的,而代码中的通道是通过注册表获取的,但注册表指示的却是通道1,这个通道只能和TSC2003相匹配,却无法用到AK4183中,所以我们强制将通道设为0,如:

 


     当一切设置完毕,重新编译触摸屏驱动,则它会生成一个touch.dll文件,而这个无论是用GPIO方式,还是芯片模式,都是一样的。编译完毕,就可以下载到开发板去试试了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值