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初始化驱动搞定。

ARMLCD屏调试2--ili9325驱动编写的更多相关文章

  1. win7下自写驱动导致开机蓝屏调试过程

    之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来.   问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程:   使用 ...

  2. liunx中字符驱动编写的简单模板

    下面是关于字符驱动两个程序,主要是说明驱动编写的思想,理解驱动是怎么一步一步被实现的. 驱动的第一个实现程序,是相对于裸机编程的,主要是体会一下驱动编程思想: cdev.h: 所包含的头文件 #ifn ...

  3. AM335x(TQ335x)学习笔记——触摸屏驱动编写

    前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱 ...

  4. v4l2驱动编写篇【转】

    转自:http://blog.csdn.net/michaelcao1980/article/details/53008418 大部分所需的信息都在这里.作为一个驱动作者,当挖掘头文件的时候,你可能也 ...

  5. nand flash详解及驱动编写

    https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...

  6. IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试

    IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试 目的不是为了编写TSC2007驱动,是为了学习IIC驱动的编写,读一下TSC2007的ADC数据进行练习,, Linux主机驱动和外设驱 ...

  7. linux设备驱动编写入门

    linux设备驱动是什么,我个人的理解是liunx有用户态和内核态,用户空间中是不能直接对设备的外设进行使用而内核态中却可以,这时我们需要在内核空间中将需要的外设驱动起来供用户空间使用.linux的驱 ...

  8. Tiny4412之串口(Uart)驱动编写

    一:tiny4412串口驱动编写 1.串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口 ...

  9. windbg源码驱动调试 + 无源码驱动调试

    windbg源码驱动调试   环境信息 虚拟机:win7 32位 windbg:6.12(版本不存在太大影响) 设置过程 windbg与虚拟机连接:链接 配置windbg 配置好双机调试后,点击win ...

随机推荐

  1. JS基础学习1

    1 JS 概述 一个完整的javascript实现是由以下3个不同部分组成的: (1)     核心(ECMAscript) (2)     文档对象模型(DOM)  Document object ...

  2. HBase scan 时 异常 ScannerTimeoutException 解决

    org.apache.Hadoop.hbase.client.ScannerTimeoutException: 60622ms passed since the last invocation, ti ...

  3. 08_ for 练习 _ sumOf7

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 3.2station

    题意火车进入,然后要求以最大字典序输出 解题思路:先用一个数组储存当前位置之后最大的数字是什么,然后把已经进站的最后一节火车和还没进站的车的最大值,哪个更大,如果已经进站的更大,那么就先出站,否则就先 ...

  5. 太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

    面试攒经验,let's go! 值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察js算法 ...

  6. Visual Studio 2012编译的程序无法在XP下运行的解决办法【转】

    最近看到一篇<Windows编程革命简史>,想到以前刚开始用VS2012的时候,编译的程序在其他人那无法运行,一查才知道是VS2012本身不支持XP.当然现在微软早已在VS2012 Upd ...

  7. java基础 第七章课后习题

    1.改正后的应该为: String [] scores= new String[5];    或者 String [] scores={ “ Mike”,"Lily" ," ...

  8. css_css 盒子水平居中 垂直居中

    1.盒子垂直居中---常用3种方法 方法2: 2.盒子水平居中 3.垂直水平都居中 之前学过 1.结合上面的知识 2.flex布局可以做到 3.css3  translate  定位

  9. jQuery地图插件jVectorMap的简单使用

    1.官网下载jVectorMap插件压缩文件 官网地址:http://www.jvectormap.com/ 2.解压文件包括jVectorMap库及基础样式表,编写Html文件,引入jQuery框架 ...

  10. mongodb 笔记

    1.java驱动下的mongo操作 1.1 数据库连接 package com.mongodb.text; import java.net.UnknownHostException; import c ...