经过快一个礼拜的时间,终于把NS2009的触摸问题搞好了。遇到好几个问题。下面暗改描述一下:
1.硬件-->歪朵拉TINY200 V1版本。
2.软件模拟IIC驱动 NS2009
3.在刚开始的时候读取NS2009的AD数据出错(在晕哥群里问了,晕哥居然不鸟我,这是个忧伤的故事....),后来发现是我IIC有一个地方,方向设置错了.
4.读出数据后开始的时候自己写了一份校准程序(效果惨不忍睹,ps:算法的问题,我等凡夫俗子还是摸不着道道)
5.使用正点原子的校准算法,发现触摸的效果整体向上偏移,(划一条水平方向直线的时候,大概整体Y轴30个像素点左右),我看了原子的代码,其中有一个问题就是他的算法默认A和B(C和D的也是)的Y轴读取ADC接近相等(XPT2046的确是这样,NS2009这操蛋玩意却差的有点多)
A B
C D
6.在21 IC上面找到一份 利沃夫伊万弗兰科 (Lviv Polytechnic) 国立大学 Svyatoslav应用程序工程师写的3点校准代码发现效果很不错(缺点是:小的早点还是有,不是柔丝般顺滑)如下图:
7.NS2009 读取AD代码如下:
离线
感谢楼主分享!楼主继续加油。(字数应该够了)
离线
感谢楼主分享!楼主继续加油。(字数应该够了)
离线
感谢分享!
离线
不错,我也准备画个板子,触摸就用这个IC了
离线
有没有NS2009 驱动程序啊
离线
雷鹏 wrote:
有没有NS2009 驱动程序啊
上图已经贴出NS2009的读取AD程序了。你读取两个通道就行了,一个X通道,一个Y通道。
然后NS2009校准,把模拟量按照转换关系转换为像素位置即可
离线
这个校准后数据保存到flash了吗
离线
电阻屏就是麻烦点 但是便宜 TINY200 V1也因为触摸也折腾好久
离线
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
离线
armstrong wrote:
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
能提供一份 IIC驱动触摸芯片 NS2009 代码不 我用的是 F1C200s 代码下载进去不能校准。
离线
看视频上已经够灵敏了
离线
感谢分享!
离线
我也模拟了I2C驱动NS2009,能读取到X,Y坐标值,但是 IRQ 管脚 一直低电平,难道发送命令错误?发送命令参考老大的NS2007
离线
感觉用ns2009的好少呀
离线
xzyang wrote:
感觉用ns2009的好少呀
其实有很多人用的,都在默默的赚钱,没有公布而已
离线
xzyang wrote:
我也模拟了I2C驱动NS2009,能读取到X,Y坐标值,但是 IRQ 管脚 一直低电平,难道发送命令错误?发送命令参考老大的NS2007
IRQ要上拉的,你看下你是不是按下没有弹开?用示波器看下波形
离线
找到原因了,屏框压着触摸了,一直进中断,程序没问题,白忙活一天。淘宝买的屏框,边框有点大,不太合适。
离线
为啥不直接移植tslib的呢,这个触摸库非常完善
离线
armstrong wrote:
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
是用的中断加状态机吧?
离线
wupaul2001 wrote:
为啥不直接移植tslib的呢,这个触摸库非常完善
没有试过裸机移植tslib.我没有上linux
离线
@armstrong
你好, 这个可以分享下源代码么?触摸搞好久没搞好!
离线
离线
哎,弄了好久,IIC 一直读不到,怀疑芯片坏了
离线
楼主可否分享下,完整版的NS2009驱动和矫正程序,最近在折腾这个NS2009,谢谢了
离线
正想寻找NS2009的驱动,谢谢
离线
@雷鹏
这个是固件还是工程代码
离线
哎,弄了好久,IIC 一直读不到,怀疑芯片坏了
离线