LCD驱动程序的编写
这两天我花了很多时间研究液晶屏幕,用的黑金开发板,FPGA 芯片是 Cyclone IV EP4CE15F17C8 。主要包括硬件开发:quartus 11SP1下 SOPC 添加NIOS processor ,添加PIO引脚。有两次编译过程,生成NIOS 和综合。
我的电脑是双核的,1.83主频,2G 内存。完成这两次编译加上修改引脚要花掉近半小时。初学嘛,认了。
其实100MHZ的NIOS 主频,真正下载到板子你运行并不是很快,相比72MHZ的STM32 ,我感觉至少慢了三分之一。
NIOS用来模拟时序是我学习的重点。一般液晶屏幕包括一块玻璃和一个驱动器,如果你是买的现成的液晶模块,一定要把
驱动器的引脚怎么配置的找出来,电路图上一般只画出了接口,因为驱动器一般用FPC(软线)连接,可能是另外一个厂家生产,
配上PCB的又有人加工了,他可能知道软线是怎么连接的,但他不说。我就因为这个苦恼啊,比如今天用的具体是什么类型驱动器
我从液晶模块的PCB 原理图上没找出来,提供的demo直接利用通用的,通过读取DeviceID 来判读是什么类型。好在我记得以前用
STM32 实验的时候,得知是5408类型,不是一般的9320。
一般来说,液晶驱动器提供三大类接口,串行、80并行、68并行。并行的最容易编写驱动程序,但是要用的线很多,我从FPGA
的34个扩展引脚上用了16+6=22个引脚,红线黑线一大把,看上去挺壮观的。我喜欢串行的,五六根线就够用了,用的方式我取
了个形象的名字“半SPI",因为是软件模拟的,不是标准的所说的上升沿主设备发、接着的下降沿供从设备接收使用。我要做的就是在
时钟信号clk上升沿到来之前,已经将数据线SDI的数据改变了。
几个小时前我调试80并行方式的5408驱动器,怎么初始化都不成功,奇怪的是有一次莫名其妙的好的,读出了DeviceID=5408,
我当时很兴奋,赶紧把代码改紧凑,可在再运行,读出来的DeviceID=FFFE,我这人还真不信邪,不停调试,不知不觉,一个多小时了。
哎,放弃吧。突然想起昨天刚申请的cnblogs 博客,尝试写写博客吧。就说说我的经验吧,调试程序时,一旦成功请保存副部,有些东西
没有理由可讲,可能就是一时运气,但是运气不会难再来,这点对时序模拟不甚熟稔的我来说很重要。
第一次写博客,有表达法不合理的包涵哦!