Wince BSP从5.0移植到6.0(三)
2010-03-15 15:52
218 查看
转载请注明出处
作者:小马
第三部分是关于触摸屏驱动的移植
1
在platform.bib里把原来注释掉的下面两行置为有效.
这两个就是触摸屏驱动的动态库文件.
2
到platform.reg下找到[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]项,改为如下
这个是校准值. 如果你重新做了校准,新的值会保存在这个数据里.
这组数字并不是像素值, 而是AD采样值,因为这块板子所配的触摸屏是基于电阻式的,
利用四线产生屏幕偏置电压, 然后AD采样,电压值转化为坐标值.
3
到驱动目录下找到s3c2410x_touch.cpp文件.
在这个文件下,对于触摸屏驱动,主要就是有两个地方需要修改, 一个是采样频率的修改,
还有就是获取触点位置方法的修改. 这两处都是硬件相关的,所以必须移植.
比如原来的BSP是用定时器1控制采样频率,
而6.0的BSP用的是timer3,而且采样频率也是不一样的.
3.1 采样频率相关
找到下面这个全局变量
PRIVATE INT
TSP_CurRate= TSP_SAMPLE_RATE_HIGH;
改为
找到#define
TIMER3_DIVIDER 2
改为
找到TSP_PowerOn函数,改为实现如下:
3. 2 获取触点位置相关.
找到下面几个宏定义:
改为如下的值:
上面几个是边界点,影响不是很大,
不过我还是按照原BSP的值做了修改.
TSP_TransXY和TSP_GetXY这两个函数是重点.
这两个函数决定了当你按下触摸屏时,系统获取的位置. 这两个函数如果没有写好,会出现类似你点了左边,右边有反应,或者你点了左上角,右下角有反应.
这两个函数的实现也和屏幕的分辨率有关.
TSP_TransXY的实现如下:
其中,
TSP_LCDX= (LCD_YSIZE_TFT * 4);//240*4
TSP_LCDY= (LCD_XSIZE_TFT * 4);//320*4
在TSP_GetXY函数里找到下面两行:
改为:
到这里,触摸屏驱动部分基本移植成功,
目前还有个小问题. 左键双击不起作用,
单击没问题.
正常情况下,长按才是右击, 我的短按也会弹出快捷菜单. Csdn上问了,未果.
作者:小马
第三部分是关于触摸屏驱动的移植
1
在platform.bib里把原来注释掉的下面两行置为有效.
k.touch.dll $(_FLATRELEASEDIR)/DeviceEmulator_touch.dll NK SHK touch.dll $(_FLATRELEASEDIR)/DeviceEmulator_touch.dll NK SH
这两个就是触摸屏驱动的动态库文件.
2
到platform.reg下找到[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]项,改为如下
"CalibrationData"="499,69971,175 67,1243 899,1219 899,167 "
这个是校准值. 如果你重新做了校准,新的值会保存在这个数据里.
这组数字并不是像素值, 而是AD采样值,因为这块板子所配的触摸屏是基于电阻式的,
利用四线产生屏幕偏置电压, 然后AD采样,电压值转化为坐标值.
3
到驱动目录下找到s3c2410x_touch.cpp文件.
在这个文件下,对于触摸屏驱动,主要就是有两个地方需要修改, 一个是采样频率的修改,
还有就是获取触点位置方法的修改. 这两处都是硬件相关的,所以必须移植.
比如原来的BSP是用定时器1控制采样频率,
而6.0的BSP用的是timer3,而且采样频率也是不一样的.
3.1 采样频率相关
#define ADCPRS 200//改为: #define ADCPRS 21
找到下面这个全局变量
PRIVATE INT
TSP_CurRate= TSP_SAMPLE_RATE_HIGH;
改为
PRIVATE INT TSP_CurRate= 0;
找到#define
TIMER3_DIVIDER 2
改为
#define TIMER3_DIVIDER 4
找到TSP_PowerOn函数,改为实现如下:
PRIVATE VOID TSP_PowerOn(VOID) { RETAILMSG(1,(TEXT("::: TSP_PowerOn()/r/n"))); /* Use TSXM, TSXP, TSYM, TSYP Clear GPG15, 14, 13, 12 */ v_pIOPregs->GPGCON&= ~((0x03 << 30)|(0x03 << 28)|(0x03 << 26)|(0x03<< 24)); v_pIOPregs->GPGCON |= ((0x3 << 30) | (0x3 << 28) | (0x3 << 26) | (0x3<< 24)); v_pIOPregs->GPGUP|= ((0x01 << 15)|(0x01 << 14)|(0x01 << 13)|(0x01<<12)); v_pADCregs->ADCDLY = 30000; v_pADCregs->ADCCON = (1<<14)|(ADCPRS<<6)|(7<<3); v_pADCregs->ADCTSC = (0 << 8) | (1 << 7) | (1 << 6) | (0 << 5) | (1 << 4) | (0 << 3) | (0 << 2) | (3 << 0); v_pINTregs->INTSUBMSK &= ~(1<<IRQ_SUB_TC); v_pPWMregs->TCFG1 &= ~(0xf << 12); /* Timer3's Divider Value*/ v_pPWMregs->TCFG1 |= (1 << 12); /* 1/4 */ v_pPWMregs->TCNTB3 =(10 * (g_s3c2410_pclk / (24+1) / TIMER3_DIVIDER )) / 1000; /* InterruptFrequency*/ v_pPWMregs->TCMPB3= 0; }
3. 2 获取触点位置相关.
找到下面几个宏定义:
#define TSP_MINX 85 #define TSP_MINY 105 #define TSP_MAXX 965 #define TSP_MAXY 980
改为如下的值:
#define TSP_MINX 88 #define TSP_MINY 84 #define TSP_MAXX 952 #define TSP_MAXY 996
上面几个是边界点,影响不是很大,
不过我还是按照原BSP的值做了修改.
TSP_TransXY和TSP_GetXY这两个函数是重点.
这两个函数决定了当你按下触摸屏时,系统获取的位置. 这两个函数如果没有写好,会出现类似你点了左边,右边有反应,或者你点了左上角,右下角有反应.
这两个函数的实现也和屏幕的分辨率有关.
TSP_TransXY的实现如下:
PRIVATE void TSP_TransXY(INT *px, INT *py) { *px = (*px >= TSP_MAXX) ? (TSP_MAXX) : *px; *py = (*py >= TSP_MAXY) ? (TSP_MAXY) : *py; *px = (*px - TSP_MINX); *py = (*py - TSP_MINY); *px = (*px >= 0) ? *px : 0; *py = (*py >= 0) ? *py : 0; *px = *px * TSP_LCDY / (TSP_MAXX - TSP_MINX); *py = *py * TSP_LCDX / (TSP_MAXY - TSP_MINY); *px = (*px >= TSP_LCDY)? (TSP_LCDY - 1) : *px; *py = (*py >= TSP_LCDX)? (TSP_LCDX - 1) : *py; *px = TSP_LCDY - *px - 1; *py = TSP_LCDX - *py - 1; }
其中,
TSP_LCDX= (LCD_YSIZE_TFT * 4);//240*4
TSP_LCDY= (LCD_XSIZE_TFT * 4);//320*4
在TSP_GetXY函数里找到下面两行:
x= (0x3ff & v_pADCregs->ADCDAT1); y= 0x3ff - (0x3ff & v_pADCregs->ADCDAT0);
改为:
y= (0x3ff & v_pADCregs->ADCDAT1); x= (0x3ff & v_pADCregs->ADCDAT0);
到这里,触摸屏驱动部分基本移植成功,
目前还有个小问题. 左键双击不起作用,
单击没问题.
正常情况下,长按才是右击, 我的短按也会弹出快捷菜单. Csdn上问了,未果.
相关文章推荐
- KITL从5.0到6.0的移植
- Wince BSP从5.0移植到6.0(三)
- 关于2440从5.0到6.0的移植之OAL篇
- 关于2440从5.0到6.0的移植之OAL篇
- 关于2440从5.0到6.0的移植之OAL篇
- 5.0移植到6.0
- IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述
- 【转】正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一..
- 成功把Wince 6.0移植到qemu中运行
- WinCE 5.0移植笔记
- MSSQL2005移植到MYSQL 5.0
- win7安装Oracle错误:要求的结果: 5.0,5.1,5.2,6.0 之一 实际结果: 6.1
- Android 5.0和6.0新增控件简单介绍
- Understanding Memory Sections in config.bib, boot.bib, and OEMAddressTable in Windows CE 5.0 and 6.0
- How to automate PowerPoint by using Visual C++ 5.0 or Visual C++ 6.0 with The Microsoft Foundation Classes
- Wince 5.0 6.0 7 开发环境
- 将你的Visual Basic 6.0移植到Visual Basic.NET
- Microsoft Internet Information Services (IIS) 5.0 和 6.0 状态代码的描述
- wince 6.0 BSP 移植问题
- Eclipse中的Drools和JBPM插件从5.0升级到6.0