智能手机屏幕驱动方案设计
作者:董斌
来源:《智富时代》2019年第01期
【摘要】当前智能手机越来越普及,从当年的诺基亚单色屏,后来的伪彩屏,真彩屏,到现在的OLED等等。
屏幕尺寸越来越大,分辨率也越来越高。
从240*320,到640*480,到后来的1k,2k,甚至4k屏。
分辨率越高对应的数据就越多.对处理器的性能就要求越高,如何低成本、高性能、开发周期短是摆在各大屏幕测试解决方案供应商面前的一大难题。
本文就以目前的主流的高分辨率1126*2436屏为例,设计了一套完整的解决方案。
【关键词】手机屏幕驱动;MIPI接口;ARM+FPGA
一、硬件电路设计
早期的液晶显示屏由于分辨路低,硬件接口通常都是并行接口(数据线+控制线)占用资源多,传输速率低。
而现在的高清屏多已使用MIPI接口,通信速率多达1.5Gbps.传统的单片机模拟并行总线,或使用FSMC等外设均不能满足高速通信要求。
而使用带有专用的MIPI外设的CPU,成本高昂。
软件驱动库开发周期长。
因此本方案采用了一种ARM+FPGA的设计方案,ARM主要完成通信控制,图片下载,切换,寄存器初始化等工作,FPGA负责高速MIPI 通信,DDR读写等工作。
整个结构如上图,电源部分采用了专用的模块,能够输出多种电压 1.2v/2.5/3.3v供给各个子模块,而ARM和FPGA则采用了FSMC接口,满足高速频繁的通信。
Flash用来存储图片及视频数据。
DDR用来缓存显示数据。
在pcb布线方面由于MIPI信号的高速性,采用等长蛇形走线,周围覆铜接地提高抗干扰能力。
二、固件设计流程
FPGA与屏幕之间的MIPI通信,目前各大FPGA厂商都有集成的IP核调用(商业收费),在这里不再详细介绍。
FPGA的工作重点在与按一定的时序读写数据,通信频繁且要求速度快。
因此采用ARM自带的FSMC接口。
通信时序如下,ARM为master ,FPGA 为slave。
FSMC初始化代码如下:
ARM和FPGA之间通过映射内存地址的方式通信,如地址 0x0001,为FPGA的固件版本号,0x0002为FPGA编译日期,0x0100为MIPI 内核初始化,0x0101为MIPI read,0x0102为MIPI write。
简化了协议的处理,就像ARM在操作一个外挂的芯片一样简单方便。
MIPI命令介绍:根据MIPI DSI协议介绍,MIPI命令分为短包和长包。
短包帧格式如下:
长包帧格式如下:
从DSI协议上看Data ID类型多达30个,需要跟具实际功能查看对应的收发格式,这里不再详细介绍。
基本上在上电时发送0x11,0x29屏幕能亮白屏,说明已经可以通信了。
三、结束语
本设计方案多次的论证修改完善,并最终打板验证,历时3个多月,成功驱动屏幕。
可以实现在屏幕上显示单色图片、彩条、指定区域显示几何图形、彩色图片及短帧的视频。
当然在调试过程中碰到了一些问题。
最后修改FPGA代码解决。
由于FPGA的高速及定制特性,未来在屏幕测试领域应用更是一种趋势。
而ARM由于其通用性好、价格低、市场占有率高以及其完善的底层库及高效的数据数据处理能力而广泛应用。
此方案两者完美结合解决了行业一大难题。
并且在成本,兼容性以及开发周期上有很大的优势,具有很高的商业价值。