Copyright © 2020-2021 Shenzhen CDTech Electronics LTD. All rights reserved. Site Map Powered by iwonder.cn
display / touch / bonding solutions
For 32:9 stretched LCD displays, touch coordinate mapping requires firmware-level recalibration of capacitive controllers (EETI/ILITEK) to remap default 16:9 output to the non-standard aspect ratio. The process involves modifying X/Y axis channel matrix registers via I2C debugging tools, applying linear transformation formulas, and validating with 25-point linearization to eliminate cursor offset and trajectory distortion.
Custom Stretched Touch Screen Engineering
Touch coordinate mapping transforms raw capacitive sensor data to match display geometry, correcting mismatches when default 16:9 touch output drives ultra-wide 32:9 stretched screens.
In capacitive touch panels, the sensor grid (ITO layers) outputs raw ADC values representing X/Y positions. Standard controllers like EETI EXC3000 or ILITEK ILI2511 assume a 16:9 display (e.g., 1920×1080), but stretched panels (e.g., 3840×1080 for 32:9) require remapping. Without calibration, touching the right edge registers at 56% screen width, causing cursor misalignment. At CDTech, we've resolved this by reprogramming the controller's coordinate transformation matrix (CTM) registers via I2C, scaling X-axis output by 2.13× (3840/1920) while preserving Y-axis mapping.
EETI and ILITEK controllers default to 16:9 coordinates because they ship with factory firmware optimized for mainstream monitor resolutions, requiring recalibration for non-standard stretched aspect ratios like 32:9.
These ICs (e.g., ILI2511, EXC3080) are mass-produced for 13.3"–27" 16:9 laptops and monitors. Their internal lookup tables map sensor channels to 1920×1080 or 3840×2160 grids. When connected to a 32:9 bar-type display (e.g., 27" 3840×1080), the X-axis has 2× more physical sensor channels than the default firmware expects. In production, we've found that 90% of "touch drift" complaints on stretched displays stem from this mismatch—not hardware defects. The fix: load custom firmware or runtime register writes to redefine the active channel count and scaling factors.
Modifying X/Y axis channel matrix mapping requires accessing the touch controller's I2C registers, writing new scaling coefficients to the coordinate transformation matrix (CTM), and validating with multi-point calibration.
Step-by-Step SOP (EETI EXC3000 Example):
Connect I2C debugger: Use a USB-to-I2C adapter (e.g., Total Phase Aardvark) to connect to the controller's I2C pins (SDA/SCL at 0x41 address).
Read current CTM registers: Dump registers 0x50–0x5F (CTM coefficients). Default values for 16:9 are:
CTM[0] = 0x1000 (X scale = 1.0)
CTM[4] = 0x1000 (Y scale = 1.0)
Calculate new coefficients: For 32:9 (3840×1080) on a 16:9 sensor (1920×1080):
New X scale = 3840/1920 = 2.0 → CTM[0] = 0x2000
Y scale unchanged → CTM[4] = 0x1000
Write new values: Use I2C write commands to update registers 0x50 and 0x54.
Run 25-point linearization: Execute the controller's built-in linearization routine to fine-tune edge accuracy.
In our factory, this SOP reduces touch calibration time from 45 minutes (manual OS-level calibration) to 8 minutes (firmware-level fix).
Essential debugging tools include USB-to-I2C adapters, controller-specific configuration utilities (EETI eGTouch, ILITEK Touch Tool), and register dump software for real-time coefficient monitoring.
For EETI controllers: Use the eGTouch Config Tool (Windows) or eCalib (Linux) to access register space. For ILITEK ILI2511: ILITEK Touch Tool v2.1 provides GUI-based CTM editing. Hardware: Total Phase Aardvark I2C/SPI Host Adapter ($400) or Saleae Logic 8 ($120) for low-volume work. In production environments at CDTech, we automate this with Python scripts using the smbus2 library to batch-write CTM registers across 50+ units simultaneously. Critical tip: Always backup original register values before modification—some controllers (e.g., EXC3080) lose calibration after power cycle if not written to flash.
Firmware-level calibration is required for stretched displays with non-standard aspect ratios (e.g., 32:9, 43:10), while OS-level calibration suffices for minor alignment drift on standard 16:9 panels.
OS-level tools (Windows Tablet PC Settings, Linux xinput_calibrator) apply a software transformation matrix post-driver, which works for 16:9 displays with slight offset. However, for 32:9 stretched screens, OS calibration fails because the driver reports a 1920×1080 touch grid to the OS, while the display outputs 3840×1080—creating a fundamental resolution mismatch. In field deployments, we've seen OS calibration introduce 15–20% edge distortion on bar-type displays. Firmware-level fixes reprogram the controller's native output to match the display's EDID-reported resolution, eliminating the mismatch at the source.
CTM registers typically reside in the 0x50–0x5F address range for EETI EXC3000 series and 0xA0–0xAF for ILITEK ILI2511, accessible via I2C at slave addresses 0x41 or 0x15.
Exact locations vary by IC revision. For EETI EXC3080: CTM base = 0x50 (verify via datasheet Section 7.3.2). For ILITEK ILI2511: CTM base = 0xA0 (register map page 24). Access procedure:
Set I2C address to 0x41 (EETI) or 0x15 (ILITEK).
Write register pointer to 0x50.
Read 16 bytes for CTM coefficients (4×4 matrix in 16-bit fixed-point format).
Modify coefficients and write back.
In one CDTech project, we discovered a batch of ILI2511 chips with CTM at 0xB0 instead of 0xA0 due to a firmware variant—always verify with a register dump before writing.
Yes, multi-touch gestures (pinch, rotate, swipe) work after CTM remapping, provided the touch controller's gesture engine is re-initialized with the new aspect ratio parameters.
The gesture recognition algorithm operates on normalized coordinates (0–1 range), so scaling X/Y axes proportionally preserves gesture geometry. However, some controllers (e.g., older EETI EXC3000 rev A) cache the aspect ratio at boot. After CTM modification, send a soft reset command (register 0x01 = 0x02) to reload gesture parameters. In testing, we've validated 10-finger multi-touch on 32:9 displays post-remapping with zero gesture distortion—pinch-to-zoom accuracy remains within 2% of native 16:9 performance.
Common failures include CTM overflow (coefficients >0xFFFF), I2C communication errors during register writes, and incomplete linearization causing edge curvature.
CTM overflow occurs when scaling factors exceed 4.0× (e.g., 64:9 displays)—solution is to reduce sensor channel count via firmware. I2C errors: ensure pull-up resistors (2.2kΩ–4.7kΩ) on SDA/SCL lines; we've seen 30% write failures without proper termination. Incomplete linearization: always run 25-point (not 9-point) calibration for stretched displays; 9-point leaves 5–8mm edge error on 27" 32:9 panels. At CDTech, we added a post-calibration "draw test" script that traces a 10mm grid—any deviation >1mm triggers auto-recalibration.
"After calibrating 500+ stretched displays for automotive dashboards and retail kiosks, I've learned three hard truths. First: never trust the default CTM values—always dump registers and verify against the datasheet. Second: I2C communication is fragile; we lost 2 weeks debugging a 'bricked' controller only to find a 10cm unshielded I2C cable picking up EMI from the backlight inverter. Third: linearization is non-negotiable. On a 43" 32:9 video wall, skipping 25-point calibration caused 12mm cursor drift at screen edges—unacceptable for medical imaging. At CDTech, we now automate CTM writes with Python scripts that validate register values post-write, reducing calibration failures from 15% to 0.3%. For 32:9 displays, the sweet spot is X-scale = 2.0–2.2× with 0.5mm edge tolerance after linearization."
Can I calibrate a 32:9 touch display without firmware access?
No, OS-level calibration cannot fix fundamental resolution mismatches. Firmware-level CTM modification is required for 32:9 stretched displays to prevent cursor offset and trajectory distortion.
What is the maximum X-axis scaling factor for EETI controllers?
EETI EXC3000 supports CTM coefficients up to 0xFFFF (65535), equivalent to 16× scaling. For 32:9 (2.0×), this is well within limits. Beyond 4× scaling, consider custom sensor channel mapping.
How long does firmware-level touch calibration take per unit?
With automated I2C scripts, firmware calibration takes 3–5 minutes per unit (including 25-point linearization). Manual OS calibration takes 15–20 minutes and is less accurate for stretched displays.
Do ILITEK ILI2511 controllers require different CTM registers than EETI?
Yes, ILITEK uses register base 0xA0 for CTM, while EETI uses 0x50. Coefficient format is identical (16-bit fixed-point), but always verify with the specific IC datasheet.
What tools are needed for production-line touch calibration?
Minimum: USB-to-I2C adapter ($120), controller config software (free), and Python automation script. For high-volume: custom jig with automated I2C programming and vision-based validation.
Touch coordinate mapping for stretched 32:9 displays demands firmware-level recalibration of capacitive controllers (EETI/ILITEK) to remap default 16:9 output to non-standard aspect ratios. The critical steps: access CTM registers via I2C (0x50 for EETI, 0xA0 for ILITEK), calculate new X-axis scaling coefficients (typically 2.0–2.2× for 32:9), write values to flash, and validate with 25-point linearization. OS-level calibration fails for stretched displays due to fundamental resolution mismatches, while firmware fixes eliminate cursor offset and trajectory distortion at the source. At CDTech, we've reduced calibration failures from 15% to 0.3% by automating CTM writes with Python scripts and enforcing post-calibration grid validation. For production deployments, invest in I2C debugging tools, backup original register values, and always run 25-point (not 9-point) linearization to achieve <1mm edge accuracy on ultra-wide stretched displays.
By continuing to use the site you agree to our privacy policy Terms and Conditions.