XPT2046是ADS7846的仿制IC,驱动互相兼容

config.txt

dtoverlay=ads7846,cs=1,penirq=16,penirq_pull=2,speed=1000000,swapxy=1,xmin=200,xmax=3900,ymin=200,ymax=3900

校准屏幕

sudo一定要使用-E来传递刚刚设置的export

zhouzihao@zhouzihao:~ $ export TSLIB_TSDEVICE=/dev/input/event5
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=/usr/lib/aarch64-linux-gnu/ts0
zhouzihao@zhouzihao:~ $ sudo -E ts_calibrate
xres = 480, yres = 320
Took 13 samples...
Top left : X = 3520 Y = 3392
Took 19 samples...
Top right : X =  627 Y = 3328
Took 17 samples...
Bot right : X =  632 Y =  719
Took 14 samples...
Bot left : X = 3529 Y =  750
Took 11 samples...
Center : X = 2080 Y = 1984
513.413879 -0.131255 -0.000353
327.541840 0.001372 -0.083748
Calibration constants: 33647092 -8601 -23 21465782 89 -5488 65536
zhouzihao@zhouzihao:~ $

屏幕的片选:第二个片选,中断:gpio16

一定要同时打开spi、iic功能,不然无法触摸

防抖设置:

~ ❯ cat /etc/ts.conf                                                                                zhouzihao@zhouzihao
# Access plugins
################

# Uncomment if you wish to use the linux input layer event interface
module_raw input

# For other driver modules, see the ts.conf man page


# Filter plugins
################

# Uncomment if first or last samples are unreliable
# module skip nhead=1 ntail=1

# Uncomment if needed for devices that measure pressure
#module pthres pmin=1

# Uncomment if needed
module debounce drop_threshold=40

# Uncomment if needed to filter spikes
module median depth=5

# Uncomment to enable smoothing of fraction N/D
module iir N=6 D=10

# Uncomment if needed
# module lowpass factor=0.1 threshold=1

# Uncomment if needed to filter noise samples
module dejitter delta=100

# Uncomment to define threshold in number of events from device
# module evthres N=5

# Uncomment and adjust if you need to invert an axis or both
# module invert x0=800 y0=480

# Uncomment to use ts_calibrate's settings
module linear
~ ❯         

evdev校准

左上角:
Testing ... (interrupt to exit)
Event: time 1755850737.261653, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1755850737.261653, type 3 (EV_ABS), code 0 (ABS_X), value 3903
Event: time 1755850737.261653, type 3 (EV_ABS), code 1 (ABS_Y), value 3904
Event: time 1755850737.261653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64472
Event: time 1755850737.261653, -------------- SYN_REPORT ------------
Event: time 1755850737.273649, type 3 (EV_ABS), code 0 (ABS_X), value 3968
Event: time 1755850737.273649, type 3 (EV_ABS), code 1 (ABS_Y), value 3792
Event: time 1755850737.273649, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64666
Event: time 1755850737.273649, -------------- SYN_REPORT ------------
Event: time 1755850737.285647, type 3 (EV_ABS), code 0 (ABS_X), value 3856
Event: time 1755850737.285647, type 3 (EV_ABS), code 1 (ABS_Y), value 3841
Event: time 1755850737.285647, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64733
Event: time 1755850737.285647, -------------- SYN_REPORT ------------
Event: time 1755850737.297648, type 3 (EV_ABS), code 0 (ABS_X), value 3880
Event: time 1755850737.297648, type 3 (EV_ABS), code 1 (ABS_Y), value 3903
Event: time 1755850737.297648, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64685
Event: time 1755850737.297648, -------------- SYN_REPORT ------------
Event: time 1755850737.309646, type 3 (EV_ABS), code 0 (ABS_X), value 3872
Event: time 1755850737.309646, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64701
Event: time 1755850737.309646, -------------- SYN_REPORT ------------
Event: time 1755850737.321650, type 3 (EV_ABS), code 0 (ABS_X), value 3967
Event: time 1755850737.321650, type 3 (EV_ABS), code 1 (ABS_Y), value 3872
Event: time 1755850737.321650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64739
Event: time 1755850737.321650, -------------- SYN_REPORT ------------
Event: time 1755850737.333657, type 3 (EV_ABS), code 0 (ABS_X), value 3936
Event: time 1755850737.333657, type 3 (EV_ABS), code 1 (ABS_Y), value 3800
Event: time 1755850737.333657, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64812
Event: time 1755850737.333657, -------------- SYN_REPORT ------------
Event: time 1755850737.345652, type 3 (EV_ABS), code 0 (ABS_X), value 3952
Event: time 1755850737.345652, type 3 (EV_ABS), code 1 (ABS_Y), value 3792
Event: time 1755850737.345652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64803
Event: time 1755850737.345652, -------------- SYN_REPORT ------------
Event: time 1755850737.357651, type 3 (EV_ABS), code 0 (ABS_X), value 3872
Event: time 1755850737.357651, type 3 (EV_ABS), code 1 (ABS_Y), value 3871
Event: time 1755850737.357651, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64770
Event: time 1755850737.357651, -------------- SYN_REPORT ------------
Event: time 1755850737.369648, type 3 (EV_ABS), code 0 (ABS_X), value 3889
Event: time 1755850737.369648, type 3 (EV_ABS), code 1 (ABS_Y), value 3967
Event: time 1755850737.369648, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64696
Event: time 1755850737.369648, -------------- SYN_REPORT ------------
Event: time 1755850737.381649, type 3 (EV_ABS), code 0 (ABS_X), value 3967
Event: time 1755850737.381649, type 3 (EV_ABS), code 1 (ABS_Y), value 3840
Event: time 1755850737.381649, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64773
Event: time 1755850737.381649, -------------- SYN_REPORT ------------
Event: time 1755850737.393646, type 3 (EV_ABS), code 0 (ABS_X), value 3984
Event: time 1755850737.393646, type 3 (EV_ABS), code 1 (ABS_Y), value 3792
Event: time 1755850737.393646, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64803
Event: time 1755850737.393646, -------------- SYN_REPORT ------------
Event: time 1755850737.405649, type 3 (EV_ABS), code 0 (ABS_X), value 3856
Event: time 1755850737.405649, type 3 (EV_ABS), code 1 (ABS_Y), value 3839
Event: time 1755850737.405649, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64766
Event: time 1755850737.405649, -------------- SYN_REPORT ------------
Event: time 1755850737.417499, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1755850737.417499, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1755850737.417499, -------------- SYN_REPORT ------------


右上角:
Event: time 1755850768.721657, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1755850768.721657, type 3 (EV_ABS), code 0 (ABS_X), value 260
Event: time 1755850768.721657, type 3 (EV_ABS), code 1 (ABS_Y), value 3871
Event: time 1755850768.721657, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 63694
Event: time 1755850768.721657, -------------- SYN_REPORT ------------
Event: time 1755850768.733656, type 3 (EV_ABS), code 0 (ABS_X), value 240
Event: time 1755850768.733656, type 3 (EV_ABS), code 1 (ABS_Y), value 3967
Event: time 1755850768.733656, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64190
Event: time 1755850768.733656, -------------- SYN_REPORT ------------
Event: time 1755850768.745653, type 3 (EV_ABS), code 0 (ABS_X), value 246
Event: time 1755850768.745653, type 3 (EV_ABS), code 1 (ABS_Y), value 3840
Event: time 1755850768.745653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64393
Event: time 1755850768.745653, -------------- SYN_REPORT ------------
Event: time 1755850768.757653, type 3 (EV_ABS), code 0 (ABS_X), value 234
Event: time 1755850768.757653, type 3 (EV_ABS), code 1 (ABS_Y), value 3872
Event: time 1755850768.757653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64444
Event: time 1755850768.757653, -------------- SYN_REPORT ------------
Event: time 1755850768.769650, type 3 (EV_ABS), code 0 (ABS_X), value 235
Event: time 1755850768.769650, type 3 (EV_ABS), code 1 (ABS_Y), value 3903
Event: time 1755850768.769650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64411
Event: time 1755850768.769650, -------------- SYN_REPORT ------------
Event: time 1755850768.781650, type 3 (EV_ABS), code 0 (ABS_X), value 247
Event: time 1755850768.781650, type 3 (EV_ABS), code 1 (ABS_Y), value 3904
Event: time 1755850768.781650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64466
Event: time 1755850768.781650, -------------- SYN_REPORT ------------
Event: time 1755850768.793649, type 3 (EV_ABS), code 0 (ABS_X), value 242
Event: time 1755850768.793649, type 3 (EV_ABS), code 1 (ABS_Y), value 3840
Event: time 1755850768.793649, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64524
Event: time 1755850768.793649, -------------- SYN_REPORT ------------
Event: time 1755850768.805650, type 3 (EV_ABS), code 0 (ABS_X), value 240
Event: time 1755850768.805650, type 3 (EV_ABS), code 1 (ABS_Y), value 3864
Event: time 1755850768.805650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64607
Event: time 1755850768.805650, -------------- SYN_REPORT ------------
Event: time 1755850768.817650, type 3 (EV_ABS), code 0 (ABS_X), value 237
Event: time 1755850768.817650, type 3 (EV_ABS), code 1 (ABS_Y), value 4031
Event: time 1755850768.817650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64445
Event: time 1755850768.817650, -------------- SYN_REPORT ------------
Event: time 1755850768.829653, type 3 (EV_ABS), code 0 (ABS_X), value 243
Event: time 1755850768.829653, type 3 (EV_ABS), code 1 (ABS_Y), value 3840
Event: time 1755850768.829653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64498
Event: time 1755850768.829653, -------------- SYN_REPORT ------------
Event: time 1755850768.841656, type 3 (EV_ABS), code 0 (ABS_X), value 242
Event: time 1755850768.841656, type 3 (EV_ABS), code 1 (ABS_Y), value 3856
Event: time 1755850768.841656, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64379
Event: time 1755850768.841656, -------------- SYN_REPORT ------------
Event: time 1755850768.853506, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1755850768.853506, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1755850768.853506, -------------- SYN_REPORT ------------


左下角:
Testing ... (interrupt to exit)
Event: time 1755850784.881656, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1755850784.881656, type 3 (EV_ABS), code 0 (ABS_X), value 3808
Event: time 1755850784.881656, type 3 (EV_ABS), code 1 (ABS_Y), value 231
Event: time 1755850784.881656, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 63960
Event: time 1755850784.881656, -------------- SYN_REPORT ------------
Event: time 1755850784.893657, type 3 (EV_ABS), code 0 (ABS_X), value 3935
Event: time 1755850784.893657, type 3 (EV_ABS), code 1 (ABS_Y), value 210
Event: time 1755850784.893657, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64346
Event: time 1755850784.893657, -------------- SYN_REPORT ------------
Event: time 1755850784.905653, type 3 (EV_ABS), code 0 (ABS_X), value 3952
Event: time 1755850784.905653, type 3 (EV_ABS), code 1 (ABS_Y), value 204
Event: time 1755850784.905653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64557
Event: time 1755850784.905653, -------------- SYN_REPORT ------------
Event: time 1755850784.921650, type 3 (EV_ABS), code 0 (ABS_X), value 3984
Event: time 1755850784.921650, type 3 (EV_ABS), code 1 (ABS_Y), value 202
Event: time 1755850784.921650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64638
Event: time 1755850784.921650, -------------- SYN_REPORT ------------
Event: time 1755850784.933653, type 3 (EV_ABS), code 0 (ABS_X), value 3840
Event: time 1755850784.933653, type 3 (EV_ABS), code 1 (ABS_Y), value 205
Event: time 1755850784.933653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64666
Event: time 1755850784.933653, -------------- SYN_REPORT ------------
Event: time 1755850784.945652, type 3 (EV_ABS), code 0 (ABS_X), value 3887
Event: time 1755850784.945652, type 3 (EV_ABS), code 1 (ABS_Y), value 208
Event: time 1755850784.945652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64548
Event: time 1755850784.945652, -------------- SYN_REPORT ------------
Event: time 1755850784.957652, type 3 (EV_ABS), code 0 (ABS_X), value 3994
Event: time 1755850784.957652, type 3 (EV_ABS), code 1 (ABS_Y), value 204
Event: time 1755850784.957652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64566
Event: time 1755850784.957652, -------------- SYN_REPORT ------------
Event: time 1755850784.969501, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1755850784.969501, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1755850784.969501, -------------- SYN_REPORT ------------

右下角:
Input device name: "ADS7846 Touchscreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   3994
      Min      200
      Max     4095
    Event code 1 (ABS_Y)
      Value    204
      Min      200
      Max     3900
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max    65535
Properties:
Testing ... (interrupt to exit)
Event: time 1755850800.945656, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1755850800.945656, type 3 (EV_ABS), code 0 (ABS_X), value 260
Event: time 1755850800.945656, type 3 (EV_ABS), code 1 (ABS_Y), value 243
Event: time 1755850800.945656, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64105
Event: time 1755850800.945656, -------------- SYN_REPORT ------------
Event: time 1755850800.957651, type 3 (EV_ABS), code 0 (ABS_X), value 258
Event: time 1755850800.957651, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64317
Event: time 1755850800.957651, -------------- SYN_REPORT ------------
Event: time 1755850800.969651, type 3 (EV_ABS), code 0 (ABS_X), value 263
Event: time 1755850800.969651, type 3 (EV_ABS), code 1 (ABS_Y), value 229
Event: time 1755850800.969651, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64451
Event: time 1755850800.969651, -------------- SYN_REPORT ------------
Event: time 1755850800.981648, type 3 (EV_ABS), code 0 (ABS_X), value 260
Event: time 1755850800.981648, type 3 (EV_ABS), code 1 (ABS_Y), value 224
Event: time 1755850800.981648, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64499
Event: time 1755850800.981648, -------------- SYN_REPORT ------------
Event: time 1755850800.993653, type 3 (EV_ABS), code 0 (ABS_X), value 256
Event: time 1755850800.993653, type 3 (EV_ABS), code 1 (ABS_Y), value 209
Event: time 1755850800.993653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64589
Event: time 1755850800.993653, -------------- SYN_REPORT ------------
Event: time 1755850801.005654, type 3 (EV_ABS), code 0 (ABS_X), value 129
Event: time 1755850801.005654, type 3 (EV_ABS), code 1 (ABS_Y), value 224
Event: time 1755850801.005654, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64474
Event: time 1755850801.005654, -------------- SYN_REPORT ------------
Event: time 1755850801.017655, type 3 (EV_ABS), code 0 (ABS_X), value 256
Event: time 1755850801.017655, type 3 (EV_ABS), code 1 (ABS_Y), value 231
Event: time 1755850801.017655, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64467
Event: time 1755850801.017655, -------------- SYN_REPORT ------------
Event: time 1755850801.029654, type 3 (EV_ABS), code 1 (ABS_Y), value 238
Event: time 1755850801.029654, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64376
Event: time 1755850801.029654, -------------- SYN_REPORT ------------
Event: time 1755850801.041654, type 3 (EV_ABS), code 0 (ABS_X), value 250
Event: time 1755850801.041654, type 3 (EV_ABS), code 1 (ABS_Y), value 226
Event: time 1755850801.041654, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64579
Event: time 1755850801.041654, -------------- SYN_REPORT ------------
Event: time 1755850801.053652, type 3 (EV_ABS), code 0 (ABS_X), value 256
Event: time 1755850801.053652, type 3 (EV_ABS), code 1 (ABS_Y), value 229
Event: time 1755850801.053652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64462
Event: time 1755850801.053652, -------------- SYN_REPORT ------------
Event: time 1755850801.065652, type 3 (EV_ABS), code 1 (ABS_Y), value 238
Event: time 1755850801.065652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64384
Event: time 1755850801.065652, -------------- SYN_REPORT ------------
Event: time 1755850801.077653, type 3 (EV_ABS), code 0 (ABS_X), value 244
Event: time 1755850801.077653, type 3 (EV_ABS), code 1 (ABS_Y), value 225
Event: time 1755850801.077653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64435
Event: time 1755850801.077653, -------------- SYN_REPORT ------------
Event: time 1755850801.089652, type 3 (EV_ABS), code 0 (ABS_X), value 256
Event: time 1755850801.089652, type 3 (EV_ABS), code 1 (ABS_Y), value 227
Event: time 1755850801.089652, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64515
Event: time 1755850801.089652, -------------- SYN_REPORT ------------
Event: time 1755850801.101650, type 3 (EV_ABS), code 1 (ABS_Y), value 239
Event: time 1755850801.101650, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64343
Event: time 1755850801.101650, -------------- SYN_REPORT ------------
Event: time 1755850801.113653, type 3 (EV_ABS), code 0 (ABS_X), value 267
Event: time 1755850801.113653, type 3 (EV_ABS), code 1 (ABS_Y), value 236
Event: time 1755850801.113653, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 64436
Event: time 1755850801.113653, -------------- SYN_REPORT ------------
Event: time 1755850801.125512, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1755850801.125512, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1755850801.125512, -------------- SYN_REPORT ------------

左上角(X最大,Y最大):大约 X=3900,Y=3900

右上角(X最小,Y最大):大约 X=240,Y=3900

左下角(X最大,Y最小):大约 X=3900,Y=210

右下角(X最小,Y最小):大约 X=240,Y=210

evdev 直接驱动时,坐标的映射区间由 xmin/xmax/ymin/ymax 决定

xmin 取你右上/右下角的 X 最小值,建议取 230~250

xmax 取你左上/左下角的 X 最大值,建议取 3980~3990

ymin 取你左下/右下角的 Y 最小值,建议取 200~210

ymax 取你左上/右上角的 Y 最大值,建议取 3900~3960

dtoverlay=ads7846,cs=1,penirq=16,penirq_pull=2,speed=1000000,swapxy=1,xmin=240,xmax=3980,ymin=210,ymax=3900