广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    ILI9341控制的37pin-2.4寸TFTLCD液晶屏读不到ID

    来源:网络收集  点击:  时间:2024-08-05
    【导读】:
    本文记录寡人天昏地暗调试液晶一天:为啥读不到9341ID?温故而知新,反思走了哪些弯路。工具/原料moreIAR方法/步骤1/3分步阅读

    之前从网上淘了个DSO138示波器,上面有个贼大的2.4寸液晶屏看着很是诱人,37针的,PFC排线上印着Z240IT002字样,如下图;网上一搜能搜到一些资料,说是ILI9341驱动,某些商家还给了引脚定义,可以说良心大大滴好。

    2/3

    早就想把我那1.8寸的弱鸡lcd换了。今天板子到了迫不及待的焊接完毕,开始debug。这是我的硬件连接,没想太多什么FSMC啥的,直接用STM32F103V8T6的PE0~PE15连LCD的DB0~DB15,另外选了几个GPIO作CS,RS啥的。

    3/3

    网上关于这种液晶屏的例程也蛮多的,五花八门,我随便找了个例程搞到我的程序里,改了半天终于编译通过。但是下载进单片机没有显示,太正常不过了。调试了一下,发送读ID指令0xD3收到的几个字节都是0,测了所有引脚的信号都正常。这就怪了,又仔细梳理了时序:复位引脚给个负脉冲然后保持高,其他控制线都按照8080的时序来,还不放心又和各大论坛给的程序对比了一下,除了发现有些程序先送并口数据,再给WR低-高电平之外(正常先给WR低电平-送数据-拉高WR),其他没什么差别。可是程序就是读不出9341.

    方法/步骤21/3

    我对我的焊接向来很有信心的啊,不会脱焊和短路啊,而且也测了,各大引脚该低的时候都低了,该高也高了啊!那肯定不是硬件问题,是软件问题!

    会不会电平边沿之间没加延时呢?又开始改程序、编译、下载、debug。还是不行。

    又上网找其他人的例程,抄进来,编译修改debug-编译修改debug...仍然不见起色。

    又又上网脑补8080时序,STM32驱动TFT,ILI9341读不出ID,ILI9341的引脚连接,知道37pin的比40pin少了IM0~IM2 ,3个引脚,又从手册上查到,这3个引脚是用于设置通信模式的(SPI、8位并行、16位并行等等见下图);还查了FSMC怎么驱动的LCD云云...别个讲得是风生水起,头头是道,放在我的程序上就是脑壳晕肚皮痛,脚趾盖盖裂条缝。实在不知道为啥,心态逐渐发散。。。甚至开始怀疑LCD坏了。

    2/3

    突然想起经常检测元件好坏的法子,换到淘来的DSO138示波器上肯定能用撒,示波器测一下它的时序,这已经是终极办法了;就是干!又把LCD拆焊下来,装回原装产品。开机果然能显示。心态总算有点回收。

    3/3

    开着我的固伟一边把探头按在测试点,一边按复位开关,一边按触发,费劲是有点,总算把各大引脚的时序理出来了,和网上的和我的基本一致,关键是16位数据,细看下表,一排是DB15~DB0的信号电平,竖着是根据CS信号得到的数据的序号,就是说第二排的1100101100000000是第一个CS低区间单片机送到LCD的16位并行信号,第3排的是第二个CS低时送到LCD的信号,测了前面8个,奇怪的是低8位全是0,假如只看高8位,依次传送的是0xCF,0x00,0xC1,0x30,0xED,0x67,0x03,0x12。

    方法/步骤31/3

    回头再看例程中传送的数据如下图所示,正好是刚才测出来的!从此便是惊天地泣鬼神,我在哪儿我是谁。其他的不说,就按测出来的这种时序写程序一定能驱动起来。

    2/3

    现在来看,原来LCD只认DB15~DB8的数据。之前抄袭的程序都按照16位传送,送到低DB0~DB7去了。例如:按照我抄袭的程序0xCF送到LCD,其DB15~DB0是0x00CF,DB15~DB8=0了,难怪没反应呢。现在再改起程序来就得心应手了 ,找到问题了,只需要把要传送的数据左移8位即可,第一次可能正确的实验嘛,严格按照测得的时序来写:开始复位引脚拉低17ms(测出来的)后抬高,抬高163ms后开始读写操作。保证其他引脚时序正常,下载进去我久违的93终于出现了(下图)。cheers!

    3/3

    但这又回到以前的疑问,这块屏到底是16位还是8位?再翻这块屏的资料,前面已经查过了,IM0、IM1、IM2这些引脚是用来设置ILI9341通信方式的,现在手里这块屏是37pin的,就是下图中这块,没IM引脚。那咋知道8位还是16位?上网搜37pin的LCD也查不到。这就是最坑的地方,要是我早知道8位的就不用瞎改半天而徒劳无功了。

    方法/步骤41/1

    正在我高兴得把玩着我的LCD的时候,我隐约感觉:IM引脚可能在PFC上通过电阻设置好了,毕竟PFC上有几个0603和0402的贴片。见下图,大部分是电容,只有右上角有个0402电阻,旁边还有个0402空位没焊元件。巧合的是焊上的这个电阻名叫R8,没焊那个叫R16。嗯...只有两个电阻为啥不叫R1,R2呢?偏要叫8和16。难道没点意思?

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_1065921.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 23:54:00  耗时:0.024
    0.0241s