⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 touch.h

📁 realtek562x系列驱动源码。wince
💻 H
字号:
/*

Module Name:  tchpdd.h

Abstract:  
 This has the header file definitions for the touch driver.

Notes:
 Created: July 22, 1997

--*/
#ifndef __TOUCH_H__
#define __TOUCH_H__


//
// Digitizer related definitions.
//

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | DELTA_X_COORD_VARIANCE |
// Maximum allowed variance in the X coordinate samples.
//

#define DELTA_X_COORD_VARIANCE						0x20
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | DELTA_Y_COORD_VARIANCE |
// Maximum allowed variance in the X coordinate samples.
//

#define DELTA_Y_COORD_VARIANCE						0x20
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MIN_X_DIGITIZER_COORD |
// Minimum X coordinate.
//

#define MIN_X_DIGITIZER_COORD						0

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_X_DIGITIZER_COORD |
// Maximum X coordinate.
//

#define MAX_X_DIGITIZER_COORD						(1<<10)

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MIN_Y_DIGITIZER_COORD |
// Minimum Y coordinate.
//

#define MIN_Y_DIGITIZER_COORD						0

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_Y_DIGITIZER_COORD |
// Maximum Y coordinate.
//

#define MAX_Y_DIGITIZER_COORD						(1<<10)

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | MAX_NOISE_COUNT |
// Maximum noise count.
//

#define MAX_NOISE_COUNT								4

#if POLLING_MODE
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCHPANEL_SAMPLE_RATE_LOW |
// Low sampling rate.
//
	

#define TOUCHPANEL_SAMPLE_RATE_LOW					100

	
//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCHPANEL_SAMPLE_RATE_HIGH |
// High sampling rate.
//

#define TOUCHPANEL_SAMPLE_RATE_HIGH					100


#else

#define TOUCHPANEL_SAMPLE_RATE_LOW					200
#define TOUCHPANEL_SAMPLE_RATE_HIGH					200

#endif

//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @const ULONG | TOUCH_NUM_REJECT |
// Number of initial samples to reject.
//

#define TOUCH_NUM_REJECT							1

//
// TOUCH_TIMER_INCREMENT is the constant that decides the sampling rate of the touch controller's
// ADC. The formulae used to get the number below is :-
//							 (3.6864 * 10^6)
//	TOUCH_TIMER_INCREMENT =	 --------------- 
//							   Sample Rate
// For Example if the Sample Rate decided is 150 samples per second then the 
// TOUCH_TIMER_INCREMENT should be 0x6000
#if POLLING_MODE	

#define TOUCH_TIMER_INCREMENT						0x9000

#else	

#define TOUCH_TIMER_INCREMENT						0x4800

#endif


		
#define RT_ADC_X					0x0001
#define RT_ADC_Y					0x0002

#define RT_MIC_ROUTING_CTRL				0X10			//MIC ROUTING CONTROL
#define	RT_PWR_MANAG_ADD1				0X3A			//POWER MANAGMENT ADDITION 1
#define RT_PWR_MANAG_ADD2				0X3C			//POWER MANAGMENT ADDITION 2
#define RT_GPIO_PIN_CONFIG				0X4C			//GPIO PIN CONFIGURATION
#define RT_GPIO_PIN_POLARITY			0X4E			//GPIO PIN POLARITY/TYPE	
#define RT_GPIO_PIN_STICKY				0X50			//GPIO PIN STICKY	
#define RT_GPIO_PIN_WAKEUP				0X52			//GPIO PIN WAKE UP
#define RT_GPIO_PIN_STATUS				0X54			//GPIO PIN STATUS
#define RT_GPIO_PIN_SHARING				0X56			//GPIO PIN SHARING
#define	RT_OVER_TEMP_CURR_STATUS		0X58			//OVER TEMPERATURE AND CURRENT STATUS
#define RT_GPIO_OUT_CTRL				0X5C			//GPIO OUTPUT PIN CONTRL
#define RT_INT_CTRL						0X5E			//INTERRUPT CONTROL
#define RT_TP_CTRL_BYTE1				0X74			//TOUCH PANEL CONTROL BYTE 1
#define RT_TP_CTRL_BYTE2				0X76			//TOUCH PANEL CONTROL BYTE 2
#define RT_TP_INDICATION				0X78			//TOUCH PANEL INDICATION
#define RT_VENDOR_ID1	  		    	0x7C			//VENDOR ID1,DEFAULT 414C
#define RT_VENDOR_ID2	  		    	0x7E			//VENDOR ID2,ALC6510=4306

//Define bit of GPIO function
#define	RT_GPIO_BIT0				0x0001				
#define	RT_GPIO_BIT1				0x0002				//GPIO 1 Control/Status	
#define	RT_GPIO_BIT2				0x0004				//GPIO 2 Control/Status	
#define	RT_GPIO_BIT3				0x0008				//GPIO 3 Control/Status	
#define	RT_GPIO_BIT4				0x0010				//GPIO 4 Control/Status	
#define	RT_GPIO_BIT5				0x0020				//GPIO 5 Control/Status
#define	RT_GPIO_BIT6				0x0040				
#define	RT_GPIO_BIT7				0x0080
#define	RT_GPIO_BIT8				0x0100
#define	RT_GPIO_BIT9				0x0200				//MICBIAS2 Control/Status
#define	RT_GPIO_BIT10				0x0400				//MICBIAS1 Control/Status
#define	RT_GPIO_BIT11				0x0800				//Over temperature Control/Status
#define	RT_GPIO_BIT12				0x1000				
#define	RT_GPIO_BIT13				0x2000				//Pen down detect Control/Status
#define	RT_GPIO_BIT14				0x4000
#define	RT_GPIO_BIT15				0x8000

//MIC Routing Control(0x10)
#define MIC1_DIFF_INPUT_CTRL		(01<<12)

//Power managment addition 1 (0x3A),0:Disable,1:Enable
#define PWR_MIC_BIAS2				(0x1<<2)
#define PWR_MAIN_BIAS				(0x1<<1)
	

//Power managment addition 2(0x3C),0:Disable,1:Enable
#define PWR_MIXER_VREF				(0x1<<13)
#define PWR_TP_ADC					(0x1<<11)
//Pin Sharing(0x56)
#define GPIO2_PIN_SHARING_MASK		(0x03<<2)	//GPIO2 Pin sharing mask
#define GPIO2_PIN_SHARING_IRQ		(0x00<<2)	//IRQ out
#define GPIO2_PIN_SHARING_GPIO		(0x01<<2)	//GPIO enable	
#define GPIO2_PIN_SHARING_IR		(0x10<<2)	//IR out	

//MISC Control(0x5E)
#define GPIO_WAKEUP_CTRL			0x0002		//Enable GPIO wakeup Control
#define IRQOUT_INVERT_CTRL			0x0001		//IRQOUT inverter control

//Touch Panel Control Byte 1(0x74)
#define POW_TP_CTRL_MASK			(0x3<<14)
#define POW_TP_CTRL_0				(0x0<<14)	//All off
#define POW_TP_CTRL_1				(0x1<<14)	//Aux_ADC off,pen down detect with wake_up,Aux_ADC on with pen down
#define POW_TP_CTRL_2				(0x2<<14)	//Aux_ADC off,pen down detect on without wake up 
#define POW_TP_CTRL_3				(0x3<<14)	//AUX_ADC on,pen down detect on

#define CB1_PRES_CURR_MASK			(0x000f<<10)//Presusure measurement source current
#define CB1_PRES_CURR_OFF			(0x0000<<10)//OFF	
#define CB1_PRES_CURR_25UA			(0x0001<<10)//25uA
#define CB1_PRES_CURR_50UA			(0x0002<<10)//50uA
#define CB1_PRES_CURR_375UA			(0x000f<<10)//375uA


#define CB1_PDPOL					(0x0001<<9)	//Pendown polarity 0:non-inverted 1:inverted

#define	CB1_DEL_MASK				(0x0003<<7)		//touch panel measure delay mask
#define	CB1_DEL_4F					(0x0000<<7)		//delay 4 frames
#define	CB1_DEL_8F					(0x0001<<7)		//delay 8 frames	
#define	CB1_DEL_16F					(0x0002<<7)		//delay 16 frames
#define	CB1_DEL_32F					(0x0003<<7)		//delay 32 frames

#define CB1_SLOT_READBACK			(0x0040)		//Enable slot realback enable when polling mode

#define CB1_SLOT_SEL				(0x0020)		//AC97 SLOT select 0:Slot5 1:Slot6

#define CB1_CLK_DIV_MASK			(0x0007<<2)		//AUX_ADC Clock Divider MASK
#define CB1_CLK_DIV16				(0x0000<<2)		//AUX_ADC Clock divide 	16
#define CB1_CLK_DIV32				(0x0001<<2)		//AUX_ADC Clock divide	32
#define CB1_CLK_DIV48				(0x0002<<2)		//AUX_ADC Clock divide	48
#define CB1_CLK_DIV64				(0x0003<<2)		//AUX_ADC Clock divide	64
#define CB1_CLK_DIV80				(0x0004<<2)		//AUX_ADC Clock divide	80
#define CB1_CLK_DIV96				(0x0005<<2)		//AUX_ADC Clock divide	96
#define CB1_CLK_DIV112				(0x0006<<2)		//AUX_ADC Clock divide 	112
#define CB1_CLK_DIV128				(0x0007<<2)		//AUX_ADC Clock divide 	128

#define CB1_CR_MASK					(0x0003<<0)		//Conversion rate Mask
#define CB1_CR0						(0x0000<<0)		//	 93.75Hz,512 frame
#define CB1_CR1						(0x0001<<0)		//	124.67Hz,384 frame
#define CB1_CR2						(0x0002<<0)		//	187.5 Hz,256 frame
#define CB1_CR3						(0x0003<<0)		//	374.0 Hz,128 frame


//Touch Panel Control Byte 2(0x76)

#define CB2_POLL_TRIG				(0x0001<<15)		//write 1 initiaties a measurement in polling mode.

#define CB2_MODE_SEL				(0x0001<<14)		//0:Polling mode  1:Continuous mode

#define CB2_PPR_MASK				(0x003f<<8)		//internal Pull-up resistor for pen-down detection MASK
#define CB2_PPR_1					(0x0000<<8)		//1k 	Ohm
#define CB2_PPR_2					(0x0001<<8)		//2k 	Ohm
#define CB2_PPR_3					(0x0002<<8)		//3k 	Ohm
#define CB2_PPR_64					(0x003f<<8)		//64k	Ohm


#define CB2_AUX_EN					(0x0001<<7)			//AUX measument enable/disable
	
#define	CB2_PRESSURE_EN				(0x0001<<3)			//Presure measurement enable/disable
#define	CB2_Y_EN					(0x0001<<2)			//Y measurement enable/disable
#define	CB2_X_EN					(0x0001<<1)			//X measurement enable/disable
#define CB2_AUX_SEL					(0x0001)			//AUX3/AUX4 measure selection
#define CB2_AUX_SEL_AUX3			(0x0000)			//AUX3
#define CB2_AUX_SEL_AUX4			(0x0001)			//AUX4	


//Touch Panel Indication(0x78)

#define CB3_PD_STATUS				(0x0001<<15)		//pendown status after reading 

#define CB3_ADCSRC_MASK				(0x0007<<12)
#define CB3_ADCSRC_NON				(0x0000)			//No Data
#define CB3_ADCSRC_X				(0x1000)			//X co-ordinate measurement
#define CB3_ADCSRC_Y				(0x2000)			//Y co-ordinate measurement
#define CB3_ADCSRC_PRE				(0x3000)			//Pressure measurement
#define CB3_ADCSRC_AUX				(0x7000)			//AUX	measurement

#define CB3_ADC_DATA				(0x0FFF)			//AUX_ADC Data Report

// There are two expected stylus interrupt states: sylus down (the stylus is currently up) and
// stylus up or a timer event (the stylus is down and will either be lifted or the timer will
// fire and gwes will capture the point for drawing).
//
typedef enum
{
    PEN_DOWN,
    PEN_UP_OR_TIMER
} EXPECTED_INT_EVENT;


#define MAX_ADC_VAL							0xFFF
#define NUMBER_SAMPLES_PER_POINT			3

#define MAX_CONVERSIONS 					10

//
// Status field valid values
//
#define TOUCH_PEN_DOWN						0
#define TOUCH_PEN_UP						1
#define TOUCH_TIMER							2
#define TOUCH_PEN_SAMPLE					2


typedef struct 
{
    USHORT XSample;     //@field X Coordinate.
    USHORT YSample;     //@field Y Coordinate.

} TOUCHPANEL_POINT_SAMPLE, *PTOUCHPANEL_POINT_SAMPLE;


//
// @doc INTERNAL DRIVERS PDD TOUCH_PANEL
// @type TOUCHPANEL_POINT_SAMPLES |
// Array of NUMBER_SAMPLES_PER_POINT samples.
// 

typedef TOUCHPANEL_POINT_SAMPLE TOUCHPANEL_POINT_SAMPLES[NUMBER_SAMPLES_PER_POINT];


#endif  // __TOUCH_H__.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -