WhyCan Forum(哇酷开发者社区)

我们能随心所欲"有问题百度(谷歌)一下", 这得感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2020-06-18 21:05:12

a32425262
会员
注册时间: 2018-05-06
累计积分: 65

荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

主芯片:v3s
主线linux内核4.13.16
由于主线已经自带了这个芯片的驱动了
打开这个驱动
添加设备树

ft6x06@38 {
                compatible = "focaltech,ft6236";
                reg = <0x38>;
                interrupt-parent = <&pio>;
                interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>;/*                
                irq-gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>;*/
                reset-gpios = <&pio 1 3 GPIO_ACTIVE_LOW>;
                touchscreen-size-x = <480>;
                touchscreen-size-y = <272>;
        };

现在遇到情况是,触摸能用,设备驱动也是有的
使用evtest测试也是可以的,但是点击一次,经常没有松开数据包提示
正常情况是,我点击屏幕之后,中断引脚会拉低,然后v3s会读取此时的触摸数据
但是我用示波器测试,触摸的时候,10ms一次中断,但是并不是每次中断都会读取数据(iic数据没信号)
然后我在驱动中添加了打印信息,证明示波器的测试是正确的
但是仔细看示波器发现,没有读取中断的时候,iic的时钟和信号有一点点的小毛刺,
首先,中断,iic信号线都添加了上拉电阻,观察示波器的波形也是比较好看的,
应该不是电源或者干扰的因素,
这个就很要命, 看起来就是丢包了,比如触摸一次,经常丢失了最后松开触摸的那个数据包,导致应用层以为一直在触摸没有松开
怎么搞好这个东西呢

最近编辑记录 a32425262 (2020-06-18 21:32:41)

离线

#2 2020-06-19 09:44:00

a32425262
会员
注册时间: 2018-05-06
累计积分: 65

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

调试进度更新:
在群友的指导下,
我就忽略了中断,采用线程定时读取的方式,
我的想法是10ms读取一次,但是现在的我在进程中延时10ms,
实际用示波器看的效果是,变成了30ms了,我把延时改成1ms,还是30ms读取一次
我把延时删除,就变成了连续读取了。。。
现在调试的结果就是,读取坐标就正常了,也能获取到松开触摸的数据了
点击触摸的话没问题,但是使用滑动触摸的话,坐标点就不太准确,毕竟是30ms读取一次了

static int thread_function(void *data)
{

    do {
        msleep(10);
        tc = 0; 
        edt_ft5x06_ts_isr(0, my_tsdata);//这个函数就是用于读取触摸数据的,本来是中断调用的,现在放在线程中
    }while(1);
    return tc;
}

最近编辑记录 a32425262 (2020-06-19 09:48:13)

离线

#3 2020-06-19 10:18:55

哦豁哦豁
会员
注册时间: 2020-01-17
累计积分: 45

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

这是在应用程序里面读吗?

离线

#4 2020-06-19 10:50:50

a32425262
会员
注册时间: 2018-05-06
累计积分: 65

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

这个是在驱动里面读的

哦豁哦豁 说:

这是在应用程序里面读吗?

离线

#5 2020-06-19 11:49:20

a32425262
会员
注册时间: 2018-05-06
累计积分: 65

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

调试进度更新,
使用山寨的做法,保留原来中断读取触摸数据的函数不动

新建一个线程,虽然我是延时10ms,但是实际看示波器是30ms读取一次

后面有时间再找找合理的解决方法吧

最近编辑记录 a32425262 (2020-06-19 13:53:32)

离线

#6 2020-06-19 18:53:55

a32425262
会员
注册时间: 2018-05-06
累计积分: 65

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

调试进度更新:
不采用中断得的方式,完全采用线程的轮询方式
内核的驱动线程中之前遇到的msleep不准
现在使用usleep_range(8000,10000);作为线程的延时函数
延时相对准确一点,实际用示波器观察,间隔约为10-12毫秒

---------------------------
论坛里里面有好几个用ft6336的,说是触摸不准,迟钝,的情况,应该也是类似的原因
用示波器查看INT和IIC的波形,是否每个INT,都有IIC的波形
我用以下命令查看触摸一次的中断次数

cat /proc/interrupts

实际发现有些时候没有进入中断
比如点击一次屏幕,一般ft6336一般有6次左右的中断,但是v3s经常会漏掉中断

PS:FT6336的INT连接到V3s的PB5

最近编辑记录 a32425262 (2020-06-19 19:01:58)

离线

#7 2020-06-19 19:54:34

linghaibin
会员
注册时间: 2018-01-07
累计积分: 23

Re: 荔枝派V3s FT6336U电容触摸驱动调试,会丢包或者不能进入中断

祝贺 群里看到的

离线

页脚

工信部备案:粤ICP备20025096号-1 Powered by FluxBB