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