ARMLCD屏调试2--ili9325驱动编写

2011-06-24 21:57:09

一,读id--完成

二,自己写了驱动--完成

三,调试LCD屏驱动--完成

 

 

 一         读id,不过过程还有点曲折。

         因为之前写命令写数据的时序是根据ili9325规格书P108来的,那么读也应该是这个方法。但是就是没法读出正确结果。为什么呢?于是我突然想到iar我曾经仅快速运行几行与程序整体运行起来,在这2种情况下,用示波器测他们引脚的频率是不同的。所以我把单次读id改成了循环读id。没想到真的ok了。循环了几十次后读出了id=0x9325.于是猜测是LCD屏不稳定,所以要读那么多次才能读出id。那么在三次reset后加上了50ms延时,再读,没想到1次就读出来啦。开心啊,休息下喝口水回来,又尝试了一次。结果200多次都读不出来了,于是我中途软件暂停再继续,马上在下一次就读出来了。我怀疑是在读的时序中可能太快了。反复10次吧!都是要中间手动暂停一下。于是我在时序中又在可以加nop的地方加了写nop。结果还是一样。我一定要暂停一下程序,才能读出。突然就没方向了。怎么这么不稳定啊。哎,这个问题可能和编译器有关系,我的目的主要是证明我可以根据规格书自己写时序。那么现在能读出正确的id,这关算过了,示波器也懒得开了,心中自有时序图。

二      写LCD屏驱动
        硬件没问题了,写时序之前也搞定了,可以进入下一步,即根据规格书写驱动时序。当然在些驱动时序前,我已经对ili9325的大多数寄存器都研究过了。那么根据ili9325的P99-P101页的配置流程指导。我写了版本1驱动。版本2驱动是为了验证版本1驱动中的某些单个寄存器配置是否正确而写。也算我的一个循序渐进的调试方法。

        版本1上电后效果:光是.h文件中的define就会了我2h的时间。接着根据规格书写了驱动代码LCD_init1()。上电后,有效果,不过是从上到下的。而且颜色很淡。总算能驱动屏,比我想象中的要好。

         版本2上电后效果,当然我还做了另外一个版本,就是根据出厂代码的配置寄存器的顺序,从我的初始化代码中把这些寄存器的配置给挑选出来,组成了一个LCD_init2(),也上电,发现效果和出厂配置基本一致。我做第二个版本的目的,是想确定我每一个单独的寄存器配置是否正确。那么验证成功。接着我要在我第一个版本上进行配置修改,特别可能哪些寄存器的顺序安排错了。

三      驱动代码调试

第一层次调试
关于LCD的驱动调试因为我当初有对规格书配置寄存器有2种理解。
1,如果寄存器R10h之前设置过。那么之前的设置值是否要添加到第二次设置值中呢?
我一开始理解为不要。可能是想象中,设置完后某些时序启动了,那么第二次再设置这个寄存器对某些已经设置过的位就不用再设置了。可以用0来覆盖。于是我写的LCD_init就是在根据规格书流程的基础上,再加上我这个设计思想。结果证明是错误的。
1,于是我启动了第二个思路。就是不能把之前为寄存器设置的值覆盖为0.第二次再设置这个寄存器的时候要把之前设置的值再设置一遍并且或上新的值。结果比较成功。能看出不同色的刷屏。但是刷屏的方向及颜色都与我的理论设想不对。

第二层次调试
但是显示的效果与我的设想是不同的,出现的现象为
1,显示的颜色明明让显示全红,它显示的是全蓝,绿色是对的,然后明明要全蓝,但是显示的是全红。那么我知道我的R03h的寄存器的BGR位一定设置反的。改了下。颜色显示正确了。

2,显示的是从底部往顶部的刷屏。我要的从顶部到底部的顺序刷屏。
1)检测SS,SM,GS位,配置的是从上到下啊?难道我的起始行配置错了。再仔细看看显示效果。原来效果是在大概310行开始一边往下填充,一边往上填充。让我想到了,我需要再设置一些值看看。接着我让SCN从0变为0A,那么应该从G240开始,也就是从上到下60行开始显示,接着效果是它从倒数第60行开始显示。怎么G320和G1的位置对换了?之前我研究寄存器的时候没发现哪个寄存器可以有这样的功能啊?
2)哦想起来了,gate行打开效果我检查过设置正确,但是enter方向是AM和I/D寄存器,快点去检查下。检查出来AM=0,I/D=3应该是对的,但是显示增么是从下到上,于是把I/D=0理论应该从下到上,但是结果是从上到下。虽然已经初步达到我要的效果,但是我要找出根本原因。发现ORG没配置,配置为0,结果一样。另外,仔细看效果后,发现最后有大概5行。是先显示的,然后再跳到首行。一定还有问题,难道是电极方向问题?应该没关系啊!
3)当我走头无路时,想来想去只能把目光再定位到方向设置方面的寄存器,再看看我对他们的定义是否正确。结果被我查出来,我的GS_1该为1<<15但是我定义的是1<<1.马上改下,看效果。yes!成功。

第三层次调试
仔细欣赏我调出的刷屏。效果不太好,我看出貌似这颜色数据更新的比较慢,同时可以看到3种颜色,于是想到到配置频率问题。把step-up circuit 1和step-up circuit 2的频率调快。ok,注意我gamma没有配置哦,以我非专业的水平去看显示效果,觉得已经和出厂配置的效果一样了。

LCD初始化驱动搞定。

 

posted @ 2019-04-27 10:54  clleady  阅读(455)  评论(0编辑  收藏  举报