BeagleBone Black设计:BBB底板添加电容屏和tslib测试!
[复制链接]
本帖最后由 anananjjj 于 2014-5-20 15:45 编辑
我的摇杆用到了ADC采样,而自带电阻屏用到ADC,不知道为什么,他工作突然不正常了!于是我添加电容屏!
原理图比较简单:I2C2加中断引脚即可!
首先,下载ft5x0x芯片的驱动!
放置在内核源码位置:
drivers/input/touchscreen/ft5x0x_ts.c
drivers/input/touchscreen/ft5x06_ts.c
include/linux/i2c/ft5x06_ts.h
include/linux/earlysuspend.h 这些都来自Android源码中,我在网络上搜索下载的!
其中测试ft5x0x_ts.c不是很好用!
所以最后决定使用ft5x06_ts.c
ft5x0x.zip
(7.65 KB, 下载次数: 25, 售价: 1 分芯积分)
FocalTech_FT5x16_DataSheet__V0.1_-Preliminary.pdf
(518.79 KB, 下载次数: 36)
然后就是编辑drivers/input/touchscreen 目录下的Kconfig与Makefile文件:
在Kconfig文件中添加:
在Makefile中添加:
这样在编译内核的配置菜单中就有触摸屏的选项了!
接下来修改板级文件:arch/arm/mach-omap2/board-am335xevm.c:
添加:
/* Pin mux for captive touch screen */
static void cap_tsc_init(int evm_id,int profile)
{
setup_pin_mux(cap_tsc_pin_mux); return;
}
//触摸 2014年5月19日
static void bone_tsc_init(int evm_id, int profile)
{
int err;
setup_pin_mux(tsc_pin_mux);
err =am33xx_register_mfd_tscadc(&tscadc); if (err)
pr_err("failedto register touchscreen device\n"); }
之后在I2C2中添加设备地址:
static struct i2c_board_info __initdatacape_i2c_boardinfo[] = { {
I2C_BOARD_INFO("tlv320aic3x",0x1b), },
{
/*FT5x06 Touch Screen Controller */ I2C_BOARD_INFO(FT5X0X_NAME,0x38), // .irq =OMAP_GPIO_IRQ(CAP_TSC_INT),//将引脚设为中断,针对ft5x0x_ts },
}
再在初始化结构中添加对应函数:
OK!
开始编译内核!!
具体编译内核操作就不再赘述了,以前就讲过!
注意配置菜单:
这是以前的截图,应该选择的是最后一个!
一路编译下去,将内核放入BBB板中!
启动,通过自己扩展的U转串,观察启动信息!
可以看到,驱动初始化成功!
进入文件系统,可以观察到:
/dev/input/下面有event0设备!
这个到底是不是呢?
再看看/sys/devices/virtual/input/目录
发现了启动信息里面的input0
进入input0
执行:
# cat uevent
就是我添加的电容屏设备了!
对应的就是event0
为了测试我的电容屏是正常的,进入目录/dev/input/
执行#cat event0 | hexdump 当我轻轻触摸电容屏之后,屏幕出现了如下信息:
至此,我的触摸屏正常工作了!
接下来就是添加tslib来进一步测试我的电容触摸屏工作情况!
Tslib库编译比较容易,网上教程较多:
简单说一下:
2.1将 tslib_master.tar.gz,拷到Ubuntu下,解压:
tar zxvf tslib_master.tar.gz
2.2安装 autoconf、automake、libtool 包
#sudo apt-get install autoconf
#sudo apt-get install automake
#sudo apt-get install libtool
#sudo apt-get install g++
2.3进入tslib目录:
cd tslib
2.4设置环境变量
已经设置好!这个在编译内核时就搞定了
2.5在tslib目录下运行脚本
./autogen-clean.sh
./autogen.sh
export ac_cv_func_malloc_0_nonnull=yes
export PATH=`pwd`:$PATH
2.6用configure 生成Makefile.
./configureCC=/usr/local/ti-sdk-am335x-evm/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-gccCXX=/home/user/toolchain/linaro/bin/arm-linux-gnueabi-g++--host=arm-linux--prefix=/usr/local/tslib --enable-shared=yes --enable-static=yes
2.7 编译安装
make
make install
2.8编译完成后检查主机目录 ‘/usr/local/tslib
修改etc文件夹下的‘ts.conf’,去掉“# module_raw_input”中的#号和空格。
然后将整个tslib文件夹,下载到开发板的对应路径下(/usr/local)。
2.9、开发板配置环境变量
通过超级终端,# vi /etc/profile
添加如下内容:
-------------------------------------------------------------------------------------------------------
export TSLIB_TSEVENTTYPE=INPUT
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none
export TSTS_INFO_FILE=/sys/devices/virtual/input/input0/uevent
export QWS_MOUSE_PROTO=tslib:/dev/input/event0
export PATH=$PATH:/usr/local/tslib/bin
板子上电,进入目录:/usr/local/tslib/bin
执行./ts_calibrate 可以看到:
触摸屏校准成功喽!
试一试ts_test
完美支持!至此,我的电容屏完全可以使用了!
上一段测试视频:
接下来彻底换下电阻屏,然后调节串口程序接受无线数据,
并添加摇杆和Qt程序,最后再去攻克MySQL吧!
|