经过快一个礼拜的时间,终于把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 驱动程序啊
离线
有没有NS2009 驱动程序啊
上图已经贴出NS2009的读取AD程序了。你读取两个通道就行了,一个X通道,一个Y通道。
然后NS2009校准,把模拟量按照转换关系转换为像素位置即可
离线
这个校准后数据保存到flash了吗
离线
电阻屏就是麻烦点 但是便宜 TINY200 V1也因为触摸也折腾好久
离线
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
离线
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
https://whycan.cn/files/members/1592/F1C100s_RTX_emWin_LCD480x272_NS2009.mp4
能提供一份 IIC驱动触摸芯片 NS2009 代码不 我用的是 F1C200s 代码下载进去不能校准。
离线
看视频上已经够灵敏了
离线
感谢分享!
离线
我也模拟了I2C驱动NS2009,能读取到X,Y坐标值,但是 IRQ 管脚 一直低电平,难道发送命令错误?发送命令参考老大的NS2007
离线
感觉用ns2009的好少呀
离线
感觉用ns2009的好少呀
其实有很多人用的,都在默默的赚钱,没有公布而已
离线
我也模拟了I2C驱动NS2009,能读取到X,Y坐标值,但是 IRQ 管脚 一直低电平,难道发送命令错误?发送命令参考老大的NS2007
IRQ要上拉的,你看下你是不是按下没有弹开?用示波器看下波形
离线
找到原因了,屏框压着触摸了,一直进中断,程序没问题,白忙活一天。淘宝买的屏框,边框有点大,不太合适。
离线
为啥不直接移植tslib的呢,这个触摸库非常完善
离线
那我这个固件测试看看,会不会跳点:
F1C100s_RTX_emWin_LCD480x272_NS2009.zip
用F1C100s硬件IIC的,充分利用中断的方式开发,不用浪费高速CPU死循环检测INT_FLAG标志!也不是用os_delay插在循环中。
https://whycan.cn/files/members/1592/F1C100s_RTX_emWin_LCD480x272_NS2009.mp4
是用的中断加状态机吧?
离线
为啥不直接移植tslib的呢,这个触摸库非常完善
没有试过裸机移植tslib.我没有上linux
离线
@armstrong
你好, 这个可以分享下源代码么?触摸搞好久没搞好!
离线
离线
哎,弄了好久,IIC 一直读不到,怀疑芯片坏了
离线
楼主可否分享下,完整版的NS2009驱动和矫正程序,最近在折腾这个NS2009,谢谢了
离线
正想寻找NS2009的驱动,谢谢
离线
@雷鹏
这个是固件还是工程代码
离线