芯方式

电容屏为什么也有ADC值范围?

0
阅读(892)

使用电容屏确实没有校准的过程,但是下面的代码在最初设计的时候是意义的:
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


来自半导体社区