lcd屏调试记录

一,lcd屏介绍

LCD液晶屏的接口类型非常丰富,最常用的接口主要有RGB、MCU、LVDS、MIPI接口。

1、RGB接口

        LCD液晶屏的RGB接口通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及三者组合来得到丰富多彩的颜色,RGB分别代表红、绿、蓝三个通道的颜色,它们三者之间的组合几乎包括了人类视觉感知的所有颜色,是最常用的颜色体系之一。所以LCD液晶屏的RGB接口就是分三原色输入的视频接口 。通常一个颜色通道由8bit表示, 即每个颜色通道值的范围是0~255, 通常称RGB888/RGB24。三个颜色通道总共能组合出约。在实际的使用中, 除了RGB888/RGB24, 还有RGB555,、RGB565、RGB32、RGB666等等。

2、MCU接口

        LCD液晶屏的MCU接口主要针对单片机的领域。在尺寸较小的手机上大量使用,主要优势是价格便宜。MCU接口的标准是因特尔提出的8080总线标准,因此在很多文档中用I80 来指MCU接口屏。MCU接口模式分为8080模式和6800模式,主要是时序的区别。数据位传输有8位,16位,18位,24位。连线分为:CS/RS/RD/WR/。优点是控制简单方便,无需时钟和同步信号。缺点是要耗费GRAM,所以难以做到大屏,一般都用在4寸以下。对于MCU接口的LCM,其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个像素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

3、LVDS接口

        LCD液晶屏的LVDS接口即Low Voltage Differential Signaling,是一种低压差分信号技术接口。克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS输出接口利用非常低的电压摆幅(约350mV)在两条PCB走线或一对平衡电缆上通过差分进行数据的传输,即低压差分信号传输。采用LVDS输出接口,可以使得信号在差分PCB线或平衡电缆上以几百Mbit/s的速率传输,由于采用低压和低电流驱动方式,因此,实现了低噪声和低功耗。

4、MIPI接口

        LCD液晶屏的MIPI接口是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。MIPI是一个比较新的标准,其规范也在不断修改和改进,目前比较成熟的接口应用有DSI(显示接口)和CSI(摄像头接口)。CSI/DSI分别是指其承载的是针对Camera或Display应用,都有复杂的协议结构。

        在LCD液晶屏选择与定制的过程中,使用何种LCD接口类型,主要是根据主板的接口而定,通过软件驱动的匹配,来点亮屏幕,从而实现产品的显示方案。

来源:LCD液晶屏的接口类型有哪些? (baidu.com)

二,调试记录,MCU8080接口。

1,硬件:主控芯片stm32f767,LCD是MCU 8080接口16位数据口,分辨率320*240。

   这种LCD,内部有 GRAM ,MCU操作IO口,就是向GRAM写入数据,GRAM对应屏幕上的像素点。刷新整个屏幕的话,就需要写入320*240个数据,数据量还是非常大的。

2,控制引脚和时序。

 

CS,片选。

WR,写操作。由0到1,上升沿,写入数据。

RS,命令/数据标志。0,读写命令;1,读写数据。

RST,可以硬件复位,软件复位两种。

RD,如果不读,尽量直接初始化,置高。

3,驱动程序例程很多,最关键的就是读写指令数据的时序。


void LCD_WR_REG(u16 data)
{
	LCD_CS_CLR;
	LCD_RD_SET;
	LCD_RS_CLR;      //写地址
	DATAOUT(data);	
	LCD_WR_CLR;	
	LCD_WR_SET;
 	LCD_CS_SET;
 	//LCD_RS_SET;
}


//写数据函数
//可以替代LCD_WR_DATAX宏,拿时间换空间.
//data:寄存器值
void LCD_WR_DATA(u16 data)
{
	LCD_CS_CLR;
	LCD_RD_SET;
	LCD_RS_SET;
	DATAOUT(data);
	LCD_WR_CLR;
	LCD_WR_SET;
	LCD_CS_SET;
	//LCD_RS_CLR;
}

4,刷新速度测试。

主频96Mhz,使用IO口模拟时序,每个IO单独控制,测试清屏一个周期时间。

a,完全使用库函数,清屏周期:529ms。

b,D0-D15使用寄存器操作,清屏周期:150ms。

c,全部IO口使用寄存器操作,清屏周期:107ms。

可以发现,完全使用库函数操作,很耗时。

以下是清屏函数:

void LCD_Clear(unsigned int color)
{
	u32 i;
	LCD_SetWindows(0,0,239,319);

	//LCD_WR_REG(0x2C);

	LCD_RS_SET; // data mode
	LCD_CS_CLR;

	for(i=0;i<240*320;i++)
	{
		DATAOUT(color);
		LCD_WR_CLR;
		LCD_WR_SET;
	}
	LCD_CS_SET;
}

三,总结

      头两天移植程序,查看手册,熟悉LCD,但是就是没点亮,查看时序也没发现问题,加延时,改时序,都没有作用。第三天,因为改了RD引脚,导致电流猛增,以为板子坏了,又换了一块新焊接的板子,还是一样的现象,看来是程序控制的原因,恢复到昨天的程序,意外出现了,点亮了。好的有点莫名奇妙,估计可能与焊接还是又关系。

   电流猛增,这里应该是与RD引脚有关系,我的MCU的IO设置推挽输出,如果RD置低的话,LCD变成读模式,这样可能灌电流,导致电流增加。注意如果不使用RD引脚,将该引脚置高,禁止读操作。

总的来说,时序并不复杂,根据参考程序,一般没有大的问题,如果新板子调试的话,先检查每个IO口配置,是否都正常驱动。我使用stm32CubeIDE单步调试,用示波器查看每一步的状态,体验还真不错。其次,就是注意焊接,新板子,焊接出问题的概率很大。

 如何提高刷新频率?网友回答,

FSMC的速度相比于串行口的屏要快。

程序上使用DMA,进行数据移动刷屏。

关键代码使用寄存器的方式进行操作,而不是使用库函数。

下版准备改成FSMC驱动,使用DMA试试。

参考文章:

(5条消息) 一文搞懂单片机驱动8080LCD_NULL_1969的博客-CSDN博客_st7796

(5条消息) STM32之LCD液晶屏(ILI9341)模拟8080时序_Swiler的博客-CSDN博客_lcd_cs

如何提高单片机在显示屏上刷新速度?-电子芯吧客(www.icxbk.com)

F411使用模拟8080时序刷屏测速 - STM32/STM8单片机论坛 - ST MCU意法半导体官方技术支持论坛 - 21ic电子技术开发论坛

LCD液晶屏的接口类型有哪些? (baidu.com)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值