[其它应用] 中颖MCU刷TFT彩屏 — 第二篇

[复制链接]
3258|10
手机看帖
扫描二维码
随时随地手机跟帖
NJZR|  楼主 | 2021-10-22 00:06 | 显示全部楼层 |阅读模式
    距离国庆期间发的第一篇过去了二十几天,第二版的PCB早就做好了,这几天焊接调试忙得不亦乐乎,今晚终于基本成型了,虽然最终完全按上篇预告的内容完成目标甚至刷新率还远超预计,但期间也遇见了各种奇怪问题,现将过程和心得与大家共享。
    老规矩,先上裸.................板!
微信图片_20211021212842.jpg 微信图片_20211021212928.jpg
    第一版因为要验证用595同时驱动128颗LED,所以板子做得略大,这次版本纯粹奔着验证图形性能去的,所以又紧凑了些。

使用特权

评论回复
NJZR|  楼主 | 2021-10-22 00:14 | 显示全部楼层
本帖最后由 NJZR 于 2021-10-22 00:16 编辑

   焊接完毕,用第一版的程序想稍做修改把屏先亮起来,结果就卡在这了,怎么折腾屏幕都是没有反应,因为这次使用了8位总线方式驱动(第一版是16位方式),设计硬件时还特意跟某宝屏幕卖家沟通确认过想必应该没啥问题了,但屏幕就是没动静读ID也没反应,一度我都怀疑新买的这个屏是不是坏的。
下面是卖家提供的原理图局部
未标题-1.jpg
    这个屏是8位/16位兼容的,这个11脚虽然标着NC但看上去就应该是接口选择引脚,跟卖家沟通确认后才画的板子。
这一卡就是近一天的时间,不得已我把粘好的屏又从PCB上翘下来,老电工开始怀疑自己的焊接是不是有问题,太打击人了! ^_^
    既然把屏翘下来了,顺便仔细检查一下FPC是不是有折弯损伤吧,这一检查就发现问题了,下面是FPC的照片,看看谁能发现问题。
微信图片_20211021235318.jpg
电阻R1、R2字符旁边多了8和16两个数字,莫非.....难道.....?插上烙铁立刻开动把零欧电阻换到8那边去,再上电瞬间图象它出来了,这时内心激动程度丝毫不亚于第一版屏幕出图象的时候,实践证明这款屏的IM0端口根本没有引出,而是直接在FPC上完成不同通讯接口的设置。

   

微信图片_20211021212959.jpg
微信图片_20211021212951.jpg

使用特权

评论回复
NJZR|  楼主 | 2021-10-22 09:52 | 显示全部楼层
本帖最后由 NJZR 于 2021-10-22 10:19 编辑

微信图片_20211021212959.jpg 微信图片_20211021212951.jpg
    焊接完毕,用第一版的程序稍做修改想把屏先亮起来,结果就卡在这了,怎么折腾屏幕都是没有反应,因为这次使用了8位总线方式驱动(第一版是16位方式),设计硬件时还特意跟某宝屏幕卖家沟通确认过想必应该没啥问题了,但屏幕就是没动静读ID也没反应,一度我都怀疑新买的这个屏是不是坏的。
下面是卖家提供的原理图局部,那个标着NC的引脚每一个毛孔都散发着IM0的气息,画板前与卖家沟通后也得到了证实
未标题-1.jpg
    这一卡就是近一天的时间,不得以我把粘好的屏又从PCB上翘下来,老电工开始怀疑自己的焊接是不是有问题,太打击人了! ^_^
既然把屏翘下来了,顺便仔细检查一下FPC是不是有折弯损伤吧,这一检查就发现问题了,下面是FPC的照片,看看谁能发现问题。
微信图片_20211021235318.jpg
    电阻R1、R2字符旁边多了8和16两个数字,莫非.....难道.....?插上烙铁立刻开动把零欧电阻换到8那边去,再上电瞬间屏幕有反应了,这时内心激动程度丝毫不亚于第一版屏幕出图象的时候,并且有种想把卖家拖出来摩擦一下的冲动!实践证明这款屏的IM0端口根本没有引出,而是直接在FPC上完成不同通讯接口的设置。

使用特权

评论回复
NJZR|  楼主 | 2021-10-22 10:14 | 显示全部楼层
本帖最后由 NJZR 于 2021-10-22 10:16 编辑

    屏幕亮了就好办,按即定思路修改程序,可屏幕显示字符正常而图象总是花的,这没理由啊!于是开始怀疑自己写的PC端图片文件处理程序、FLASH烧写器,一顿检查都正常的,用示波器一看W25Q32JV的4I/O只有一个脚出数据,难道是芯片坏了?可烧写和校验过程都是正常的啊,难道这芯片没有起用QE位?JV版本的出厂就应该QE=1才对啊?找来几片同时购买的片子读STATUS字节果然也有几片QE为零甚至还有烧写了保护位的,看来又被无良商家坑了!也怪我贪便宜,这个肯定是翻新货无疑了,而且是不专业的翻新!
    改写QE后久违的图片出现了,一切顺利达到了42FPS刷新率,接下来继续优化刷屏的循环,最终达到了71FPS的水平,连我自己也有些意外,当然此时MCU除了刷屏基本干不了其它大事了,下面是实测FLASH的片选引脚波形
微信图片_20211021212941.jpg
上图中一个低电平周期刷一帧图象时间大约是14mS,每秒10帧图象,也就是每幅图象后有八十多毫秒可以做其它任何事,当然快速的即时性中断任务也可以随时执行,对刷屏基本没影响。这也再次验证了速度就是王道,什么同步也不用,刷屏期间中断也没事,只要你够快对显示就没有肉眼可见的影响。下面是刷动态图的视频,因为存储容量限制所以如上所述使用了比较低的帧率10FPS。




使用特权

评论回复
NJZR|  楼主 | 2021-10-22 10:18 | 显示全部楼层
    在第一篇发出后好几个朋友提了触摸屏的事,所以这一版把触摸屏也加上了,目前已经可以正确采集触摸坐标,坐标的处理和结果反馈部分程序还没开始写,等有空做好了再来补充。这里简单聊聊触摸屏的驱动方法,用触摸芯片?不可能的!我是恨不得一分钱掰两半花的人,直接用MCU端口来驱动!电阻触摸屏其实就相当于两个电位器,按下屏幕后等于将两个电位器的滑动端短接起来,而按压的位置就决定了XY两个电位器滑动端的位置,了解了原理后驱动它就是个简单的任务了,基本程序思路如下:
1)检测是否按下:将Y+、Y-引脚设置为输出低电平,将X-设置成输入带弱上拉,X+为高阻输入,测试X+电平如果为1说明没有触摸可以干其它事了,如果为零说明屏幕被按下,继续下面步骤。
2)测量Y坐标:Y+Y-保持输出,但将Y+输出高电平,X-设置成高阻输入,对X+引脚进行ADC,得出的值正比于触摸点在屏幕上的位置。
3)测量X坐标:与第二步类似,只是X+X-接高低电平从Y+或Y-做AD转换,得到X坐标值。
测量的值不会正好与屏幕分辨率一样,屏幕的零点也不会在触摸屏的边缘,所以屏幕零点和对角需要进行校准计算,这点线性计算相信大家都能轻车熟路,就不在这继续罗嗦了。
    至此,细心看贴的朋友应该已经发现我还没说的东西了,现在我正在调试努力提高帧率,争取明天来补充或发新贴,给自己加油!也给大家加油!

使用特权

评论回复

评论

NJZR 2021-10-22 19:21 回复TA
@WoodData :当然有,不过是汇编写的而且3213的ADC操作有些复杂,你要参考的话告诉我,我发给你 
WoodData 2021-10-22 15:53 回复TA
这个触摸处理有源码吗? 
WoodData| | 2021-10-22 15:53 | 显示全部楼层
这个不错啊

使用特权

评论回复
trucyw| | 2021-10-22 19:43 | 显示全部楼层
屏幕FPC实物一看,果然电阻可以控制8/16

使用特权

评论回复
z7323413| | 2021-10-25 07:18 | 显示全部楼层
求大神开源!

使用特权

评论回复
george911| | 2021-10-26 11:05 | 显示全部楼层
也要能买到中颖芯片才有用啊。

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则