重开一篇LPC4370


在家整理芯片的时候翻出了这款神器:

NXP的三核MCU:一个CM4+两个CM0,204M主频,282KB SRAM,两路高速USB,SDRAM、LCD控制器、以太网、双CAN、QSPI Flash等等应有尽有,还有那强悍的SGPIO以及80Msps 12bit ADC,秒天秒地秒空气神一般的存在,放眼望去,谁与争锋?又翻出了当时的板子及帖子:

LPC4370Core Pic

  • 板载32bit SDRAM / Nandflash / QSPI Flash

  • 两路USB、两路CAN、 N路串口、LAN8720以太网PHY

  • 24bit 最高1024*768分辨率 TFT驱动

  • 12bit 80MSPS高速ADC,还有多路10bit的ADC。

    刚好有个基于lpclinkII的开源应用:Labtools,当时还有开源的软件系统:RAW-OS,不知道是否还有人记得~ 于是仿照着做了一个:

    MyLabtools Pic

    PCB Pic

先从TFT搞起:

LCD-TFT RGB565

​ 虽然引出了24bit的LCD,不过太占管脚,没有太实际的意义,而16bit RGB565格式的显示效果也还是不错的,65536色。关于LCD管脚应用,参考手册UM10503 P901描述如下:

PINConfig Pic

对于16bit 565格式的管脚配置,根据手册使用LCD_VD[3:7],LCD_VD[10:15],LCD_VD[19:23],未使用的LCD管脚均可配置为GPIO管脚或作它用。程序中管脚配置如下:

LCDPinCfg Pic

LCD需要配置SDRAM做显存,默认地址是0x28000000,所以需要先调试SDRAM,保证读写正确及SDRAM的时序满足需求,配置起来需要对照着SDRAM数据手册来调整,比较讨厌的。对于图片取模,可以使用Image2LCD工具,如图设置:

Image2LCD Pic

在5寸屏800*480 分辨率,显示效果如下:(PS:实际显示效果更加细腻!!)

Image2LCD Pic

LCD-双缓存配置

首先引用下单显存及双显存的解释:(个人感觉比较好)

​ 在嵌入式平台Linux,主要通过framebuffer来显示UI。FrameBuffer实际上就是嵌入式系统中专门为GPU所保留的一块连续的物理内存,LCD通过专门的总线从framebuffer读取数据,显示到屏幕上。根据系统中framebuffer的数量,可以分成单buffer和双buffer两种。 … 不贴了

​ 上面没有格式化的文字看上去很头疼,简单来说就是为了保持屏幕不闪烁而使用两块显存做显示切换,一块做当前的显示,需要更新显示的内容在第二块显存上做操作,完成后只需要将显存地址切换至第二块即可。好处不必多说,劣势也有:局部刷新时,显示内容的拷贝填充等,关键在于如何灵活运用。 同时还有一点需要注意的是:显存切换时需要在一屏刷新完成后切换!!!不然会有撕裂感。LCD中断寄存器:(BIT3)

LCD_IT Pic

RT-Thread RealBoard-LPC4088已经实现了双显存的配置,使用时可以参考:

LCD_IT_Soft Pic

双缓存搞好就太监了,下面没有了~~


文章作者: xArm
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xArm !
评论