CRTOUCH Calibration Fails/Last Report of X/Y can be 50+ pixels off right before BTN_TOUCH received

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

CRTOUCH Calibration Fails/Last Report of X/Y can be 50+ pixels off right before BTN_TOUCH received

Jump to solution
1,336 Views
athomas
Contributor III

I cannot get the CRTOUCH to report a successful calibration with my 5-Wire resistive touch screen and I continue to get touches where the final X/Y points are 50+ pixels off of actual pressed location. When using evtest the presses will be in the correct location right-up until the last few X/Y reports that precede the BTN_TOUCH release. It creates an anomaly where the mouse jumps from where the screen was touched.

What does it take to get the CRTOUCH to properly calibrate? Does anyone have any suggestions on what to look at? I could hack up the driver to modify what the last reported event is before the BTN_TOUCH event sent reported, but some of this should be handled by the chip and the calibration.

Setup:

  • Custom i.MX6 board with CRTOUCH and 5-Wire Resistive touchscreen
  • Linux (3.10.53) Driver is the provided Linux example that has been adapted to:
    • Add Device Tree Support w/ interrupt support
    • Remove Multi-touch as it is not supported by the 5-Wire setup and it was preventing Linux from registering touch events (though in evtest it looked correct)
  • Calibration Tool is the same one provided with the Linux Examples for the CRTOUCH

I checked that the calibration tool was properly getting the screen resolution. I have also tried calibrating with both a stylus and a finger multiple times. I would say about 70% of the time the jump is not that noticeable. I can replicate the the problem with both short taps and longer touch events.

EVTEST results from touch event stream where last X/Y was off:

BTN_TOUCH = 1

Pressure Event:

X/Y: 928/529

X/Y: 926/525

X/Y: 920/525

X/Y: 917/523

X/Y: 887/514

X/Y: 914/433

X/Y: 981/319

Pressure Event:

BTN_TOUCH = 0

Events were being reported ~ every 0.05 seconds

NOTE: When I calibrate a CRTOUCH the first time, the X axis is inverted while the Y axis operates as expected. I did not see a problem with my schematic on a quick check.

Labels (1)
Tags (1)
0 Kudos
1 Solution
895 Views
athomas
Contributor III

I was able to resolve the issue by removing the capacitors that are DNP'd on the evaluation board for the CRTOUCH. I understand why the diodes are there for ESD, but I am not sure what purpose the capacitors would have or basically I understand why removing resolved my problem and improved touch.

View solution in original post

0 Kudos
3 Replies
895 Views
athomas
Contributor III

Just as a follow-up I should have said my Y axis is inverted and my X axis operates as expected. Referring back to the documentation for the CRTOUCH 0,0 is the Lower Lefthand (LL) corner, so that would make sense. That reporting somewhat odd as mouse events are reported as 0,0 being the Upper Lefthand UL corner, or I would expect that the calibration would account for the issue.

I will l assume the calibration is accounting for the issue and that is not the problem with calibration failing.

I guess in theory I could swap UL with LL and UR with LR to for reporting 0,0 out of UL corner of the screen as normally be expected X11/etc.

0 Kudos
895 Views
athomas
Contributor III

As a second follow-up:

I am still seeing the cursor jumping issue after I got the Linux Calibration example to successfully finish calibration (i.e. get HW feedback from the CRTOCUH).

I was able to perform the calibration by taking the Calibrations Tool points and inverting the Y axis. i.e. for the first point in the the Upper Left Corner (10% in from both borders) I clicked in the Lower Left corner. I repeated the inversion for of the other two calibration points.

Upon successful calibration I could see the mouse jump ~30% of the time as I pull my stylus/finger off the screen. I also paid closer attention to the light touches and noticed the mouse will jitter around a bunch (but less than the jump seen when finishing a touch) if the touch is very light.

The provided Freescale Linux example calibration does not work without messing with the orientation of the screen or re-assignment of UL/UR/LL/LR. The example puts the first calibration point in the Upper Left hand corner vs the Lower Left. Some combination of inverting the Y axis via the driver and the reworking the calibration could be implemented as well.

0 Kudos
896 Views
athomas
Contributor III

I was able to resolve the issue by removing the capacitors that are DNP'd on the evaluation board for the CRTOUCH. I understand why the diodes are there for ESD, but I am not sure what purpose the capacitors would have or basically I understand why removing resolved my problem and improved touch.

0 Kudos