当前位置:首页 > 工业控制 > 工业控制
[导读] 工业HMI(基于Linux,如i.MX6ULL/RK3568+Qt)的触摸屏驱动移植,难点不在“点亮”,而在“抗干扰”——车间里变频器、电机、焊机产生的电磁噪声会耦合进触摸屏的I2C/SPI接口,导致坐标跳变、误触发。下面以Goodix GT9271电容触摸屏(I2C接口,5点触控)在i.MX6ULL上的移植和校准为例。

工业HMI(基于Linux,如i.MX6ULL/RK3568+Qt)的触摸屏驱动移植,难点不在“点亮”,而在“抗干扰”——车间里变频器、电机、焊机产生的电磁噪声会耦合进触摸屏的I2C/SPI接口,导致坐标跳变、误触发。下面以Goodix GT9271电容触摸屏(I2C接口,5点触控)在i.MX6ULL上的移植和校准为例。

一、驱动移植:设备树配置与内核编译

GT9271是主流工业触控芯片,Linux内核自带了goodix.c驱动。移植只需三步:

1. 设备树节点:在i2c2总线下添加GT9271,配置中断引脚和复位引脚。

&i2c2 {

   clock-frequency = <400000>;

   pinctrl-names = "default";

   pinctrl-0 = <&pinctrl_i2c2>;

   status = "okay";


   gt9271@5d {

       compatible = "goodix,gt9271";

       reg = <0x5d>;

       interrupt-parent = <&gpio1>;

       interrupts = <13 IRQ_TYPE_EDGE_FALLING>;

       irq-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;

       reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;

       touchscreen-size-x = <1024>;

       touchscreen-size-y = <600>;

       touchscreen-inverted-x;

       touchscreen-swapped-xy;

   };

};

1. 内核配置:Device Drivers → Input device support → Touchscreens → Goodix GT9xx based touchscreens 设为<*>

2. 编译并替换dtb:make dtbs,拷贝到板子重启。dmesg | grep goodix 看到Goodix GT9271 device found即成功。

二、抗干扰触摸校准:去抖与滤波

工业环境下触摸屏的原始坐标常有毛刺。驱动层可以做两点处理:

1. 硬件滤波(I2C寄存器配置)

GT9271内部有滤波寄存器,上电时写入:

static int gt9271_set_filter(struct i2c_client *client) {

   u8 buf[3];

   // 配置去抖阈值(0x8047寄存器,值越大去抖越强)

   buf[0] = 0x80; buf[1] = 0x47; buf[2] = 0x0A; // 10次连续采样一致才上报

   i2c_master_send(client, buf, 3);

   // 配置噪声抑制(0x8048)

   buf[1] = 0x48; buf[2] = 0x03; // 中等抑制

   i2c_master_send(client, buf, 3);

   return 0;

}

2. 软件滑动平均(应用层或内核层)

在输入子系统中对坐标做中值滤波,消除单点跳变:

// 触摸点结构体维护最近5个坐标,取中值

#define MEDIAN_WINDOW 5

static int median_filter(int *buffer, int len) {

   int tmp[MEDIAN_WINDOW];

   memcpy(tmp, buffer, len * sizeof(int));

   // 简单排序取中

   for (int i = 0; i < len-1; i++)

       for (int j = i+1; j < len; j++)

           if (tmp[i] > tmp[j]) { int t = tmp[i]; tmp[i] = tmp[j]; tmp[j] = t; }

   return tmp[len/2];

}

在goodix_ts_report()函数中调用该滤波,再将结果上报input子系统。

三、校准流程:tslib或手动四点校准

虽然电容屏一般免校准,但工业HMI因面板厚度、贴合误差可能需要校准。使用tslib的ts_calibrate工具,生成pointercal文件。如果不想依赖tslib,可以自己实现四点校准:

// 四点校准:屏幕四个角显示十字,记录触摸坐标与物理坐标的映射

typedef struct { int x, y; } point_t;

point_t screen_pts[4] = {{50,50},{974,50},{50,550},{974,550}}; // 物理坐标

point_t touch_pts[4]; // 用户点击后记录


// 计算仿射变换矩阵(简化:仅缩放和平移)

float scale_x = (float)(screen_pts[3].x - screen_pts[0].x) / (touch_pts[3].x - touch_pts[0].x);

float offset_x = screen_pts[0].x - touch_pts[0].x * scale_x;

// 同理Y

将scale和offset写入配置文件,Qt的QWS_MOUSE_PROTO或libinput可以加载。

四、调试与验证

• 查看原始坐标:evtest /dev/input/event1 观察触摸点,看是否有跳变。如果跳变频繁,增大硬件去抖寄存器值或软件窗口大小。

抗干扰测试:在触摸屏附近运行手持电钻(模拟变频器干扰),触摸不应误触发。如果误触,检查I2C走线屏蔽和电源滤波。

• 校准精度:点击屏幕四角和中心,实际坐标与期望坐标偏差应<3mm。

五、三个翻车高发点

• 中断引脚没配上拉:GT9271中断是开漏输出,外部必须上拉(4.7kΩ到3.3V),否则中断丢失导致触摸无响应。

• I2C时钟频率太高:工业环境长走线,400kHz可能通信不稳定。降到100kHz或200kHz,并在SDA/SCL加10pF电容滤波。

• 复位时序不对:GT9271上电后需要先拉低复位引脚>10ms,再拉高,然后等待>100ms才能访问I2C。驱动中goodix_reset()函数必须满足该时序。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

消费级或康复训练系统常希望摆脱凝胶,但干电极并不是把湿电极换个外形那么简单。脑机接口使用干电极时,佩戴压力、接触稳定性和抗干扰能力会直接互相牵制。

关键字: 脑机接口 干电极 抗干扰

在科研创新飞速发展的今天,实验室作为科学探索的核心阵地,其管理效率、安全水平与科研质量直接决定了科研成果的产出效率。传统实验室依赖人工记录、纸质台账和手动盘点的管理模式,已难以适配现代科研对精准化、高效化、规范化的需求。...

关键字: 射频识别 抗干扰 数据驱动

家庭影院、企业办公、体育场馆等高密度无线场景,信号干扰与频谱浪费始终是制约网络性能的核心矛盾。Wi-Fi 7通过引入前导码打孔(Preamble Puncturing)与智能空间复用(Intelligent Spatia...

关键字: Wi-Fi 7 抗干扰

在工业控制、汽车电子等电磁环境复杂的领域,继电器作为关键的电信号切换器件,其输出端的抗干扰性能直接决定系统可靠性。电脉冲群干扰(EFT/B,对应GB/T 17626.4、IEC 61000-4-4标准)是模拟开关动作、继...

关键字: 继电器 脉冲群 抗干扰

激光雷达如同车辆的“数字眼睛”,以毫秒级响应捕捉道路环境的三维细节。然而,当多台激光雷达在密集车流中同时工作,或遭遇复杂电磁环境时,如何确保成像系统不被干扰信号“蒙蔽双眼”,成为决定自动驾驶安全性的核心命题。从实验室的精...

关键字: 汽车激光雷达 抗干扰

开关电源作为电子设备的核心供电单元,其工作稳定性直接决定整个系统的运行可靠性。在复杂的电磁环境中,开关电源既容易受到外部电磁干扰(EMI)的影响,自身也会产生高频干扰信号,导致输出电压波动、设备误触发甚至故障。因此,提升...

关键字: 开关电源 电磁干扰 抗干扰

在电力电子、工业控制及精密仪器等领域,转换器作为能量转换与信号处理的核心部件,其工作稳定性直接影响整个系统的可靠性。AC 电源抑制性能(Power Supply Rejection Ratio,PSRR)是衡量转换器抗电...

关键字: 转换器 电源 抗干扰

随着单片机技术应用发展,在应用过程中,如何防止外界的干扰,确保单片机安全可靠运行,是一个很重要的问题。我们在多项测控项目的实践中体会到,干扰源主要来自三个方面。一是空间场干扰,通过电磁辐射富入系统:二是电源干扰,它直接侵...

关键字: 单片机 抗干扰

在工业自动化与精密控制领域,编码器作为位置、速度反馈的核心传感器,其抗干扰能力直接影响系统稳定性。尤其在电磁环境复杂的工厂中,电磁兼容性(EMC)问题成为编码器可靠运行的关键挑战。本文将从增量式与绝对式编码器的特性出发,...

关键字: 编码器 抗干扰 EMC兼容性

在电子设备密集化、信号传输高速化的当下,电磁干扰(EMI)已成为影响系统稳定性的核心隐患。电磁兼容性(EMC)作为设备在复杂电磁环境中正常工作的关键指标,其性能优劣直接决定产品可靠性与市场竞争力。本文将从干扰源头分析、硬...

关键字: 电磁干扰 电磁兼容 抗干扰
关闭