新闻中心

EEPW首页 > 模拟技术 > 设计应用 > MAX1233/MAX1234触摸屏控制器入门

MAX1233/MAX1234触摸屏控制器入门

作者: 时间:2012-03-17 来源:网络 收藏
1100 /* measure TEMP1,TEMP2 */
ADC_control_RES11 /* 12-bit resolution */
ADC_control_AVG00 /* no averaging */
ADC_control_CNR00 /* conversion rate 3.5µs */
ADC_control_RFV /* RFV=1: VREF=2.5V */
0x0040 0x3301
T R T1
Read TEMP1 result TEMP1 _code
0x8009 0x0000
T R T2
Read TEMP2 result TEMP2 _code
0x800a 0x0000

2.8) 将TEMP1转换结果译为物理值

下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释TEMP1转换结果的。
    /* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution *//* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V.  RFV=0: VREF=1.0V. *//* TEMP1_code is the 16-bit result read by SPI command 0x8009 */double TEMP1_Voltage = (TEMP1_code * ADC_fullscale_voltage) / num_codes;/* Calibration values */const double Temp1V_Room = 0.590; // temp1 voltage at room temperature 25Cconst double Temp1K_Room = 298.15;  // Room temperature Kelvins (298.15K=25C)const double Temp1V_Per_K = -0.002; // TempCo -2mV per degree C/* Convert to absolute temperature */double Kelvin = (TEMP1_Voltage - Temp1V_Room) / Temp1V_Per_K + Temp1K_Room;/* Optional conversion to commonly used temperature units */double Centigrade = Kelvin - 273.15;double Fahrenheit = (Centigrade * 9.0 / 5.0) + 32;

2.9) 将TEMP1和TEMP2转换结果译为物理值

下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释TEMP1和TEMP2转换结果的。TEMP2只在和TEMP1对比时才有意义。
    /* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution *//* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V.  RFV=0: VREF=1.0V. *//* TEMP1_code is the 16-bit result read by SPI command 0x8009 */double TEMP1_Voltage = (TEMP1_code * ADC_fullscale_voltage) / num_codes;/* TEMP2_code is the 16-bit result read by SPI command 0x800a */double TEMP2_Voltage = (TEMP2_code * ADC_fullscale_voltage) / num_codes;/* Calibration values */const double K_Per_Temp21_Delta_V = 2680.0; // nominal 2680 5/27/2002/* Convert to absolute temperature */double Kelvin = (TEMP2_Voltage - TEMP1_Voltage) * K_Per_Temp21_Delta_V;/* Optional conversion to commonly used temperature units */double Centigrade = Kelvin - 273.15;double Fahrenheit = (Centigrade * 9.0 / 5.0) + 32;

2.10) 测量外部电压输入AUX1、AUX2、BAT1、BAT2和温度

表9. ADC测量命令序列
DEMO1234 Command
Action (Triggered by A/D3210 Bits)
SPI data in
T MB
Measure BAT1/4, BAT2/4, AUX1, AUX2, TEMP1, TEMP2 with 12-bit resolution and 3.5µs conversion rate
0x0040 0x2f01

0x8005 0x0000

0x8006 0x0000

0x8007 0x0000

0x8008 0x0000

0x8009 0x0000

0x800a 0x0000
T W AC 2f01
Trigger ADC scan of BAT1-2, AUX1-2, TEMP1-2;
ADC control word 0x2f01 means:
ADC_control_wr_demand_scan
ADC_control_ AD1011 /* measure AUX1 etc. */
ADC_control_RES11 /* 12-bit resolution */
ADC_control_AVG00 /* no averaging */
ADC_control_CNR00 /* conversion rate 3.5µs */
ADC_control_RFV /* RFV=1: VREF=2.5V */
0x0040 0x2f01
T R B1
Read BAT1 result BAT1 _code
0x8005 0x0000
T R B2
Read BAT2 result BAT2_code
0x8006 0x0000
T R A1
Read AUX1 result AUX1 _code
0x8007 0x0000
T R A2
Read AUX2 result AUX2 _code
0x8008 0x0000
T R T1
Read TEMP1 result TEMP1 _code
0x8009 0x0000
T R T2
Read TEMP2 result TEMP2 _code
0x800a 0x0000

3) 实例

下面的例子解释了怎样使用DEMO1234.EXE程序来获得数据。

3.1) 低成本商用

在互联网上搜索"PDA Digitizer/Glasstop",寻找合适的替代触摸屏。高清触摸屏玻璃的价格范围在50美元至10美元之间,价格取决于型号以及玻璃是否全部贴在显示屏上。

3.2) 连接触摸屏和评估板

评估板提供突出插头H5/H6来连接10mm柔性电缆或者长度更短的电缆。H6连接器的间距是0.5mm,比实际触摸屏柔性电缆间距更精细。把柔性电缆插入H6,上锁,选择位于四条柔性电缆中每一电缆中心位置的H5引脚。跳接器连接H5和标有U1的X+、Y+、X-以及Y-测试点。

3.3) 检验触摸屏的连接

第一次连接触摸屏时,通过下面的步骤来验证X和Y连接是否正确。可以有几个触摸屏交叉连接,但大部分不会正常工作。在这些例子中,我们假设X- = left,X+ = right,Y- = top,Y+ = bottom。

表10. 触摸屏物理连接验证命令序列
DEMO1234 Command
Action
SPI data in
Verification
Connect DVM to X+/GND
T MD
No measurement; drive Y+,Y-
0x0040 0x3701
Touch top leftX+ = approx. Y-
Touch top rightX+ = approx. Y-
Touch bottom leftX+ = approx. Y+
Touch bottom rightX+ = approx. Y+
Connect DVM to Y+/GND
T ME
No measurement; drive X+,X-
0x0040 0x3b01
Touch top leftY+ = approx. X-
Touch top rightY+ = approx. X+
Touch bottom leftY+ = approx. X-
Touch bottom rightY+ = approx. X+

表11. 纠正触摸屏连接问题
SymptomCorrection
Touch coordinates are mirrored top-to-bottomSwap the Y+ and Y- connections
Touch coordinates are mirrored left-to-rightSwap the X+ and X- connections
Touch coordinates are rotated 180 degreesSwap the X+ and X- connections, and swap the Y+ and Y- connections
Touch coordinates are mirrored diagonallySwap the X+ and Y+ connections, and swap the X- and Y- connections
Touch coordinates do not seem to track, and the distortion is not a simple flip/rotate/mirror transformationSwap the X+ and Y+ connections;
if distortion persists, swap the X+ and Y- connections;
if distortion still persists, disconnect touch screen and use DVM to verify X+ to X- resistance and Y+ to Y- resistance;
verify with no touch X+ and X- are isolated from Y+ and Y-

3.4) 检测触摸屏的操作:根据需要扫描

在配置检测触摸屏操作,根据需要数字化接触屏的位置时,写入寄存器0x40 (ADC控制),其PENSTS=0,ADSTS=0 (请参考/数据资料的表6)。读取寄存器0x00 (X轴)后,检测到后续的触摸屏操作时,/PENIRQ信号锁存至低电平,在写入ADC控制寄存器测量X、Y轴之前,保持低电平。

表12. 触摸屏检测命令序列:根据需要扫描
DEMO1234 Command
Action
SPI data in
Verification
T W AC 0b01
Demand scan
0x0040 0x0b01
T R AX
Read conversion result register X
0x8000 0x0000
P R 
				
            
                
			
							

评论


相关推荐

技术专区