解决触摸屏 ft5x06 I2C 总线无法通讯问题

现象描述:

新平板产品量产过程中,工厂反映有1%的触摸屏出现无法正常工作。拿到不良的触摸屏后,通过分析系统启动的 log,发现触摸屏驱动已经加载,但是 probe 函数中打印无法找到 0x38 设备。0x38 设备就是 ft5x06 的设备从地址,证明 I2C 通讯没有成功。但是奇怪的是,这些不良的触摸屏在上一款硬件雷同的平板上可以正常工作。

原因分析:

I2C 通信不成功的原因无非以下几点:

  1. 通讯协议不正确。
  2. I2C从设备地址不正确
  3. I2C通讯线上没有加上拉电阻:由于I2C的从设备的SDA,SCL的PIN是输出开漏的,所以必须加上拉电阻,同时根据I2C设备的数量上拉电阻的大小也会不同。从1K~10K以上,当然不能太大,也不能太小。
  4. 电路干扰
  5. 通信时序

因为我们上一款平板的触摸屏驱动是由 RK 直接提供的,而且我们也量产1年时间,没有发现类似的问题。出问题的这款平板硬件跟上一版本的雷同,软件驱动也是一样的,所以认为软件驱动应该没什么问题,电气性的问题概率会大一点。

尽管如此,我还是重新检查了一遍触摸屏驱动,调整 I2C 速率,重新烧录后发现还是老样子。

决定去硬件组看看。硬件的同事用示波器观察了 I2C 的通信波形,发现出现了中间电平。数字电路不是只有高电平,低电平,1和0吗?怎么出来了一个中间电平了。什么是中间电平?例如芯片规格规定高电平是高于2.4V,电平低于0.4V,如果出现了1.4V的话,那就是中间电平了。

解决方案:

出现中间电平,可能是因为触摸屏内阻比较大,分压过大,造成低电平下不来。

可以通过修改上拉电阻,提高上拉电阻的分压比例,降低触摸屏内阻的分压比例,达到低电平降下来的效果。换10K上拉电阻,老样子,再换…直到换了一个50K的电阻之后,低电平果然就下来了,I2C 通信波形也很正常,触摸屏工作正常!但是50K上拉电阻的情况下,其它本来正常的触摸屏的波形就不是很好。这个方案不完美。

然后就考虑通过调整 CPU I2C 端口驱动电流来实现上拉电阻提高分压比例的方法,RK3188的 I2C 端口默认是 2 ma, 通过软件配置寄存器,将驱动电流调整为 4ma 后,波形正常了,不良的触摸屏也可以正常使用了。而且对其他正常的触摸屏也没有影响。

问题解决!

 

正式启用新域名 kevinems.com

最近的暑假项目接近尾声,稍微清闲,又开始折腾博客了。突然想换个域名,自己的独立博客就是随意折腾,反正也没什么朋友知道我的网站,折腾这个博客纯粹是想记录一些东西,然后就是更了解网络,仅此而已。

kevinems.com 这个是我的新域名,kevinems 和我在网络的 ID 一致,也方便我自己输入。useesee.com 这个域名8月份到期后将弃用。

WordPress 域名迁移很方便,网上大把教程。我没有做数据备份的情况下也轻松完成了迁移工作,当然这种不备份的习惯不太好。

同时安装了 WP-PostViews 插件,统计文章点击次数,我之前一直想去实现的功能。记得以前修改过一个 Z-BLOG 的首页文章幻灯片插件,吸引了大量 IP,那时看着文章点击次数上千,上万,挺爽的。

同时今天家里网络开通了,没想到我也能坚持了差不多9个月的时间家里没有网络,希望以后也不会太依赖网络,而影响工作和生活。

Android 原笔迹手写控件,压感,笔锋不可少!

手写控件相关文章:http://kevinems.com/tag/%E6%89%8B%E5%86%99

本人在好记星平板电脑 N818S 上开发的原笔迹手写控件,压感,笔锋都实现了,笔迹保存,还原,删除,放大,缩小,旋转,移动功能也实现了,控件的API简单易用,可以说是一个比较完善的控件了,并集成到 Framework,小有成就感啊。

当初需求统计,分析是就认定是一个相对复杂的控件,所以前期做了不少工作,后期编码实现的时候相对还算比较顺利。

这是第一次真正意义上遵循了标准的软件开发流程,开发效率果然提高不少。科学的开发方法,事半功倍。

流程大概:

  1. 需求统计
  2. 需求分析
  3. 概要设计
  4. 详细设计
  5. 编码
  6. 测试
  7. 软件交付
  8. 软件维护

平台:好记星 N818S,Android 4.2,汉王电磁屏,电磁笔

笔触效果:钢笔,铅笔,马克笔,毛笔

效果图:

一个终端培训师的作品~~~

PaintView

welcome

继续阅读Android 原笔迹手写控件,压感,笔锋不可少!

Google 开始推送 Android 4.4.4 升级,修复 OpenSSL 安全问题

尽管几周前才推出 Android 4.4.3 KitKat,但是今天 Google 又推送了最新的 Android 系统, Android 4.4.4 KitKat。

但是这次更新并没有带来新的功能,而是仅仅修复了安全性问题。

当然,安全性问题也很重要,谁也不希望自己的手机成为别人的肉鸡。这次更新的安全性问题主要针对之前引起恐慌的 OpenSSL 漏洞。同时 Chrome 浏览器和 WebView 也有小改动。

如果你不想等待 OTA 更新,可以自己下载最新的 KTU84P 固件,直接 fastboot 刷机。反正我是第一时间刷机了。也有人反映这个版本号不太吉利,准备等等,直接上 5.0 。

Android AlarmManager 唤醒睡眠中的机器

AlarmManager 的使用是 Android 初学者比学掌握的,网上教程一箩筐,这里就不罗嗦了。

这里有一个比较好的教程 Android – Creating an Alarm with AlarmManager

本文的重点是如何把休眠的机器唤醒,点亮屏幕并显示相关的界面。

但是值得注意的就是,AlarmManager 唤醒系统后,跑完相关程序后,又会继续休眠下去。

如果你需要像我一样,唤醒屏幕去显示闹钟界面,那就要加上 WakeLock。

WakeLock 相关源码:

private PowerManager.WakeLock wl;
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
...
... //The rest of the onCreate() is still the same (for now)
}

protected void onStop() {
super.onStop();
wl.release();
}

// 值得注意的是,WakeLock 必须 release, 具体位置可以自己安排

// 别忘了加上权限
uses-permission android:name="android.permission.WAKE_LOCK";

更多可以参考这里: Starting Activity from Sleeping Device

断网三个月

internet_service_down

享受了半年的免费电信宽带之后,电信终于把我的网络给停了。免费的享受惯了,突然要收费,甚是不爽,不如试一下没有网络的日子,加上老婆也不反对,没有网络的日子就一直持续到现在。差不多三个月的时间,生活似乎得到不少惊喜。

  1. 起码每天都能提前半个小时休息了
  2. 有更多的学习、锻炼时间了
  3. 与家人的交流时间得到保障了。不再是同处于一个房间,用 QQ 来交流了。。。
  4. 执行效率得到很大的提升
  5. 生活碎片化程度大大降低
  6. 节能减排

当然没有网络,有些依靠网络的事项相对有所限制。

  1. 不能及时跟进试试新闻
  2. 网络购物(好处是节流了)

因为上班的时候还是能上网的,所以对于网络有迫切需求的事项,还是能解决的。深圳很多政府、民生信息都已经网络公开化,赞一个。

总而言之,网络就是双刃剑。就目前的我来说,适当的断网,对我的生活起到很大的积极作用,所以,继续坚持下去。

2014 年第一跑

first_run_in_2014

自从来到深圳后,运动量剧减。为了将来的工作生活的身体本钱着想,终于下定决心出去跑动一下。希望能继续坚持下去。

就在附近的荔枝公园跑了两小圈,也累得够呛。3公里、30分钟这个数据挺好的。。。哈哈哈。。。

很高兴能迈出第一步,所以我第二天就给自己奖励了一双跑鞋,哈哈哈。。。

冠军终归这里!恒大夺2013亚冠冠军

感谢恒大,感谢里皮。让我重拾足球的乐趣。

P.S. 这场秦升很有存在感。。。65岁的里皮看似漠不关心地向27岁的秦升一瞥,眼前全是马特拉齐的影子……深藏功与名。

北京时间11月9日20时,2013赛季亚冠联赛决赛第二回合在广州天河体育场打响。代表中国出战的广州恒大迎战韩国豪门首尔FC。58分钟,埃尔克森接穆里奇妙传单刀赴会首开纪录。62分钟,首尔外援德扬门前一脚低射将比分追为为1-1。最终恒大1-1战平首尔,两回合总比分3-3,依靠客场进球多的优势夺得亚冠联赛冠军。这也是中国足球职业化之后夺得的首个亚冠联赛冠军。

继续阅读冠军终归这里!恒大夺2013亚冠冠军