天嵌 ARM开发社区

 找回密码
 注册
楼主: heycare

基于2440开发板移植ft5x06系列的电容屏驱动

[复制链接]
 楼主| heycare 发表于 2012-11-21 15:02:33 | 显示全部楼层
i2c-adapter i2c-0: master_xfer[0] W, addr=0x38, len=1
write mode
s3c2440-i2c s3c2440-i2c: START: 000000d0 to IICSTAT, 70 to DS
s3c2440-i2c s3c2440-i2c: iiccon, 000000e0
s3c2440-i2c s3c2440-i2c: ack was not received
s3c2440-i2c s3c2440-i2c: STOP
s3c2440-i2c s3c2440-i2c: master_complete -6
s3c2440-i2c s3c2440-i2c: incomplete xfer (-6)
[TSP]i2c_write_interface error line = 99, ret = -6
[TSP] firmware version = 0x81

出现了没收接收到ACK信号,这是怎么造成的呢
embedsky_lhh 发表于 2012-11-21 15:03:59 | 显示全部楼层
heycare 发表于 2012-11-21 14:47
那中断号的选择呢?

那个已经设置好了,肯定是没问题的,你的屏应该也有个外部中断的线接过来,触摸事件靠那个触发,IIC那个系统里边设置好了,你修改了就影响别的IIC设备了,
 楼主| heycare 发表于 2012-11-21 19:47:15 | 显示全部楼层

i2c-adapter i2c-0: master_xfer[0] W, addr=0x38, len=1
write mode
s3c2440-i2c s3c2440-i2c: START: 000000d0 to IICSTAT, 70 to DS
s3c2440-i2c s3c2440-i2c: iiccon, 000000e0
s3c2440-i2c s3c2440-i2c: ack was not received
s3c2440-i2c s3c2440-i2c: STOP
s3c2440-i2c s3c2440-i2c: master_complete -6
s3c2440-i2c s3c2440-i2c: incomplete xfer (-6)
[TSP]i2c_write_interface error line = 99, ret = -6
[TSP] firmware version = 0x81
为什么主机收不到ACK信号呢
 楼主| heycare 发表于 2012-11-23 09:20:59 | 显示全部楼层
我的电容屏 现在可以读出坐标了
cat /dev/event0 有数据了。
虽然电容屏不用校准,但是我执行校准程序,光标没移动,串口输出selected device is not a touchscreen I understand
embedsky_lhh 发表于 2012-11-23 09:24:06 | 显示全部楼层
你改下etc/profile文件,里边的ts的环境变量修改下,修改成你对应的设备
 楼主| heycare 发表于 2012-11-23 09:29:01 | 显示全部楼层
export set HOME=/root
export set QTDIR=/opt/qt-4.5
export set QPEDIR=/opt/qt-4.5
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
if [ -f /sys/devices/virtual/input/input0/uevent ] ; then
        export set TSLIB_TSDEVICE=/dev/event0
        export set TSLIB_CALIBFILE=/etc/pointercal
        export set TSLIB_CONFFILE=/etc/ts.conf
        export set TSLIB_PLUGINDIR=/lib/ts
        export set QWS_MOUSE_PROTO="TSLIB:/dev/event0 Intellimouse:/dev/mouse0"
else
        export set QWS_MOUSE_PROTO="Intellimouse:/dev/mouse0"
fi
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH


我的/etc/profile如上,已经改成触摸屏对应的设备了
embedsky_lhh 发表于 2012-11-23 09:32:42 | 显示全部楼层
主要是这几句       export set TSLIB_TSDEVICE=/dev/event0
        export set TSLIB_CALIBFILE=/etc/pointercal
        export set TSLIB_CONFFILE=/etc/ts.conf
        export set TSLIB_PLUGINDIR=/lib/ts
你检查你的设备名是不是/dev/event0
最关键的是/sys/devices/virtual/input/input0/uevent  存在与否,如果不存在,就这几句shell没执行,没执行的话就是tslib默认的参数,可能会出错,所以你得检查这些路径所在的文件存不存在/etc/pointercal 可以不存在
 楼主| heycare 发表于 2012-11-23 09:37:48 | 显示全部楼层
1、执行cat /dev/event0 按下电容屏,串口输出数据,【乱码】
2、/sys/devices/virtual/input/input0/uevent是存在的
[root@EmbedSky /sbin]# cat /sys/devices/virtual/input/input0/uevent
PRODUCT=0/0/0/0
NAME="ft5x0x_ts"
EV==b
KEY==400 0 0 0 2000000 0 40000800 40 0 0 0
ABS==650000 0
MODALIAS=input:b0000v0000p0000e0000-e0,1,3,k8B,9E,D9,14A,ra30,32,35,36,mlsfw

你说的一些可能问题,我已经排除了,
embedsky_lhh 发表于 2012-11-23 09:39:36 | 显示全部楼层
你内核和文件系统都是天嵌科技提供的吗?
 楼主| heycare 发表于 2012-11-23 09:40:53 | 显示全部楼层
embedsky_lhh 发表于 2012-11-23 09:39
你内核和文件系统都是天嵌科技提供的吗?

是的,我是使用TQ2440的
1、内核是Linux2.6.30,在这基础上添加电容屏驱动,并把之前的电阻屏驱动给屏蔽掉。
2、文件系统是qt-4.5 天嵌提供的
embedsky_lhh 发表于 2012-11-23 09:45:59 | 显示全部楼层
heycare 发表于 2012-11-23 09:40
是的,我是使用TQ2440的
1、内核是Linux2.6.30,在这基础上添加电容屏驱动,并把之前的电阻屏驱动给屏蔽 ...

如果以上问题都排除了,应该就是你驱动里边上报的子系统的事件搞错了,
 楼主| heycare 发表于 2012-11-23 09:54:47 | 显示全部楼层
embedsky_lhh 发表于 2012-11-23 09:45
如果以上问题都排除了,应该就是你驱动里边上报的子系统的事件搞错了,

能否说得再详细点,我不是很能理解
embedsky_lhh 发表于 2012-11-23 09:59:10 | 显示全部楼层
你注册到input里边的事件和上报的内容,如果你报成多点,和注册成多点,上报的不是压力事件和触摸事件,ts肯定是接收不到的,这个是做input驱动的基础知识,不会可以参照天嵌科技内核自带的电阻屏的方式上报
 楼主| heycare 发表于 2012-11-23 16:20:25 | 显示全部楼层
刘工。 我已经在驱动里面加入了key和code注册,并且在触摸屏按下和提起的时候 report数据了
现在ts_calibrate不会显示selected device is not a touchscreen I understand的问题了。但是运行ts_calibrate光标没移动啊
注册的代码 和上报机制如下:
init:
        input_dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS);
        input_dev->keybit[BITS_TO_LONGS(BTN_TOUCH)] = BIT(BTN_TOUCH);
        input_set_abs_params(input_dev, ABS_X, 0, 800, 0, 0);
        input_set_abs_params(input_dev, ABS_Y, 0, 480, 0, 0);
        input_set_abs_params(input_dev, ABS_PRESSURE, 0, 1, 0, 0);

触摸屏按下上传坐标代码如下:

input_report_abs(data->input_dev, ABS_X,  _st_finger_infos[i].i2_x);
input_report_abs(data->input_dev, ABS_Y,  _st_finger_infos[i].i2_y);
input_report_key(data->input_dev, BTN_TOUCH, 1);
input_report_abs(data->input_dev, ABS_PRESSURE, 1);
input_sync(data->input_dev);
触摸屏提起代码如下:
input_report_abs(data->input_dev, ABS_X, _st_finger_infos[i].i2_x);
input_report_abs(data->input_dev, ABS_Y, _st_finger_infos[i].i2_y);
input_report_key(data->input_dev, BTN_TOUCH, 0);
input_report_abs(data->input_dev, ABS_PRESSURE, 0);
input_sync(data->input_dev);
embedsky_lhh 发表于 2012-11-24 09:24:58 | 显示全部楼层
你在驱动里边打印下上报的内容,看你在不同点触摸时是否出现不同的上报内容,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 07:26 , Processed in 1.025430 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表