LCD

前言

在一些图形界面应用中,系统架构会时常考虑使用 FSMC接口来驱动 8080接口的 LCD屏。在 MCU渲染完成,将framebuffer发送到 LCD时,有可能会遇到存儲大小端的问题。STM32MCU都采用 ARMCortex内核,内存使用小端格式。而 intel 8080接口的 LCD在传输 RGB数据时,使用的是大端格式。MCU在传输 RGB数据时,字节序有可能不匹配。

在图形界面应用中,像素格式一般会使用 RGB888或 RGB565。而在使用 FSMC接口驱动 8bit位宽的 LCD时,很可能会使用 RGB565格式。本文中会介绍两种方法来处理8bit8080接口 RGB565格式图像数据字节序问题。

图像数据字节序

8bit8080 LCD在接收 RGB565数据时,会将第一个字节解析为{R4-R0,G5-G3}, 第二个字节解析为{G2-G0,B4-B0},并按这个顺序接收所有数据,如下图:

“驱动

而在 MCU内存中,数据按小端格式存放,RGB565数据存放的字节序如下:

“驱动

如果不做调整直接将 RGB数据发给 LCD,MCU会先发送 Byte0,再发送 Byte 1,这样 LCD显示的内容就会错乱。对比上面两张图可以看出,只需将内存中 Byte0与 Byte1字节位置对调(Byteswap),就能满足 LCD接口的字节序要求。可以直接使用 CPU进行 Byteswap,但这会消耗过多 CPU算力,同时也会占用更多内存。这里我们将使用硬件进行 Byteswap.

DMA2D 进行Byteswap

DMA2D是 ST为图形应用专门设计并优化的2D加速引擎,拥有丰富的功能。其字节序重排功能包含了Red blueswap以及 Byteswap特性。Red blueswap特性在 L4和 L4+系列 MCU都支持,而 Byteswap仅在L4+系列有支持。在 L4+系列上,通过配置 DMA2D_OPFCCR寄存器的 SB位,即可使能 Byteswap功能,在 DMA2D的outputFIFO中完成字节序调整,如下图:

“驱动

因此在图形界面应用中,需要 Byteswap时,可以考虑用 DMA2D来传输 RGB数据给 LCD。

GPDMA 进行Byteswap

在新推出的 U5系列芯片上,集成了 GPDMA模块。这是新的通用DMA模块,能在传输数据的同时,还有丰富的数据处理能力。在初始化GPDMA时,通过配置源和目的数据位宽为 DMA_SRC_DATAWIDTH_WORD,在数据处理中配置 DataExchange为 DMA_EXCHANGE_DEST_BYTE,如下面代码,也能实现Byteswap功能。

“驱动

这样,在图形应用中,既能使用 DMA2D加速渲染过程,也能使用 GPDMA的数据处理能力。通过 GPDMA直接向FSMC接口输出 Byteswap后的 RGB565格式的图形数据给LCD。

小结

在驱动 8位 8080接口 LCD时,需要注意图像数据字节序问题。使用 RGB565格式时,可以使用 DMA2D或 GPDMA来传输图像数据,同时对图像数据做 Byteswap调整,满足LCD的字节序要求。

本文转载自:STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 195

Holtek A/D Flash MCU with LCD系列新增HT67F2355产品,特点为1.8V~5.5V宽工作电压范围、内建高精准度振荡器、更精准的ADC参考电压、内建IAP功能及提供LCD/LED驱动电路。此产品非常适用于各式带LED或LCD的产品,例如:温控器、空调遥控器、电动车仪表及各类小家电控制板。

HOLTEK新推出HT67F2355 LCD MCU

HT67F2355除涵盖HT67F489/HT67F4892完整功能外,更强化多项MCU资源,包含512×8 RAM、512×8 EEPROM、IAP功能、LCD最多可驱动28×8及SPI/I²C接口等。内建振荡器与ADC参考电压之精准度分别可达到4/8/12MHz ±1%与1.2V ±1%。此MCU除可单独做为主控MCU外,配合完整的通信接口,更可与各种主控IC共同构成一个系统,其多样化之功能,让客户可轻易应用在各种家电控制板产品及车用产品上。封装则提供44/48-pin LQFP,其中44-pin LQFP脚位功能兼容于HT67F489。

来源:HOLTEK

围观 35

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MPU模式的)。只有TFT模块才有RGB接口。

但应用比较多的就是MUC模式和RGB模式,区别有以下几点:

1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。RGB接口:在写LCD register setting时,和MCU接口没有区别。区别只在于图像的写入方式。

2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。

用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形.

3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU接口和RGB接口主要的区别是:MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU模式因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。数据位传输有8位,9位,16位,18位,24位。连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(3.8以上)。对于MCU接口的LCM,其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

MCU接口的LCD的DriverIC都带GRAM,Driver IC作为MCU的一片协处理器,接受MCU发过来的Command/Data,可以相对独立的工作。对于MCU接口的LCM(LCD Module),其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

M6800模式M6800模式支持可选择的总线宽度8/9/16/18-bit(默认为8位),其实际设计思想是与I80的思想是一样的,主要区别就是该模式的总线控制读写信号组合在一个引脚上(/WR),而增加了一个锁存信号(E)数据位传输有8位,9位,16位和18位。


I8080模式I80模式

连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(QVGA以上)。


MCU接口标准名称是I80,管脚的控制脚有5个:CS 片选信号RS (置1为写数据,置0为写命令)/WR (为0表示写数据) 数据命令区分信号/RD (为0表示读数据)RESET 复位LCD( 用固定命令系列 0 1 0来复位)

VSYNC模式

该模式其实就是就是在MCU模式上加了一个VSYNC信号,应用于运动画面更新,这样就与上述两个接口有很大的区别。该模式支持直接进行动画显示的功能,它提供了一个对MCU接口最小的改动,实现动画显示的解决方案。在这种模式下,内部的显示操作与外部VSYNC信号同步。可以实现比内部操作更高的速率的动画显示。但由于其操作方式的不同,该模式对速率有一个限制,那就是对内部SRAM的写速率一定要大于显示读内部SRAM的速率。


RGB模式

大屏采用较多的模式,数据位传输也有6位,16位和18位,24位之分。连线一般有:VSYNC,HSYNC,DOTCLK,CS,RESET,有的也需要RS,剩下就是数据线。它的优缺点正好和MCU模式相反。

MCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置。RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,象现在4.3"只能算入门级,而MID中7",10"的屏都开始大量使用。而MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部.然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。显示数据传输模式也有差别。RGB屏只需显存组织好数据。启动显示后,LCD-DMA会自动把显存中的数据通过RGB接口送到LCM。而MCU屏则需要发送画点的命令来修改MCU内部的RAM(即不能直接写MCU屏的RAM)。所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。

对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。



TFT液晶屏主要有2种接口:TTL接口(RGB颜色接口), LVDS接口(将RGB颜色打包成差分信号传输)。TTL接口主要用于12.1寸一下的小尺寸TFT屏,LVDS接口主要用于8寸以上的大尺寸TFT屏。TTL接口线多,传输距离短;LVDS接口传输距离长,线的数量少。大屏采用较多的模式,控制脚是VSYNC,HSYNC,VDEN,VCLK, S3C2440最高支持24个数据脚,数据脚是VD[23-0]。

CPU或显卡发出的图像数据是TTL信号(0-5V、0-3.3V、0-2.5V、或0-1.8V),LCD本身接收的也是TTL信号,由于TTL信号在高速率的长距离传输时性能不佳,抗干扰能力比较差,后来又提出了多种传输模式,比如LVDS、TDMS、GVIF、P&D、DVI和DFP等。他们实际上只是将CPU或显卡发出的TTL信号编码成各种信号以传输,在LCD那边将接收到的信号进行解码得到TTL信号。

但是不管采用何种传输模式,本质的TTL信号是一样的。

注意:TTL/LVDS分别是两种信号的传输模式,TTL是高电平表示1,低电平表示0的模式,LVDS是正负两个对应波形,用两个波形的差值来表示当前是1还是0

SPI模式、

采用较少,有3线和4线的,连线为CS/,SLK,SDI,SDO四根线,连线少但是软件控制比较复杂。

MDDI模式(MobileDisplayDigitalInterface)

高通公司于2004年提出的接口MDDI,通过减少连线可提高移动电话的可靠性并降低功耗,这将取代SPI模式而成为移动领域的高速串行接口。 连线主要是host_data,host_strobe,client_data,client_strobe,power,GND几根线。

DSI模式

该模式串行的双向高速命令传输模式,连线有D0P,D0N,D1P,D1N,CLKP,CLKN。

来源:网络

围观 74

TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。

TFT液晶原理:

STM32之TFT-LCD液晶学习

*背光模组:提供光源
*上下偏光片,TFT Glass Substrate, 液晶:形成偏振光,控制光线的通过与否
*彩色滤光片:提供TFT LCD R/G/B(三原色)的来源
*ITO透明导电层:提供透明的导电通路
*Photo Spacer:提供一个固定高度给彩色滤光片和TFT Glass Substrate,作为灌入液晶的空间,以及做为上下两层Glass的支撑

液晶特性:

TFT-LCD使用的液晶为TN(Twist Nematic)型液晶,分子成椭圆状。TN型液晶一般是顺着长轴方向串接,长轴间彼此平行方式排列;当接触到槽状表面时,液晶分子就会顺着槽的方向排列与槽中

STM32之TFT-LCD液晶学习

当液晶被包含在两个槽状表面中间,且槽的方向相互垂直,则液晶分子的排列为:
a)上表面分子:沿着a方向;
b)下表面分子:沿着b方向;
c)介于上下表面中间的分子:产生旋转的效应。
因此液晶分子在两槽状表面间产生90°的旋转

STM32之TFT-LCD液晶学习

当线性偏极光射入上层槽状表面时,此光线随着液晶分子的旋转也产生旋转。
当线性偏极光射出下层槽状表面时,此光线已经产生了90度的旋转

STM32之TFT-LCD液晶学习

当在上下表面之间加电压时,液晶分子会顺着电场方向排列,此时入射光线不再会旋转,因而光线直线射出下表面

STM32之TFT-LCD液晶学习

偏光片特性:
将非偏极光(一般光线)过滤成偏振光。
当非偏极光通过a方向的偏光片时,光线被过滤成与a方向平行的线性偏极光
上图:偏振方向相同,线性偏极光继续前进,通过第二片偏光片时,光线通过。
下图:偏振方向不同,通过第二片时,光线被完全阻挡

STM32之TFT-LCD液晶学习

偏振光透过液晶分子,偏振方向发生旋转,光线可通过偏光片

STM32之TFT-LCD液晶学习

当液晶分子呈如图方向排列时,光线偏振方向将不再发生旋转,最终无法通过偏光片

STM32之TFT-LCD液晶学习

TFT上下各有一片偏振方向垂直的偏光片,背光板发出的光经背光模组散射后,先通过下层偏光片形成偏振光
之后通过液晶分子,并由液晶分子的旋转角度决定通过液晶分子后的偏振方向
在经过彩色滤光片产生红、绿、蓝三色光,最后通过上偏光片,并由偏振光偏振方向与偏光片偏振方向夹角决定最终输出的光强,以形成不同的色彩。

STM32之TFT-LCD液晶学习STM32之TFT-LCD液晶学习

发光强弱由MOS管控制液晶偏转角度,从而控制光线出口强弱达到控制色彩目的.
假设240*320分辨率液晶则由于 基本色彩是3原色 所以总共有240*320*3个 MOS管

“像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。这种最小的图形的单元能在屏幕上显示通常是单个的染色点。越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。

每个点显示的颜色如何由确定?
由于TFT 液晶我使用的是2.8寸的240*320分辨率(像素),16位真彩显示(接近自然色)
该模块采用的是显尚光电的DST2001PH TFTLCD,DST2001PH的控制器为ILI9320(可能为其他),采用16位的80并口。
驱动芯片显存GRAM与色彩关系:

STM32之TFT-LCD液晶学习

由于是16为数据,所以最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。
就是向显存里面写入不同数据,产生不同的颜色.
常见颜色确定:

STM32之TFT-LCD液晶学习

利用画图工具里面3原色可能确定需要的显存数据。

本人使用ALIENTEK MiniSTM32开发板自配2.8寸液晶
液晶驱动芯片硬件接口:

STM32之TFT-LCD液晶学习

采用16位数据线(低了速度太慢,用彩色就没什么效果了)。该模块的80并口有如下一些信号线:
CS:TFTLCD片选信号。
WR:向TFTLCD写入数据。
RD:从TFTLCD读取数据。
D[15:0]:16位双向数据线。
RST:硬复位TFTLCD。
RS:命令/数据标志(0,读写命令;1,读写数据)。

ILI9320常用寄存器指令:

STM32之TFT-LCD液晶学习

R0,这个命令,有两个功能,如果对它写,则最低位为OSC,用于开启或关闭振荡器。而如果对它读操作,则返回的是控制器的型号。这个命令最大的功能就是通过读它可以得到控制器的型号,而我们代码在知道了控制器的型号之后,可以针对不同型号的控制器,进行不同的初始化。因为93xx系列的初始化,其实都比较类似,我们完全可以用一个代码兼容好几个控制器。
R3,入口模式命令。我们重点关注的是I/D0、I/D1、AM这3个位,因为这3个位控制了屏幕的显示方向。

AM:控制GRAM更新方向。当AM=0的时候,地址以行方向更新。当AM=1的时候,地址以列方向更新。
I/D[1:0]:当更新了一个数据之后,根据这两个位的设置来控制地址计数器自动增加/减少1,

STM32之TFT-LCD液晶学习

R7:显示控制命令。该命令CL位用来控制是8位彩色,还是26万色。为0时26万色,为1时八位色。D1、D0、BASEE这三个位用来控制显示开关与否的。当全部设置为1的时候开启显示,全0是关闭。我们一般通过该命令的设置来开启或关闭显示器,以降低功耗。

R32,R33:设置GRAM的行地址和列地址。R32用于设置列地址(X坐标,0~239),R33用于设置行地址(Y坐标,0~319)。当我们要在某个指定点写入一个颜色的时候,先通过这两个命令设置到改点,然后写入颜色值就可以了.

R34:写数据到GRAM命令,当写入了这个命令之后,地址计数器才会自动的增加和减少。该命令是我们要介绍的这一组命令里面唯一的单个操作的命令,只需要写入该值就可以了,其他的都是要先写入命令编号,然后写入操作数.

R80~R83:行列GRAM地址位置设置。这几个命令用于设定你显示区域的大小,我们整个屏的大小为240*320,但是有时候我们只需要在其中的一部分区域写入数据,如果用先写坐标,后写数据这样的方式来实现,则速度大打折扣。此时我们就可以通过这几个命令,在其中开辟一个区域,然后不停的丢数据,地址计数器就会根据R3的设置自动增加/减少,这样就不需要频繁的写地址了,大大提高了刷新的速度。

我们接下来看看要如何才能驱动ALIENTEK TFTLCD模块,TFTLCD显示需要的相关设置步骤如下:
1)设置STM32与TFTLCD模块相连接的IO。
这一步,先将我们与TFTLCD模块相连的IO口设置为输出,具体使用哪些IO口,这里需要根据连接电路以及TFTLCD模块的设置来确定。
2)初始化TFTLCD模块。
其实这里就是上和上面OLED模块的初始化过程差不多。通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示。为后续显示字符和数字做准备。
3)通过函数将字符和数字显示到TFTLCD模块上。

MiniSTM32开发板的IO口对应关系如下:
LCD_LED对应PC10;
LCD_CS对应PC9;
LCD _RS对应PC8;
LCD _WR对应PC7;
LCD _RD对应PC6;
LCD _D[17:1]对应PB[15:0];
基本GUI接口函数简介(一)
80并口时序图:

STM32之TFT-LCD液晶学习

(一) :
//------写数据函数--------- 这里我们采用了宏定义的方式,以提高速度(由于显示图像写入读出频繁):
#define LCD_WR_DATA(data){\

LCD_RS_SET;\ //选择数据
LCD_CS_CLR;\ //选择片
DATAOUT(data);\ //把数据放入端口
LCD_WR_CLR;\ //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;\
LCD_CS_SET;\ //CS上升沿 写入数据完成
}
上面函数中的‘\’是C语言中的一个转义字符,用来连接上下文,因为宏定义只能是一个串,而当你的串过长(超过一行的时候),就需要换行了,此时就必须通过反斜杠来连接上下文。这里的‘\’正是起这个作用
(二):
因为该函数使用频率不是很高 ,不使用宏定义
//----向寄存器发送指令函数------
void LCD_WR_REG(u8 data)
{
LCD_RS_CLR; //选择指令
LCD_CS_CLR; //选中芯片
DATAOUT(data); //端口放上指令
LCD_WR_CLR; //WR写数据来个上升沿(将数据写入)
LCD_WR_SET;
LCD_CS_SET; //CS上啦完成操作
}
(三) :
由下面2个寄存器设置快速IO

STM32之TFT-LCD液晶学习STM32之TFT-LCD液晶学习

//-------读取寄存器值函数---------
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t;
LCD_WR_REG(LCD_Reg); //写入要读的寄存器号
GPIOB->CRL=0x88888888; //将端口PORTB设置成输入模式
GPIOB->CRH=0x88888888;
GPIOB->ODR=0xffff; //端口上拉预备输入
#ifdef LCD_FAST_IO //判断快速IO口是否宏定义过
LCD_RS_SET; //运用快速IO口 (例:#define LCD_CS_SET GPIOC->BSRR=1<<9 //片选口 PC9)
LCD_CS_CLR;
LCD_RD_CLR;
LCD_RD_SET; //RD脚产生上升沿
t=DATAIN;
LCD_CS_SET;
#endif
GPIOB->CRL=0x33333333; //恢复输出状态
GPIOB->CRH=0x33333333;
GPIOB->ODR=0xffff;
return t;
}

转自: eeworld.com

围观 665

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MPU模式的)。只有TFT模块才有RGB接口。

但应用比较多的就是MCU模式和RGB模式,区别有以下几点:

1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。
RGB接口:在写LCD register setting时,和MCU接口没有区别。区别只在于图像的写入方式。

2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。
用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形.

3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU接口和RGB接口主要的区别是:

MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU模式

因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。数据位传输有8位,9位,16位,18位,24位。连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(3.8以上)。对于MCU接口的LCM,其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

MCU接口的LCD的Driver IC都带GRAM,Driver IC作为MCU的一片协处理器,接受MCU发过来的Command/Data,可以相对独立的工作。对于MCU接口的LCM(LCD Module),其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

M6800模式

M6800模式支持可选择的总线宽度8/9/16/18-bit(默认为8位),其实际设计思想是与I80的思想是一样的,主要区别就是该模式的总线控制读写信号组合在一个引脚上(/WR),而增加了一个锁存信号(E)数据位传输有8位,9位,16位和18位。

LCD的接口类型详解

I8080模式

LCD的接口类型详解

I80模式连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(QVGA以上)。

MCU接口标准名称是I80,管脚的控制脚有5个:

• CS 片选信号
• RS (置1为写数据,置0为写命令)
• /WR (为0表示写数据) 数据命令区分信号
• /RD (为0表示读数据)
• RESET 复位LCD( 用固定命令系列 0 1 0来复位)

VSYNC模式

该模式其实就是就是在MCU模式上加了一个VSYNC信号,应用于运动画面更新,这样就与上述两个接口有很大的区别。该模式支持直接进行动画显示的功能,它提供了一个对MCU接口最小的改动,实现动画显示的解决方案。在这种模式下,内部的显示操作与外部VSYNC信号同步。可以实现比内部操作更高的速率的动画显示。但由于其操作方式的不同,该模式对速率有一个限制,那就是对内部SRAM的写速率一定要大于显示读内部SRAM的速率。

LCD的接口类型详解

RGB模式

大屏采用较多的模式,数据位传输也有6位,16位和18位,24位之分。连线一般有:VSYNC,HSYNC,DOTCLK,CS,RESET,有的也需要RS,剩下就是数据线。它的优缺点正好和MCU模式相反。

MCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置。RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,象现在4.3"只能算入门级,而MID中7",10"的屏都开始大量使用。而MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部.然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。显示数据传输模式也有差别。RGB屏只需显存组织好数据。启动显示后,LCD-DMA会自动把显存中的数据通过RGB接口送到LCM。而MCU屏则需要发送画点的命令来修改MCU内部的RAM(即不能直接写MCU屏的RAM)。所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。

对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。

LCD的接口类型详解

LCD的接口类型详解

彩色TFT液晶屏主要有2种接口:TTL接口(RGB颜色接口), LVDS接口(将RGB颜色打包成差分信号传输)。TTL接口主要用于12.1寸一下的小尺寸TFT屏,LVDS接口主要用于8寸以上的大尺寸TFT屏。TTL接口线多,传输距离短;LVDS接口传输距离长,线的数量少。大屏采用较多的模式,控制脚是VSYNC,HSYNC,VDEN,VCLK, S3C2440最高支持24个数据脚,数据脚是VD[23-0]。

CPU或显卡发出的图像数据是TTL信号(0-5V、0-3.3V、0-2.5V、或0-1.8V),LCD本身接收的也是TTL信号,由于TTL信号在高速率的长距离传输时性能不佳,抗干扰能力比较差,后来又提出了多种传输模式,比如LVDS、TDMS、GVIF、P&D、DVI和DFP等。他们实际上只是将CPU或显卡发出的TTL信号编码成各种信号以传输,在LCD那边将接收到的信号进行解码得到TTL信号。

但是不管采用何种传输模式,本质的TTL信号是一样的。

注意:TTL/LVDS分别是两种信号的传输模式,TTL是高电平表示1,低电平表示0的模式,LVDS是正负两个对应波形,用两个波形的差值来表示当前是1还是0

SPI模式
采用较少,有3线和4线的,连线为CS/,SLK,SDI,SDO四根线,连线少但是软件控制比较复杂。

MDDI模式(MobileDisplayDigitalInterface)
高通公司于2004年提出的接口MDDI,通过减少连线可提高移动电话的可靠性并降低功耗,这将取代SPI模式而成为移动领域的高速串行接口。 连线主要是host_data,host_strobe,client_data,client_strobe,power,GND几根线。

DSI模式
该模式串行的双向高速命令传输模式,连线有D0P,D0N,D1P,D1N,CLKP,CLKN。

转自: 玩转单片机

围观 902

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。MCU模式(也写成MPU模式的)。只有TFT模块才有RGB接口。

但应用比较多的就是MUC模式和RGB模式,区别有以下几点:

1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。

RGB接口:在写LCD register setting时,和MCU接口没有区别。区别只在于图像的写入方式。

2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。

用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形.

3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。

RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU接口和RGB接口主要的区别是:

MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。

RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。

MCU模式

因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。数据位传输有8位,9位,16位,18位,24位。连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(3.8以上)。对于MCU接口的LCM,其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

MCU接口的LCD的DriverIC都带GRAM,Driver IC作为MCU的一片协处理器,接受MCU发过来的Command/Data,可以相对独立的工作。对于MCU接口的LCM(LCD Module),其内部的芯片就叫LCD驱动器。主要功能是对主机发过的数据/命令,进行变换,变成每个象素的RGB数据,使之在屏上显示出来。这个过程不需要点、行、帧时钟。

M6800模式

M6800模式支持可选择的总线宽度8/9/16/18-bit(默认为8位),其实际设计思想是与I80的思想是一样的,主要区别就是该模式的总线控制读写信号组合在一个引脚上(/WR),而增加了一个锁存信号(E)数据位传输有8位,9位,16位和18位。

嵌入式LCD的接口类型详解

I8080模式

I80模式连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。优点是:控制简单方便,无需时钟和同步信号。缺点是:要耗费GRAM,所以难以做到大屏(QVGA以上)。

嵌入式LCD的接口类型详解

MCU接口标准名称是I80,管脚的控制脚有5个:

CS 片选信号
RS (置1为写数据,置0为写命令)
/WR (为0表示写数据) 数据命令区分信号
/RD (为0表示读数据)
RESET 复位LCD( 用固定命令系列 0 1 0来复位)

VSYNC模式

该模式其实就是就是在MCU模式上加了一个VSYNC信号,应用于运动画面更新,这样就与上述两个接口有很大的区别。该模式支持直接进行动画显示的功能,它提供了一个对MCU接口最小的改动,实现动画显示的解决方案。在这种模式下,内部的显示操作与外部VSYNC信号同步。可以实现比内部操作更高的速率的动画显示。但由于其操作方式的不同,该模式对速率有一个限制,那就是对内部SRAM的写速率一定要大于显示读内部SRAM的速率。

嵌入式LCD的接口类型详解

RGB模式

大屏采用较多的模式,数据位传输也有6位,16位和18位,24位之分。连线一般有:VSYNC,HSYNC,DOTCLK,CS,RESET,有的也需要RS,剩下就是数据线。它的优缺点正好和MCU模式相反。

MCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置。RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,象现在4.3"只能算入门级,而MID中7",10"的屏都开始大量使用。而MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部.然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。显示数据传输模式也有差别。RGB屏只需显存组织好数据。启动显示后,LCD-DMA会自动把显存中的数据通过RGB接口送到LCM。而MCU屏则需要发送画点的命令来修改MCU内部的RAM(即不能直接写MCU屏的RAM)。所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。

对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。

嵌入式LCD的接口类型详解嵌入式LCD的接口类型详解

彩色TFT液晶屏主要有2种接口:TTL接口(RGB颜色接口), LVDS接口(将RGB颜色打包成差分信号传输)。TTL接口主要用于12.1寸一下的小尺寸TFT屏,LVDS接口主要用于8寸以上的大尺寸TFT屏。TTL接口线多,传输距离短;LVDS接口传输距离长,线的数量少。大屏采用较多的模式,控制脚是VSYNC,HSYNC,VDEN,VCLK, S3C2440最高支持24个数据脚,数据脚是VD[23-0]。

CPU或显卡发出的图像数据是TTL信号(0-5V、0-3.3V、0-2.5V、或0-1.8V),LCD本身接收的也是TTL信号,由于TTL信号在高速率的长距离传输时性能不佳,抗干扰能力比较差,后来又提出了多种传输模式,比如LVDS、TDMS、GVIF、P&D、DVI和DFP等。他们实际上只是将CPU或显卡发出的TTL信号编码成各种信号以传输,在LCD那边将接收到的信号进行解码得到TTL信号。

但是不管采用何种传输模式,本质的TTL信号是一样的。

注意:TTL/LVDS分别是两种信号的传输模式,TTL是高电平表示1,低电平表示0的模式,LVDS是正负两个对应波形,用两个波形的差值来表示当前是1还是0
SPI模式

采用较少,有3线和4线的,连线为CS/,SLK,SDI,SDO四根线,连线少但是软件控制比较复杂。
MDDI模式(MobileDisplayDigitalInterface)

高通公司于2004年提出的接口MDDI,通过减少连线可提高移动电话的可靠性并降低功耗,这将取代SPI模式而成为移动领域的高速串行接口。 连线主要是host_data,host_strobe,client_data,client_strobe,power,GND几根线。

DSI模式

该模式串行的双向高速命令传输模式,连线有D0P,D0N,D1P,D1N,CLKP,CLKN。

转自: 单片机精讲吴鉴鹰

围观 332

在STM32上开发LCD显示,可以有两种方式来对LCD进行操作,一种是通过普通的IO口,连接LCM的相应引脚来进行操作,第2种是通过FSMC来进行操作。

1. LCD/LCM的基本概念

液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。

在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。

2.存储器的概念

存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成 电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。计 算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指 定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外 存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和 程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。

以存储体(大量存储单元组成的阵列)为核心,加上必要的地址译码、读写控制电路,即为存储集成电路;再加上必要的I/O接口和一些额外的电路如存取策略管 理,则形成存储芯片,比如手机中常用的存储芯片。得益于新的IC制造或芯片封装工艺,现在已经有能力把DRAM和FLASH存储单元集成在单芯片里。存储 芯片再与控制芯片(负责复杂的存取控制、存储管理、加密、与其他器件的配合等)及时钟、电源等必要的组件集成在电路板上构成整机,就是一个存储产品,如U 盘。从存储单元(晶体管阵列)到存储集成电路再到存储设备,都是为了实现信息的存储,区别是层次的不同。

3.FSMC的概念

FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上FlaSh,后缀为xC、xD和xE的高存储密度微控制器特有的存储控制机制。之所以称为“可变”,是由于通过对特殊功能寄存器的设置,FSMC能够根据不同的外部存储器类型,发出相应的数据/地址/控制信号类型以匹配信号的速度,从而使得STM32系列微控制器不仅能够应用各种不同类型、不同速度的外部静态存储器,而且能够在不增加外部器件的情况下同时扩展多种不同类型的静态存储器,满足系统设计对存储容量、产品体积以及成本的综合要求。

FSMC技术优势:

①支持多种静态存储器类型。STM32通过FSMC可以与SRAM、ROM、PSRAM、NOR Flash和NANDFlash存储器的引脚直接相连。

②支持丰富的存储操作方法。FSMC不仅支持多种数据宽度的异步读/写操作,而且支持对NOR/PSRAM/NAND存储器的同步突发访问方式。

③支持同时扩展多种存储器。FSMC的映射地址空间中,不同的BANK是独立的,可用于扩展不同类型的存储器。当系统中扩展和使用多个外部存储器时,FSMC会通过总线悬空延迟时间参数的设置,防止各存储器对总线的访问冲突。

④支持更为广泛的存储器型号。通过对FSMC的时间参数设置,扩大了系统中可用存储器的速度范围,为用户提供了灵活的存储芯片选择空间。

⑤支持代码从FSMC扩展的外部存储器中直接运行,而不需要首先调入内部SRAM。

FSMC内部结构:

FSMC包含两类控制器:1个NOR闪存/SRAM控制器,可以与NOR闪存、SRAM和PSRAM存储器接口。1个NAND闪存/PC卡控制器,可以与NAND闪存、PC卡,CF卡和CF+存储器接口。

STM32微控制器之所以能够支持NOR Flash和NAND Flash这两类访问方式完全不同的存储器扩展,是因为FSMC内部实际包括NOR Flash和NAND/PC Card两个控制器,分别支持两种截然不同的存储器访问方式。在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展存储器的外部总线。内核对外部存储器的访问信号发送到AHB总线后,经过FSMC转换为符合外部存储器通信规约的信号,送到外部存储器的相应引脚,实现内核与外部存储器之间的数据交互。FSMC起到桥梁作用,既能够进行信号类型的转换,又能够进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。

FSMC映射地址空间:

FSMC管理1 GB的映射地址空间。该空间划分为4个大小为256 MB的BANK,每个BANK又划分为4个64 MB的子BANK。FSMC的2个控制器管理的映射地址空间不同。NOR Flash控制器管理第1个BANK,NAND/PC Card控制器管理第2~4个BANK。由于两个控制器管理的存储器类型不同,扩展时应根据选用的存储设备类型确定其映射位置。其中,BANK1的4个子BANK拥有独立的片选线和控制寄存器,可分别扩展一个独立的存储设备,而BANK2~BANK4只有一组控制寄存器。

FSMC 包括4个模块:

(1)AHB接口(包括FSMC配置寄存器)
(2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM)
(3)NAND闪存和PC卡控制器
(4)外部设备接口

小结:

FSMC是一种用于为STM32扩展外部存储器的控制器,它是一种控制器!

FSMC控制器,包括AHB接口及两个控制器,NOR Flash和NAND/PC Card两个控制器。

FSMC分为4个BANK,其中NOR Flash(BANK1),NAND/PC Card(BANK2-4)。

控制器产生所有驱动这些存储器的信号时序:
1. 16位数据线,用于连接8位或16位的存储器;
2. 26位地址线,最多可连续64MB的存储器(这里不包括片选线);
3. 5位独立的片选信号线;
4. 1组适合不同类型存储器的控制信号线。

控制读/写操作:
- 与存储器通信,提供就绪/繁忙信号和中断信号。
- 与所用配置的PC卡接口:PC存储卡、PC I/O卡和真正的IDE接口。

从FSMC的角度看,可以把外部存储器划分为固定大小为256MB的4个存储块:
· 存储块1用于访问最多4个NOR闪存或者PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区,并有4个专用的片选。
· 存储块2和3用于访问NAND闪存设备,每个存储块连接一个NAND闪存。
· 存储块4用于访问PC卡设备。

每一个存储块上的存储器类型是由用户在配置寄存器中定义的。

注意:FSMC只是提供了一个控制器,并不提供相应的存储设备,至于外设接的是什么设备,完全是由用户自己选择,只要能用于FSMC控制,就可以,像本次实验中,我们接的就是LCM。

FSMC对外部设备的地址映像从0x6000 0000开始,到0x9FFF FFFF结束,共分4个地址块,每个地址块256M字节。可以看出,每个地址块又分为4个分地址块,大小64M。对NOR的地址映像来说,我们可以通过选 择HADDR[27:26]来确定当前使用的是哪个64M的分地址块,如下页表格。而这四个分存储块的片选,则使用NE[4:1]来选择。数据线/地址线 /控制线是共享的。

NE1 ->Bank1 NE2->Bank2NE3->Bank3NE4->Bank4
若 NE1 连接, 则:
每小块NOR/PSRAM 64M。
第一块:6000 0000h--63ff ffffh (DATA长度为8位情况下,由地址线FSMC_A[25:0]决定;DATA长度为16位情况下,由地址线FSMC_A[24:0]决定)。
第二块:6400 0000h--67ff ffffh。
第二块:6800 0000h--6bff ffffh。
第三块:6c00 0000h--6fff ffffh。

注:这里的HADDR是需要转换到外部设备的内部AHB地址线,每个地址对应一个字节单元。因此,若外部设备的地址宽度是8位的,则 HADDR[25:0]与STM32的CPU引脚FSMC_A[25:0]一一对应,最大可以访问64M字节的空间。若外部设备的地址宽度是16位的,则 是HADDR[25:1]与STM32的CPU引脚FSMC_A[24:0]一一对应。在应用的时候,可以将FSMC_A总线连接到存储器或其他外设的地 址总线引脚上。

使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线。

(1)当存储数据设为8位时,(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b)
地址各位对应FSMC_A[25:0],数据位对应FSMC_D[7:0]

(2)当存储数据设为16位时,(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b)
地址各位对应FSMC_A[24:0],数据位对应FSMC_D[15:0]

4.ILI9325

ILI9325的功能很多,在此无法一一说明,但是参考ILI9325的Datasheet我们发现有几个引脚还是非常重要的,而只要操作好了这几个引脚,基本上就可以实现简单的对LCM的控制了。

nCS: IC的片选信号。如果是低电平,则ILI9325是被选中,并且可以进行操作,如果是高电平,这不被选中。

RS: 寄存器选择信号。如果是低电平,则选择的是索引或者状态寄存器,如果是高电平,则选择控制寄存器。

nWR/SCL: 写使能信号,低电平有效。

nRD: 读使能信号,低电平有效。

5. 电路设计

1. 信号线的连接

STM32F10x FSMC有4个不同的banks,每一个64MB,可支持NOR以及其他类似的存储器。这些外部设备的地址线、数据线和控制线是共享的。每个设备的访问时通过片选信号来决定的,而每次只能访问一个设备。我们的LCM就是连接在NOR的bank上面。

FSMC_D[15:0]:16bit的数据总线,连接ILI9325的数据线; FSMC_NEx:分配给NOR的256MB的地址空间还可以分为4个banks,每一个区用来分配一个外设,这4个外设分别就是NE1-NE4; FSMC_NOE:输出使能,连接ILI9325的nRD引脚; FSMC_NWE:写使能,连接ILI9325的nWR引脚。

FSMC_Ax:用在LCD显示RAM和寄存器之间进行选择的地址线,这个和ILI9325的RS引脚相连。该线可用任意一根地址线,范围是FSMC_A[25:0]。当RS=0时,表示读写寄存器,RS=1时,表示读写数据RAM。

其实关于RS的表述也并不完全准确,应该这么理解,RS=0的时候,向这个地址写的数表示了选择什么寄存器进行操作,然而要对寄存器进行什么操作,则要看当RS=1时,送入的数据了。

关于地址的计算,如果我们选择NOR的第一个存储区,并且使用FSMC_A16来控制ILI9325的RS引脚,则如果要访问寄存器地址(RS=0),那 么地址是0x6000 0000(起始地址),如果要访问数据区(RS=1),那么基地址应该是0x6002 0000。

有人会问,为什么不是0x6001 0000呢?因为FSMC_A16=1。因为在前文中已经说过,若外部设备的地址宽度是16位的,则是HADDR[25:1]与STM32的CPU引脚 FSMC_A[24:0]一一对应。也就是说,内部产生的地址应该要左移一位,FSMC_A16=1,代表着第17位为1,而不是第16位为1。如果外部 设备的地址宽度是8位的话,则不会出现这个问题。

再举一个例子,如果选择NOR的第4个存储区,使用FSMC_A0来控制RS引脚,则访问数据区的地址为0x6000 0002,访问LCD寄存器的地址为:0x6000 0000。

2. 时序问题

一般使用模式2来做LCD的接口控制,不使用外扩模式。并且读写操作的时序一样。此种情况下,我们需要使用3个参数:ADDSET、DATAST、ADDHOLD。时序的计算需要根据NOR闪存存储器的特性和STM32F10x的时钟HCLK来计算这些参数。

写或读访问时序是存储器片选信号的下降沿与上升沿之间的时间,这个时间可以由FSMC时序参数的函数计算得到:
写/读访问时间 = ((ADDSET + 1) + (DATAST + 1)) × HCLK

在写操作中,DATAST用于衡量写信号的下降沿与上升沿之间的时间参数:

写使能信号从低变高的时间 = t WP = DATAST × HCLK

为了得到正确的FSMC时序配置,下列时序应予以考虑:

最大的读/写访问时间、不同的FSMC内部延迟、不同的存储器内部延迟
因此得到:
((ADDSET + 1) + (DATAST + 1)) × HCLK = max (t WC , t RC )

DATAST × HCLK = tWP

DATAST必须满足:
DATAST = (tAVQV+ tsu(Data_NE) + tv(A_NE) )/HCLK – ADDSET – 4

由于我没有找到ILI9325的这些时序的参数,所以就参考了一些以前别人写的程序里面的时序配置。当 HCLK 的频率是 72MHZ,使用模式 B,则有如下时序:
地址建立时间:0x1
地址保持时间:0x0
数据建立时间:0x5

在论坛上问为什么FSMC调试会进入Handler fault。没人回答。当然也不好回答,这些问题是不可预知,更无法估测。所以自己调来调去。调了整整一天也未见结果。左一右一次的对着寄存器一位一位的设置。后来设计想是不是应该用到库,是不是自己操作寄存器不好。带着苦恼回宿舍睡觉了。(9点了工作室关门了,也没那么牛X学到1,2点,当然我绝对佩服他们)今天早上,我再次对了寄存器,看到了其中有两位会产生AHB硬件fault我则将这两个都使能,结果,结果成功了。不再进入Handler fault了。这让我感觉惭愧,原因昨天晚上想过会不会是这两个问题,但是麻烦的心理让我改了前一个望了后一个,总有一个处于非使能状态。。

一旦通过就写了TFT的驱动,调试发现无法打开TFT DISP。oh 又无语中,不断的调试,找引脚连接图,最终发现数据手册上的引脚标错了。。叹。也怪自己。因为第一处标的是对的,自己看的第二处。。就这样今天一天也算差不多了,写好了TFT驱动显示了字符,可以横屏竖屏,并可以显示满屏,很开心。

而横屏和竖屏很是绕人,也经过了个把小时才弄通了。

这里为了以后不会忘记再次提及一下自己。我用的TFT使用ILI9341和9325不一样,只看到了E文,不过上面寄存器那边的单词还算简单。这里主要用到了0X36,0X2A,0X2B几个寄存器,而其它的不再记录。及ILI9341的使用和坐标" title="关于FSMC驱动LCD的总结,进入HardFault_Handler 及ILI9341的使用和坐标" style="border-width: 0px; list-style: none;">

以左上角为TFT屏的原点,如果置位MY则Y坐标将映射到对面同一条线上的点即319的点上,MX同理也会到对面同一直线的点上为239。(319和239为我屏的尺寸不表多数)如果同时设置了这两个点则原点会到(0,0)的对角线即最大坐标上(239,319)。而MV则是液晶屏的点亮方向(可以这么理解)它的点亮方向即向X方向点亮还是向Y方向点亮。

当然点亮屏幕的像素还和0X2A和0X2B命令有关。及ILI9341的使用和坐标" title="关于FSMC驱动LCD的总结,进入HardFault_Handler 及ILI9341的使用和坐标" style="border-width: 0px; list-style: none;">

0x2A设置列的长度,有4个参数,前两个参数为列的首坐标,后两个参数为列坐标的结束坐标。

及ILI9341的使用和坐标" title="关于FSMC驱动LCD的总结,进入HardFault_Handler 及ILI9341的使用和坐标" action-data="http%3A%2F%2Fs9.sinaimg.cn%2Fmiddle%2F79fbacedn7aaafe89e648%26690" action-type="show-slide" style="border-width: 0px; list-style: none;">

0X2B则是设置页地址即屏幕上到下的大小。设置了2A和2B整个操作只在这个区域才能被实现。

因此我们根据0x36中的MX和MY所设的坐标,和MV所设置的方向设置整个屏的大小。

假设屏水平放置,即水平方向为320,垂直方向为240.屏的左上角为坐标0,0。假设设置MV以X方向向右点亮,假设要点亮整个屏则需要将0X2A设置成319,0x2B设置成213。如果设置反了则 会出现以以下的情况及ILI9341的使用和坐标" title="关于FSMC驱动LCD的总结,进入HardFault_Handler 及ILI9341的使用和坐标" action-data="http%3A%2F%2Fs6.sinaimg.cn%2Fmiddle%2F79fbacedncaae0c593e95%26690" action-type="show-slide" style="border-width: 0px; list-style: none;">

这些都是个人理解。如果你是在调节液晶屏的横竖屏都显示的话你只要设置0X36、0X2A、0X2B这三个寄存器即可。可以自己调试点亮一排像素来得到自己想要的结果。

围观 854

PIC16F19197单片机系列集成了电池友好型LCD驱动、独立于内核的外设及智能模拟功能
Microchip Technology Inc日前推出了用于驱动液晶显示器(LCD)、集成独立于内核的外设(CIP)与智能模拟的全新低功耗单片机(MCU)系列产品。由9款器件组成的PIC16F19197家族包含了电池友好型LCD驱动电荷泵、带计算功能的12位模拟数字转换器(ADC2)、低功耗比较器以及高频振荡器的有源时钟调谐功能。

它们是首个针对广受欢迎的低功耗、电池供电且带触摸功能的LCD应用而优化的8位MCU系列。

PIC16F19197系列器件的引脚数从28到64不等,闪存最高达56 KB而RAM最高达4 KB。其备有的电荷泵确保了即使是在电池电压降低的情况下LCD屏幕也能保持一致的对比度。而ADC2可自动完成信号采集与处理任务,轻松实现强大的触摸按钮和滑块功能。此外,有源时钟调谐功能则可帮助客户确保振荡器能在整个电压和温度工作范围内平稳运行。PIC16F19197系列新器件可以完全在硬件环境中实现上述功能而无需依赖软件。

该系列器件还包含一个带电池备份与大电流I/O引脚的实时时钟和日历(RTCC),可直接驱动LCD背光。此外,其带有的空闲/打盹等低功耗模式以及外设模块禁用(PMD)功能可帮助延长电池使用寿命。同时,新器件还可以驱动多达360个LCD段。所有上述这些特点都使得PIC16F19197系列成为了由电池供电的LCD应用的理想选择。

“”

Microchip 8位MCU部副总裁Steve Drehobl表示:“PIC16F19197系列的问世简化了低功耗LCD应用的设计工作。所有这些新功能都可以在MPLAB代码配置器(MCC)中进行设置,这大幅缩短了开发时间并加速了产品的上市步伐。”

欲获取更多有关PIC16F19197系列产品的信息,请访问 www.microchip.com/pic16f19197family

开发支持

该系列产品由MPLAB® 代码配置器(MCC)提供支持。MCC是一款专用于MPLAB X和MPLAB Xpress集成开发环境的免费插件,可提供一个图形化界面来帮助研发人员针对其应用配置特定的外设和功能。此外,支持PIC16F19197系列MCU评估的Microchip LCD XLP Explorer开发板(部件编号:DM240314)现也已上市。

供货

PIC16F19197系列前三款器件现已开始提供样片并投入量产。产品提供多种封装选择。

围观 401

页面

订阅 RSS - LCD