IC应用电路图
MAX1233/MAX1234触摸屏控制器入门
摘要:本应用笔记介绍怎样使用MAX1233/MAX1234触摸屏控制器的功能。所提供的简化控制台菜单系统支持对MAX1233/MAX1234器件寄存器的底层直接访问。每一寄存器在32个SPI™时钟周期内完成读写操作。软件对每一寄存器使用简短的助记名。使用MAX1234评估板(EV Kit)和MINIQUSB+命令模块时,软件支持最大底层控制。在随附的zip文件中,提供所有源代码。
MAX1233的工作方式和
MAX1234 Signal | MAX1234 EV Kit | MINIQUSB-X+ | MINIQUSB Signal |
GND | J1-1 | H2-8 | GND |
VCC | J1-7 | H2-1 | 3.3V supply from MINIQUSB+ |
BUSY-Bar | J1-27 | H2-7 | GPIO-K7 (MAXQ2000-INT2) |
PENIRQ-Bar | J1-29 | H1-3 | GPIO-K6 (MAXQ2000-INT1) |
KEYIRQ-Bar | J1-31 | H1-8 | GPIO-K5 (MAXQ2000-INT0) |
DOUT | J1-35* | H2-2 | MISO (SPI master in, slave out) |
DIN | J1-36* | H2-5 | MOSI (SPI master out, slave in) |
SCLK | J1-37* | H2-3 | SCLK (SPI clock) |
CS-Bar | J1-38 | H2-4 | CS-bar (SPI chip select) |
USB+5V | J1-5 | J4-7 | USB+5V supply from PC |
DEMO1234 Command* |
Expected Program Output | SPI data in |
Verification** |
C |
Board connected. Got board banner: Maxim MINIQUSB V01.05.41 > Firmware version is OK. (configured for SPI auto-CS 4-byte mode) (SCLK=2MHz) ... |
||
T W DD FF |
Write_Register(regAddr=0x000b wr_DAC_data , data=0x00ff {(no bits defined for this register)}) result = 1 |
0x000b 0x00ff | DACOUT = full-scale (4.5V) |
T R DD |
Read_Register(regAddr=0x800b wr_DAC_data ) result = 1, buffer = 0x00ff = 255 {(no bits defined for this register)} |
0x800b 0x0000 | Data buffer = 0x00ff |
T W DD 80 |
Write_Register(regAddr=0x000b wr_DAC_data , data=0x0080 {(no bits defined for this register)}) result = 1 |
0x000b 0x0080 | DACOUT = mid-scale (2.2V) |
T R DD |
Read_Register(regAddr=0x800b wr_DAC_data ) result = 1, buffer = 0x0080 = 128 {(no bits defined for this register)} |
0x800b 0x0000 | data buffer = 0x0080 |
DEMO1234 Command |
Action | SPI data in |
MAX1233 (3.3V) | MAX1234 (5.0V) |
T W DD FF |
DACOUT = full-scale | 0x000b 0x00ff |
DACOUT = 2.96V | DACOUT = 4.48V |
T W DD 00 |
DACOUT = 0V | 0x000b 0x0000 |
DACOUT = 0.0V | DACOUT = 0.0V |
T W DD 80 |
DACOUT = mid-scale | 0x000b 0x0080 |
DACOUT = 1.485V | DACOUT = 2.25V |
T W DC 8000 |
Disable DAC | 0x0042 0x8000 |
DACOUT = 0.0V | DACOUT = 0.0V |
T W DC 0 |
Enable DAC | 0x0042 0x0000 |
DACOUT = 1.485V | DACOUT = 2.25V |
DEMO1234 Command |
Action | SPI data in |
Verification |
T W AC 0100 |
Internal 1V reference always powered; write ADC control word with ADC3210 = 0000, RES10 = 01, RFV = 0 |
0x0040 0x0100 |
Voltage at pin 12 REF is between 0.98V and 1.02V |
T W AC 0101 |
Internal 2.5V reference always powered; write ADC control word with ADC3210 = 0000, RES10 = 01, RFV = 1 |
0x0040 0x0101 |
Voltage at pin 12 REF is between 2.47V and 2.53V |
T W AC 0001 |
Internal 2.5V reference powered when needed; write ADC control word with ADC3210 = 0000, RES10 = 00, RFV = 1 |
0x0040 0x0001 |
Voltage at pin 12 REF will be powered only briefly as necessary |
DEMO1234 Command |
Action | SPI data in |
T W AC 0300 |
External reference must be provided; ADC_control_wr_demand_scan:(write)demand scan ADC_control_AD0000:configure reference ADC_control_RES11:external reference |
0x0040 0x0300 |
DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T M8 |
Measure AUX1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2301 0x8007 0x0000 |
T W AC 2301 |
Trigger ADC scan of AUX1; ADC control word 0x2301 means: ADC_control_wr_demand_scan ADC_control_AD1000 /* measure AUX1 */ 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 0x2301 |
T R A1 |
Read AUX1 result AUX1_code | 0x8007 0x0000 |
T M9 |
Measure AUX2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2701 0x8008 0x0000 |
/* 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. */ /* AUX1_code is the 16-bit result read by SPI command 0x8007 */ double AUX1_Voltage = (AUX1_code * ADC_fullscale_voltage) / num_codes; /* AUX2_code is the 16-bit result read by SPI command 0x8008 */ double AUX2_Voltage = (AUX2_code * ADC_fullscale_voltage) / num_codes;
DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T M6 |
Measure BAT1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x1b01 0x8005 0x0000 |
T W AC 1b01 |
Trigger ADC scan of BAT1; ADC control word 0x1b01 means: ADC_control_wr_demand_scan ADC_control_AD0110 /* measure BAT1 */ 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 0x1b01 |
T R B1 |
Read BAT1 result BAT1_code | 0x8005 0x0000 |
T W AC 1b21 |
Trigger ADC scan of BAT1; ADC control word 0x1b21 means: ADC_control_wr_demand_scan ADC_control_AD0110 /* measure BAT1 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR10 /* conversion rate 10µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x1b21 |
T R B1 |
Read BAT1 result BAT1_code | 0x8005 0x0000 |
T M7 |
Measure BAT2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x1f01 0x8006 0x0000 |
/* 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. */ /* Note: BAT1 and BAT2 measure through a 4:1 input divider. */ /* BAT1_code is the 16-bit result read by SPI command 0x8005 */ double BAT1_Voltage = 4 * (BAT1_code * ADC_fullscale_voltage) / num_codes; /* BAT2_code is the 16-bit result read by SPI command 0x8006 */ double BAT2_Voltage = 4 * (BAT2_code * ADC_fullscale_voltage) / num_codes;
DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T MA |
Measure TEMP1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2b01 0x8009 0x0000 |
T W AC 2b01 |
Trigger ADC scan of TEMP1; ADC control word 0x2b01 means: ADC_control_wr_demand_scan ADC_control_ AD1010 /* measure TEMP1 */ 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 0x2b01 |
T R T1 |
Read TEMP1 result TEMP1 _code | 0x8009 0x0000 |
T MC |
Measure TEMP1, TEMP2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x3301 0x8009 0x0000 0x800a 0x0000 |
T W AC 3301 |
Trigger ADC scan of TEMP1 and TEMP2; ADC control word 0x3301 means: ADC_control_wr_demand_scan ADC_control_ AD1100 /* 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 |
/* 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 25C const 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;
/* 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;
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 |
DEMO1234 Command |
Action | SPI data in |
Verification |
Connect DVM to X+/GND | |||
T MD |
No measurement; drive Y+,Y- | 0x0040 0x3701 |
|
Touch top left | X+ = approx. Y- | ||
Touch top right | X+ = approx. Y- | ||
Touch bottom left | X+ = approx. Y+ | ||
Touch bottom right | X+ = approx. Y+ | ||
Connect DVM to Y+/GND | |||
T ME |
No measurement; drive X+,X- | 0x0040 0x3b01 |
|
Touch top left | Y+ = approx. X- | ||
Touch top right | Y+ = approx. X+ | ||
Touch bottom left | Y+ = approx. X- | ||
Touch bottom right | Y+ = approx. X+ |
Symptom | Correction |
Touch coordinates are mirrored top-to-bottom | Swap the Y+ and Y- connections |
Touch coordinates are mirrored left-to-right | Swap the X+ and X- connections |
Touch coordinates are rotated 180 degrees | Swap the X+ and X- connections, and swap the Y+ and Y- connections |
Touch coordinates are mirrored diagonally | Swap 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 transformation | Swap 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- |
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 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 | |
Touch the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 | |
Touch and hold the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
Release the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 |
DEMO1234 Command |
Action | SPI data in |
Verification |
Optional: connect oscilloscope to PENIRQ-bar | |||
I C 1 3 |
Configure PENIRQ-bar pulse accumulator: falling-edge trigger | ||
I 0 1 |
Reset the pulse accumulator | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count = 0 | |
T W AC 8bff |
Wait for touch, then scan X,Y,Z1,Z2 | 0x0040 0x8bff |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
DEMO1234 Command |
Action | SPI data in |
T W GC FFFF |
Keypad: none; GPIO inputs: none |
0x004f 0xffff |
T W GC FF00 |
Keypad: none; GPIO outputs: none; |
0x004f 0xff00 |
T W GC 0000 |
GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
T W GC C8C0 |
GPIO outputs: C4,C3; GPIO input: R4 |
0x004f 0xc8c0 |
T W GP 4000 |
GPIO pullup disable: C3 | 0x004e 0x4000 |
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC C8C0 |
Keypad: (C2,C1) x (R3,R2,R1); GPIO outputs: C4,C3; GPIO input: R4 |
0x004f 0xc8c0 |
|
T W GP 4000 |
GPIO pullup disable: C3 | 0x004e 0x4000 |
|
Connect external resistor between C3 pin and DVDD | |||
Connect DVM to C4 pin | |||
T W GD 8000 |
GPIO write C4 = 1 | 0x000f 0x8000 |
C4 pin = high |
T W GD 0000 |
GPIO write C4 = 0 | 0x000f 0x0000 |
C4 pin = low |
T W GD 8000 |
GPIO write C4 = 1 | 0x000f 0x8000 |
C4 pin = high |
T W GD 0000 |
GPIO write C4 = 0 | 0x000f 0x0000 |
C4 pin = low |
Connect DVM to C3 pin | |||
T W GD 4000 |
GPIO write C3 = 1 | 0x000f 0x4000 |
C3 pin = high |
T W GD 0000 |
GPIO write C3 = 0 | 0x000f 0x0000 |
C3 pin = low |
T W GD 4000 |
GPIO write C3 = 1 | 0x000f 0x4000 |
C3 pin = high |
T W GD 0000 |
GPIO write C3 = 0 | 0x000f 0x0000 |
C3 pin = low |
Connect R4 pin to DVDD | |||
T R GD |
GPIO read | 0x800f 0x0000 |
Buffer = 0x0800 |
Connect R4 pin to GND | |||
T R GD |
GPIO read | 0x800f 0x0000 |
Buffer = 0x0000 |
DEMO1234 Command |
Action | SPI data in |
Verification |
Optional: connect oscilloscope to KEYIRQ-bar | |||
I C 0 3 |
Configure KEYIRQ-bar pulse accumulator: falling-edge trigger | ||
I 0 0 |
Reset the pulse accumulator | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count = 0 | |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
Press and release R1C1 (key "1") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0020 = R2C2 key |
Press and release R3C2 (key "8") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0040 = R3C2 key |
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
T W KM 0020 |
Mask only R2C2 key | 0x0050 0x0020 |
|
Press and release R1C1 (key "1") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0020 = R2C2 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0000 = no key |
Press and release R3C2 (key "8") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0040 = R3C2 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0040 = R3C2 key |
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
T W KK 2000 |
Mask entire C2 column | 0x0051 0x2000 |
|
Press and release R1C1 (key "1") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
(previous value) |
Press and release R3C2 (key "8") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
(previous value) |
Press and release R2C3 (key "6") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0200 = R2C3 key |
DEMO1234 Command |
Action | SPI data in |
Verification |
T W AC C000 |
Power off ADC | 0x0040 0xc000 |
— |
T W AC 0300 |
Power off internal reference | 0x0040 0x0300 |
REF = not driven |
T W DC 8000 |
Disable DAC | 0x0042 0x8000 |
DACOUT = 0.0V |
T W KC C000 |
Power off keypad | 0x0041 0xc000 |
— |
DEMO1234 Command |
Mnemonic | SPI data in |
T R A1 |
Test Read AUX1 register | 0x8007 0x0000 |
T R A2 |
Test Read AUX2 register | 0x8008 0x0000 |
T R AC |
Test Read ADC_control register | 0x8040 0x0000 |
T R AX |
Test Read X register | 0x8000 0x0000 |
T R AY |
Test Read Y register | 0x8001 0x0000 |
T R AZ1 |
Test Read Z1 register | 0x8002 0x0000 |
T R AZ2 |
Test Read Z2 register | 0x8003 0x0000 |
T R B1 |
Test Read BAT1 register | 0x8005 0x0000 |
T R B2 |
Test Read BAT2 register | 0x8006 0x0000 |
T R DC |
Test Read DAC_control register | 0x8042 0x0000 |
T R DD |
Test Read DAC_data register | 0x800b 0x0000 |
T R GC |
Test Read GPIO_control register | 0x804f 0x0000 |
T R GD |
Test Read GPIO_data register | 0x800f 0x0000 |
T R GP |
Test Read GPIO_pullup register | 0x804e 0x0000 |
T R K1 |
Test Read KPDATA1 register | 0x8010 0x0000 |
T R K2 |
Test Read KPDATA2 register | 0x8011 0x0000 |
T R KB |
Test Read KPD register | 0x8004 0x0000 |
T R KC |
Test Read KEY_control register | 0x8041 0x0000 |
T R KK |
Test Read KPCOLMASK register | 0x8051 0x0000 |
T R KM |
Test Read KPKEYMASK register | 0x8050 0x0000 |
T R T1 |
Test Read TEMP1 register | 0x8009 0x0000 |
T R T2 |
Test Read TEMP2 register | 0x800a 0x0000 |
DEMO1234 Command |
Mnemonic | SPI data in |
T W AC hexValue |
Test Write ADC_control register | 0x0040 hexValue |
T W DC hexValue |
Test Write DAC_control register | 0x0042 hexValue |
T W DD hexValue |
Test Write DAC_data register | 0x000b hexValue |
T W GC hexValue |
Test Write GPIO_control register | 0x004f hexValue |
T W GD hexValue |
Test Write GPIO_data register | 0x000f hexValue |
T W GP hexValue |
Test Write GPIO_pullup register | 0x004e hexValue |
T W KC hexValue |
Test Write KEY_control register | 0x0041 hexValue |
T W KK hexValue |
Test Write KPCOLMASK register | 0x0051 hexValue |
T W KM hexValue |
Test Write KPKEYMASK register | 0x0050 hexValue |
DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in Sequence |
T M1 |
Measure X,Y | 0x0040 0x07010x8000 0x00000x8001 0x0000 |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b010x8000 0x00000x8001 0x00000x8002 0x00000x8003 0x0000 |
T M3 |
Measure X | 0x0040 0x0f010x8000 0x0000 |
T M4 |
Measure Y | 0x0040 0x13010x8001 0x0000 |
T M5 |
Measure Z1,Z2 | 0x0040 0x17010x8002 0x00000x8003 0x0000 |
T MD |
No measurement; drive Y+,Y- | 0x0040 0x3701 |
T ME |
No measurement; drive X+,X- | 0x0040 0x3b01 |
T MF |
No measurement; drive Y+,X- | 0x0040 0x3f01 |
DEMO1234 Command |
Action | SPI data in |
P R 5 |
Read KEYIRQ-bar pin status | N/A |
I C 0 3 |
Enable KEYIRQ-bar falling-edge trigger pulse accumulator | N/A |
I C 0 1 |
Enable KEYIRQ-bar rising-edge trigger pulse accumulator | N/A |
I C 0 0 |
Disable KEYIRQ-bar pulse accumulator | N/A |
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | N/A |
I 0 0 |
Clear the KEYIRQ-bar pulse accumulator | N/A |
P R 6 |
Read PENIRQ-bar pin status | N/A |
I C 1 3 |
Enable PENIRQ-bar falling-edge trigger pulse accumulator | N/A |
I C 1 1 |
Enable PENIRQ-bar rising-edge trigger pulse accumulator | N/A |
I C 1 0 |
Disable PENIRQ-bar pulse accumulator | N/A |
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | N/A |
I 0 1 |
Clear the PENIRQ-bar pulse accumulator | N/A |
P R 7 |
Read BUSY-bar pin status | N/A |
DEMO1234 Command |
Action | CPOL | CPHA | CS-Bar Control | AF Length |
S C L0 |
Configure SPI for CPOL=0 | 0 | — | GPIO-K9 | 1 byte |
S C L1 |
Configure SPI for CPOL=1 | 1 | — | GPIO-K9 | 1 byte |
S C A0 |
Configure SPI for CPHA=0 | — | 0 | GPIO-K9 | 1 byte |
S C A1 |
Configure SPI for CPHA=1 | — | 1 | GPIO-K9 | 1 byte |
S C C0 |
Configure SPI for 8-bit | — | — | GPIO-K9 | 1 byte |
S C C1 |
Configure SPI for 8-bit auto-CS-bar | — | — | Automatic | 1 byte |
S C C2 |
Configure SPI for 16-bit auto-CS-bar | — | — | Automatic | 2 bytes |
S C C3 |
Configure SPI for 24-bit auto-CS-bar | — | — | Automatic | 3 bytes |
S C C4 |
Configure SPI for 32-bit auto-CS-bar | — | — | Automatic | 4 bytes |
$ 2 AE 00 |
Configure SPI for 8-bit | 0 | 0 | GPIO-K9 | 1 byte |
$ 2 AE 01 |
Configure SPI for 8-bit | 0 | 1 | GPIO-K9 | 1 byte |
$ 2 AE 02 |
Configure SPI for 8-bit | 1 | 0 | GPIO-K9 | 1 byte |
$ 2 AE 03 |
Configure SPI for 8-bit | 1 | 1 | GPIO-K9 | 1 byte |
$ 2 AE 08 |
Configure SPI for 8-bit auto-CS-bar | 0 | 0 | Automatic | 1 byte |
$ 2 AE 09 |
Configure SPI for 8-bit auto-CS-bar | 0 | 1 | Automatic | 1 byte |
$ 2 AE 0A |
Configure SPI for 8-bit auto-CS-bar | 1 | 0 | Automatic | 1 byte |
$ 2 AE 0B |
Configure SPI for 8-bit auto-CS-bar | 1 | 1 | Automatic | 1 byte |
$ 2 AE 18 |
Configure SPI for 16-bit auto-CS-bar | 0 | 0 | Automatic | 2 bytes |
$ 2 AE 19 |
Configure SPI for 16-bit auto-CS-bar | 0 | 1 | Automatic | 2 bytes |
$ 2 AE 1A |
Configure SPI for 16-bit auto-CS-bar | 1 | 0 | Automatic | 2 bytes |
$ 2 AE 1B |
Configure SPI for 16-bit auto-CS-bar | 1 | 1 | Automatic | 2 bytes |
$ 2 AE 28 |
Configure SPI for 24-bit auto-CS-bar | 0 | 0 | Automatic | 3 bytes |
$ 2 AE 29 |
Configure SPI for 24-bit auto-CS-bar | 0 | 1 | Automatic | 3 bytes |
$ 2 AE 2A |
Configure SPI for 24-bit auto-CS-bar | 1 | 0 | Automatic | 3 bytes |
$ 2 AE 2B |
Configure SPI for 24-bit auto-CS-bar | 1 | 1 | Automatic | 3 bytes |
$ 2 AE 38 |
Configure SPI for 32-bit auto-CS-bar | 0 | 0 | Automatic | 4 bytes |
$ 2 AE 39 |
Configure SPI for 32-bit auto-CS-bar | 0 | 1 | Automatic | 4 bytes |
$ 2 AE 3A |
Configure SPI for 32-bit auto-CS-bar | 1 | 0 | Automatic | 4 bytes |
$ 2 AE 3B |
Configure SPI for 32-bit auto-CS-bar | 1 | 1 | Automatic | 4 bytes |
$ 2 AF xx |
Perform an 8-bit SPI transfer (CS-bar = GPIO or auto-CS-bar = 1-byte) | — | — | — | 1 byte |
$ 3 AF xx xx |
Perform a 16-bit SPI transfer (requires auto-CS-bar = 2-byte mode) | — | — | — | 2 bytes |
$ 4 AF xx xx xx |
Perform a 24-bit SPI transfer (requires auto-CS-bar = 3-byte mode) | — | — | — | 3 bytes |
$ 5 AF xx xx xx xx |
Perform a 32-bit SPI transfer (requires auto-CS-bar = 4-byte mode) | — | — | — | 4 bytes |
$ 2 F9 0 |
Drive CS-bar pin low | — | — | GPIO-K9 | — |
$ 2 F9 1 |
Drive CS-bar pin high | — | — | GPIO-K9 | — |
DEMO1234 Command |
Action | Int | GPIO Input | Firmware Command |
$ 2 C3 00 |
Query which of the C3 commands are supported; the return value is a 2-byte bitmap of commands C300 to C30F, msb first | — | — | C3 00 |
I Q 0 |
Query configuration of pulse accumulator | INT0 | GPIO-K5 | C3 01 00 |
I Q 1 |
Query configuration of pulse accumulator | INT1 | GPIO-K6 | C3 01 01 |
I Q 2 |
Query configuration of pulse accumulator | INT2 | GPIO-K7 | C3 01 02 |
I Q 3 |
Query configuration of pulse accumulator | INT3 | GPIO-K8 | C3 01 03 |
I C 0 0 |
Configure pulse accumulator: disable interrupt | INT0 | GPIO-K5 | C3 02 00 00 |
I C 1 0 |
Configure pulse accumulator: disable interrupt | INT1 | GPIO-K6 | C3 02 01 00 |
I C 2 0 |
Configure pulse accumulator: disable interrupt | INT2 | GPIO-K7 | C3 02 02 00 |
I C 3 0 |
Configure pulse accumulator: disable interrupt | INT3 | GPIO-K8 | C3 02 03 00 |
I C 0 1 |
Configure pulse accumulator: rising-edge trigger | INT0 | GPIO-K5 | C3 02 00 01 |
I C 1 1 |
Configure pulse accumulator: rising-edge trigger | INT1 | GPIO-K6 | C3 02 01 01 |
I C 2 1 |
Configure pulse accumulator: rising-edge trigger | INT2 | GPIO-K7 | C3 02 02 01 |
I C 3 1 |
Configure pulse accumulator: rising-edge trigger | INT3 | GPIO-K8 | C3 02 03 01 |
I C 0 3 |
Configure pulse accumulator: falling-edge trigger | INT0 | GPIO-K5 | C3 02 00 03 |
I C 1 3 |
Configure pulse accumulator: falling-edge trigger | INT1 | GPIO-K6 | C3 02 01 03 |
I C 2 3 |
Configure pulse accumulator: falling-edge trigger | INT2 | GPIO-K7 | C3 02 02 03 |
I C 3 3 |
Configure pulse accumulator: falling-edge trigger | INT3 | GPIO-K8 | C3 02 03 03 |
I R 0 |
Read pulse accumulator | INT0 | GPIO-K5 | C3 03 00 |
I R 1 |
Read pulse accumulator | INT1 | GPIO-K6 | C3 03 01 |
I R 2 |
Read pulse accumulator | INT2 | GPIO-K7 | C3 03 02 |
I R 3 |
Read pulse accumulator | INT3 | GPIO-K8 | C3 03 03 |
I 0 0 |
Clear pulse accumulator | INT0 | GPIO-K5 | C3 04 00 |
I 0 1 |
Clear pulse accumulator | INT1 | GPIO-K6 | C3 04 01 |
I 0 2 |
Clear pulse accumulator | INT2 | GPIO-K7 | C3 04 02 |
I 0 3 |
Clear pulse accumulator | INT3 | GPIO-K8 | C3 04 03 |
I S 0 xx |
Set pulse accumulator count xx = 0 to 255 | INT0 | GPIO-K5 | C3 05 00 xx |
I S 1 xx |
Set pulse accumulator count xx = 0 to 255 | INT1 | GPIO-K6 | C3 05 01 xx |
I S 2 xx |
Set pulse accumulator count xx = 0 to 255 | INT2 | GPIO-K7 | C3 05 02 xx |
I S 3 xx |
Set pulse accumulator count xx = 0 to 255 | INT3 | GPIO-K8 | C3 05 03 xx |
全部0条评论
快来发表一下你的评论吧 !