衡山派开发板RTP触摸屏驱动测试指南:从环境搭建到校准与画点实战

衡山派开发板RTP触摸屏驱动测试指南:从环境搭建到校准与画点实战 衡山派开发板RTP触摸屏驱动测试指南从环境搭建到校准与画点实战最近在衡山派开发板上做触屏项目发现不少朋友对RTP电阻式触摸屏的驱动测试流程不太熟悉。今天我就把自己在实际项目中调试RTP的经验整理出来手把手带你完成从环境搭建到校准、画点的完整测试流程。无论你是用RTOS还是裸机环境这篇教程都能帮你快速上手。1. 测试环境准备在开始测试之前咱们得先把硬件和软件环境准备好。电阻式触摸屏的测试对硬件连接有一定要求准备工作做得好后面调试才能事半功倍。1.1 硬件清单你需要准备以下硬件设备带触屏功能的屏幕这是测试的主体确保屏幕的RTP接口完好。衡山派开发板需要带有RTP接口的型号。USB Type-C数据线用于给开发板供电和烧写程序。USB转串口线连接开发板的调试串口用于在PC上查看和输入命令。手写笔推荐电阻屏用指尖按压有时不够精准用手写笔点击可以获取更准确的位置数据方便校准。1.2 软件与配置软件方面主要是PC端的工具和开发板上的测试程序。PC端串口终端软件比如Putty、MobaXterm或者SecureCRT。用它来和开发板的串口通信执行命令和查看输出。test_rtp_draw测试程序这是衡山派SDK里提供的专门用于测试RTP驱动的工具我们需要先把它编译进系统。1.2.1 启用 test_rtp_draw 程序首先进入你的 Luban-Lite SDK 根目录通过menuconfig来配置并启用测试程序。# 在 Luban-Lite 根目录下执行 scons --menuconfig执行后会进入一个图形化配置界面。你需要按照以下路径找到选项并开启首先选择Drivers options ---然后进入Drivers examples ---最后找到[*] Enable RTP driver test command这一项按空格键选中它前面会出现*号。重要提示解决与LVGL的冲突如果你之前为了运行图形界面Demo而开启了LVGL这里可能会遇到一个坑。LVGL会独占RTP设备导致你运行test_rtp_draw时出现Failed to open aic-rtp device的错误。解决办法在menuconfig中关闭LVGL。 配置路径是Application options --- [ ] ArtInChip LVGL demo ---把这项前面的*号去掉按空格键即可。配置完成后保存并退出menuconfig然后重新编译整个工程将固件烧录到开发板中。2. RTOS环境下的测试在RTOS比如Luban-Lite环境下系统启动后会进入一个命令行shell提示符通常是aic /我们可以直接在这里输入测试命令。2.1 查看命令帮助首先咱们看看这个测试工具怎么用。在串口终端里输入aic / test_rtp_draw -h你会看到如下输出它列出了所有可用的参数Usage: test_rtp_draw [options]: -c, --calibrate Platform the screen calibration -p, --points Set the points for drawing, defalut is 1000 -d, --draw Draw the shape -h, --help Example: test_rtp_draw -c-c执行屏幕校准。-p设置画点测试时要采集的点数默认是1000个点。-d执行画点测试。-h显示这个帮助信息。2.2 RTP校准测试 (-c)电阻屏由于物理特性其ADC模数转换器读出的原始坐标值和屏幕的实际像素坐标不是线性对应的。因此使用前必须进行校准建立两者的映射关系。校准过程很简单在命令行输入aic / test_rtp_draw -c执行后屏幕或串口提示上会依次提示你点击五个点左上角、右上角、右下角、左下角、中心点。请使用手写笔尽量精准地点击这些位置。点击完成后串口会打印出校准结果类似下面这样Top left : X 50 Y 50 Calibration: X 958, Y 90 Top right : X 974 Y 50 Calibration: X 69, Y 86 Bot right : X 974 Y 550 Calibration: X 61, Y 526 Bot left : X 50 Y 550 Calibration: X 876, Y 535 Center : X 512 Y 300 Calibration: X 522, Y 303怎么看这个结果Top left : X 50 Y 50表示系统期望你点击的屏幕像素坐标是 (50, 50)。Calibration: X 958, Y 90表示RTP驱动实际采集到的ADC原始值是 (958, 90)。程序会利用这五组对应关系计算出一个转换公式。之后所有的触摸坐标都会通过这个公式从ADC值转换成准确的屏幕坐标。2.3 RTP画点测试 (-d)校准完成后就可以测试触摸屏的实时响应了。画点测试会持续采集触摸点的数据并打印出来非常适合用来检查触摸是否灵敏、坐标是否准确。输入命令开始测试aic / test_rtp_draw -d然后用笔在屏幕上点击或滑动观察串口输出。你会看到类似下面的信息流Event type : down, Press : 617 0: X 240/3299, Y 325/2924 Event type : down, Press : 653 1: X 232/3324, Y 333/2963 Event type : down, Press : 670 2: X 254/3256, Y 328/2933 Event type : down, Press : 706 3: X 245/3282, Y 319/2899 Event type : up, Press : 0 Event type : up, Press: too light如何解读这些信息事件类型 (Event type)down表示笔按下触摸开始。up表示笔抬起触摸结束。压感值 (Press)表示按压的力度。电阻屏可以感知压力这个值越大表示按得越重。当值为0或提示too light时表示按压太轻可能被当作无效触摸过滤掉了。坐标信息X 240/3299, Y 325/2924240和325这是经过校准转换后的屏幕像素坐标也是你的应用程序真正应该使用的坐标。3299和2924这是RTP芯片采集到的原始ADC值仅供调试参考。你可以移动手写笔观察输出的X、Y坐标变化是否与你的移动方向、位置一致以此来验证驱动和校准是否正确。3. 裸机环境下的测试如果你的程序运行在裸机环境没有操作系统测试流程和RTOS类似但命令的格式稍有不同。裸机环境下的命令行提示符通常是aic #。3.1 查看命令帮助裸机环境下命令是子命令的形式先输入主命令再跟具体操作aic # test_rtp_draw直接运行会打印出帮助信息Compile time: Jun 3 2024 09:33:21 Usage: test_rtp_draw [options] test_rtp_draw calibrate : Platform the screen calibration test_rtp_draw set points_number : Set the points for drawing, defalut is 1000 test_rtp_draw draw : Draw the shape test_rtp_draw help : Get this help Example: test_rtp_draw set 100可以看到功能对应关系为test_rtp_draw calibrate对应 RTOS 的-ctest_rtp_draw draw对应 RTOS 的-dtest_rtp_draw set 点数对应 RTOS 的-p3.2 裸机下的校准与画点测试执行校准aic # test_rtp_draw calibrate后续的点击和结果输出与RTOS环境完全一致。执行画点测试aic # test_rtp_draw draw输出信息格式也基本相同会显示屏幕分辨率、采集点数以及实时的触摸事件和坐标。[I] test_get_fb_info()83 Screen width: 1024, height: 600 [I] rtp_draw()419 Try to read 1000 points from RTP ... Event type : down, Press 54 0: X 598/1702, Y 268/2263 ...4. 常见问题与调试心得最后分享几个我在测试中遇到过的坑和解决办法“Failed to open aic-rtp device”错误这个问题前面提过99%是因为LVGL占用了RTP设备。确保在menuconfig中已经关闭了LVGL Demo选项。如果确认已关闭还报错检查一下是否有其他应用程序在后台打开了触摸屏设备。坐标不准或反向如果画点测试时你往右划坐标却往左变或者上下颠倒这通常是屏幕的X、Y方向与RTP芯片的测量方向不匹配。这个问题一般需要在驱动层调整坐标转换的公式或者检查屏幕的接线是否正确。校准只能修正线性误差无法纠正方向错误。“Press: too light”频繁出现这说明按压的力度阈值设置得可能有点高。你可以尝试稍微用力按压或者如果条件允许可以查阅驱动代码看看是否有配置压感过滤阈值的地方适当调低。裸机和RTOS命令格式不同这个最容易搞混。记住一个规律RTOS下用带短横线-的参数如-c裸机下用子命令如calibrate。用错了系统会提示命令找不到或者参数错误。好了关于衡山派开发板RTP触摸屏的驱动测试流程就介绍到这里。实际操作一遍你会发现整个过程其实很清晰。先从环境配置和编译入手解决LVGL的冲突然后进行校准建立坐标映射最后通过画点测试验证触摸功能是否正常。遇到问题多看看串口打印的提示信息大部分都能找到线索。