电容屏为什么也有ADC值范围?
来源:互联网 发布:2006科比季后赛数据 编辑:程序博客网 时间:2024/04/28 00:10
使用电容屏确实没有校准的过程,但是下面的代码在最初设计的时候是有意义的:
ctp_event->points[i].x = (kal_uint16)(TPCali.x_slope*ctp_event->points[i].x+TPCali.x_offset);
ctp_event->points[i].y = (kal_uint16)(TPCali.y_slope*ctp_event->points[i].y+TPCali.y_offset);
因为,当初在设计电容屏架构的时候,我们没有办法保证所有的电容屏IC回报的都是标准的坐标值(有一些电容屏的IC回报的就是一个0~1023的量化值)。所以上述代码的初衷是为了将电容屏IC回报的数值转换为标准的坐标,以便能够兼容绝大多数电容屏。
由于没有校准过程,所以TPCali.x_slope和TPCali.y_slope,TPCali.x_offset和TPCali.y_offset这四个变量值是在touch_panel_init函数最后touch_panel_tunning计算出来的:
TP_SCREEN_X_START =tp_data->x_coord_start = TOUCH_PANEL_COORD_X_START
TP_SCREEN_X_END =tp_data->x_coord_end= TOUCH_PANEL_COORD_X_END
TP_ADC_X_START =tp_data->x_adc_start = TOUCH_PANEL_ ADC _X_START
TP_ ADC _X_END =tp_data->x_adc_end= TOUCH_PANEL_ ADC _X_END
TP_SCREEN_Y_START =tp_data->y_coord_start = TOUCH_PANEL_COORD_ Y _START
TP_SCREEN_ Y _END =tp_data-> y_coord_end= TOUCH_PANEL_COORD_ Y _END
TP_ADC_ Y _START =tp_data-> y_adc_start = TOUCH_PANEL_ ADC _ Y _START
TP_ ADC _ Y _END =tp_data-> y_adc_end= TOUCH_PANEL_ ADC _ Y _END
1. 在touch_panel_custom.h档中有如下8个宏define:
TOUCH_PANEL_ADC_X_START
TOUCH_PANEL_ADC_X_END
TOUCH_PANEL_ADC_Y_START
TOUCH_PANEL_ADC_Y_END
TOUCH_PANEL_COORD_X_START
TOUCH_PANEL_COORD_X_END
TOUCH_PANEL_COORD_Y_START
TOUCH_PANEL_COORD_Y_END
如果CTP IC回报的就已经是标准的坐标值的话,只要将上面2组宏define中,一一对应相同即可。
例如:如果LCM的大小是240*320的话:
TOUCH_PANEL_ADC_X_START 0
TOUCH_PANEL_ADC_X_END 239
TOUCH_PANEL_ADC_Y_START 0
TOUCH_PANEL_ADC_Y_END 319
TOUCH_PANEL_COORD_X_START 0
TOUCH_PANEL_COORD_X_END 239
TOUCH_PANEL_COORD_Y_START 0
TOUCH_PANEL_COORD_Y_END 319
ctp_event->points[i].x = (kal_uint16)(TPCali.x_slope*ctp_event->points[i].x+TPCali.x_offset);
ctp_event->points[i].y = (kal_uint16)(TPCali.y_slope*ctp_event->points[i].y+TPCali.y_offset);
因为,当初在设计电容屏架构的时候,我们没有办法保证所有的电容屏IC回报的都是标准的坐标值(有一些电容屏的IC回报的就是一个0~1023的量化值)。所以上述代码的初衷是为了将电容屏IC回报的数值转换为标准的坐标,以便能够兼容绝大多数电容屏。
由于没有校准过程,所以TPCali.x_slope和TPCali.y_slope,TPCali.x_offset和TPCali.y_offset这四个变量值是在touch_panel_init函数最后touch_panel_tunning计算出来的:
TP_SCREEN_X_START =tp_data->x_coord_start = TOUCH_PANEL_COORD_X_START
TP_SCREEN_X_END =tp_data->x_coord_end= TOUCH_PANEL_COORD_X_END
TP_ADC_X_START =tp_data->x_adc_start = TOUCH_PANEL_ ADC _X_START
TP_ ADC _X_END =tp_data->x_adc_end= TOUCH_PANEL_ ADC _X_END
TP_SCREEN_Y_START =tp_data->y_coord_start = TOUCH_PANEL_COORD_ Y _START
TP_SCREEN_ Y _END =tp_data-> y_coord_end= TOUCH_PANEL_COORD_ Y _END
TP_ADC_ Y _START =tp_data-> y_adc_start = TOUCH_PANEL_ ADC _ Y _START
TP_ ADC _ Y _END =tp_data-> y_adc_end= TOUCH_PANEL_ ADC _ Y _END
1. 在touch_panel_custom.h档中有如下8个宏define:
TOUCH_PANEL_ADC_X_START
TOUCH_PANEL_ADC_X_END
TOUCH_PANEL_ADC_Y_START
TOUCH_PANEL_ADC_Y_END
TOUCH_PANEL_COORD_X_START
TOUCH_PANEL_COORD_X_END
TOUCH_PANEL_COORD_Y_START
TOUCH_PANEL_COORD_Y_END
如果CTP IC回报的就已经是标准的坐标值的话,只要将上面2组宏define中,一一对应相同即可。
例如:如果LCM的大小是240*320的话:
TOUCH_PANEL_ADC_X_START 0
TOUCH_PANEL_ADC_X_END 239
TOUCH_PANEL_ADC_Y_START 0
TOUCH_PANEL_ADC_Y_END 319
TOUCH_PANEL_COORD_X_START 0
TOUCH_PANEL_COORD_X_END 239
TOUCH_PANEL_COORD_Y_START 0
TOUCH_PANEL_COORD_Y_END 319
- 电容屏为什么也有ADC值范围?
- 为什么8位有符号数的取值范围是-128~+127
- ADC动态范围的计算
- 为什么晶振处加俩电容?
- 电容屏:为什么带手套无法进行操作手机?
- 旁路电容,耦合电容,储值电容
- 手机中电容屏和电阻屏有什么区别?
- 表达式也有逻辑值
- 芯片IC附近为什么都放0.1uF的电容?这样做正确吗?有什么依据吗?
- 芯片IC附近为什么都放0.1uF的电容?这样做正确吗?有什么依据吗?
- X2电容有什么作用
- 浅谈为什么大电容滤低频小电容滤高频
- 为什么小电容通高频,大电容通低频
- 晶振为什么要加电容 需要配多大电容
- 为什么整数范围是0 - 2^32 - 1,一共有4G种取值
- 为什么8位有符号数的范围为“-128 — +127”?
- 为什么8位有符号数的范围为“-128 — +127”?(转载加补充)
- 为什么8位有符号数的范围为“-128 — +127”?(转载加补充)
- Linux与Windows双系统时间不一致的问题
- jquery控制下拉框
- C程序设计笔记——第一章 程序设计和C语言
- 手写出现飞笔,软件和硬件上可尝试修改的方案
- 课堂小练习:秘密
- 电容屏为什么也有ADC值范围?
- dojo1.7及以后版本插件说明和自定义插件
- 如何添加一个Email账户模板
- LAMP 系统性能调优(优化 Apache 和 PHP)
- C中一个面试题:指针常量和常量指针的问题
- A Sequence of Numbers HDU
- LAMP 系统性能调优(MySQL 服务器调优)
- 基于Google Reader的个人知识管理方案
- oracle 11g 学习笔记10_29(2)