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. React(七)独立组件间的共享Mixins

    (1)ES6的使用 (https://github.com/brigand/react-mixin) 下载依赖包 npm i react-mixin --save (2)导入react-mixin包 ...

  2. 11_ for 练习 _ Math.sqrt

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

  3. 浅谈vue性能优化

    基础优化 所谓的基础优化是任何 web 项目都要做的,并且是问题的根源.HTML,CSS,JS 是第一步要优化的点 分别对应到 .vue 文件内的,<template>,<style ...

  4. Float.intBitsToFloat

    Float.intBitsToFloat(0b) Float.intBitsToFloat(0) Float.intBitsToFloat(0x) ========================== ...

  5. PHP算法学习(1) 全局唯一ID

    2019年1月8日16:11:13 svn地址:svn://gitee.com/zxadmin/live_z    代码在code里面 全局唯一ID 生产 后续会添加其他方法 <?php /* ...

  6. shell 脚本示例

    #!/bin/sh #while true #do cd /mnt/vfw/third_meteor for sub in `ls` do cd /mnt/vfw/third_meteor/${sub ...

  7. Centos修改时间为24小时制

    终端输入命令:tzselect 根据提示选择:5 --> 9-->1-->1-->okrm /etc/localtimeln -sf /usr/share/zoneinfo/A ...

  8. 8、jeecg 笔记之 自定义word 模板导出(一)

    1.前言 jeecg 中已经自带 word 的导出导出功能,其所使用的也是 easypoi,尽管所导出的 word 能满足大部分需求, 但总是有需要用到自定义 word导出模板,下文所用到的皆是 ea ...

  9. Git常用功能记录

    1. git查看某个文件的修改历史 git log --pretty 然后使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了- git ...

  10. Oracle集群时区

    1.环境及问题 OS:SUSE 12SP3 DB:12.2.0.1.190115 2节点RAC Q:集群日志的时间和主机时间相差较大 grid@WWJD1:~> date Mon Feb 11 ...