每个液晶屏的时序都不一样,但总体上是类似的。如下图:
VDEN: 数据使能信号。HSYNC: 每一行扫描的起始点, 在扫描过程中, 不会管上一行扫描有没有结束, 当出现这一个信号,即开始新一行的扫描.VSYNC: 每一场扫描的起始点, 这与HSYNC相似的.BACK PROCH: 因为有不同tft屏和不同扫描硬件, 并且HSYNC和VSYNC对于时序的约束力有限, 所以会加入一些容错的时间, 因此行扫描和场扫描都会有BACK PROCH: 和FRONT PROCH: , 并且会在HSYNC,VSYNC出现之后, 和正常分辨率扫描之后都将容错时序, 也就是在正常扫描的前后都加入容错时间, BACK PROCH: 虽然从字面上理解是后容错, 但通常会放在正常描述之前, 当然这还要看具体TFT屏的规格书.FRONT PROCH: 也就是放在正常描述之后的容错时间. 同上.CLK: 也就是正常扫描的时钟, 一个上升沿只会扫描一个pixel.从下面这个示意图可以比较直观的看出:
注意:有些液晶屏给的参数单位可能不一样,需要自己计算。
各参数值确定方法如下:
VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图,VBPD=t3/t6=1.02 mS/31.77μs=32。
VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5/t6=0.35 ms/31.77μs=11。
VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2/t6=0.06 ms/31.77μs=2。
HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89 μs×25MHz=47。
HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94 μs×25 MHz=24。
HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25 MHz=94。
LTDC的使用问题?
可参考官方例程的配置,需要注意的是,它只是一个LCD控制器,需要定义缓存的地址。可以设置在flash里,但是不便于操作,一般还是建议设置外部SDRAM里。可参考下面这个PDF文档。
LTDC中DMA2D的使用问题?
429中LTDC的2D加速功能还比较简单,只有以下4种模式 DMA2D功能: DMA2D_M2M 从flash拷贝至显存 DMA2D_M2M_PFC 从flash拷贝至显存,并可以进行颜色的格式转换,替换/不更改/混合 DMA2D_M2M_BLEND 从flash拷贝至显存,并先进行前景与后景色混合 DMA2D_R2M 拷贝固定颜色至显存使用方式:uint32_t DMA2D_OutAdd;uint32_t DMA2D_InAdd;void DMA2D_M2M_Config(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height){DMA2D_InitTypeDef DMA2D_InitStruct;DMA2D_FG_InitTypeDef DMA2D_FG_InitStruct;/* Enable the DMA2D Clock */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE);/* DMA2D configuration */DMA2D_DeInit();/* Transfer mode */DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M;/* Color mode */DMA2D_InitStruct.DMA2D_CMode = DMA2D_RGB565;DMA2D_OutAdd = CurrentFrameBuffer + 2*(LCD_PIXEL_WIDTH*Ypos + Xpos);/* Output Address */DMA2D_InitStruct.DMA2D_OutputMemoryAdd = DMA2D_OutAdd;/* Number of lines : height */DMA2D_InitStruct.DMA2D_NumberOfLine = Height;/* Number of pixel per line : width */DMA2D_InitStruct.DMA2D_PixelPerLine = Width;/* Initialize the alpha and RGB values */DMA2D_InitStruct.DMA2D_OutputGreen = 0;DMA2D_InitStruct.DMA2D_OutputBlue = 0;DMA2D_InitStruct.DMA2D_OutputRed = 0;DMA2D_InitStruct.DMA2D_OutputAlpha = 0;/* Initialize the output offset */DMA2D_InitStruct.DMA2D_OutputOffset = (LCD_PIXEL_WIDTH - Width);/* Initialize DMA2D */DMA2D_Init(DMA2D_InitStruct);/* Configure default values for foreground */DMA2D_FG_StructInit(DMA2D_FG_InitStruct);/* Configure DMA2D foreground color mode */DMA2D_FG_InitStruct.DMA2D_FGCM = DMA2D_RGB565;/* Configure Input Address */DMA2D_FG_InitStruct.DMA2D_FGMA = CurrentFrameBuffer+BUFFER_OFFSET;/* Initialize foreground */DMA2D_FGConfig(DMA2D_FG_InitStruct);/* Start Transfer */DMA2D_StartTransfer();/* Wait for CTC Flag activation */while(DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET){}}
FPGA可以直接驱动RGB屏,数据速度是无法估量的,可以显示实时画面。stm32只能用带驱动芯片和显存的显示屏。速度一般。可以他们两个结合起来,用fpga做一个图形加速芯片,stm32调用。
这个看你做那些部分应用,树派带协处理可以很快地速度完成压缩解压缩,但是如果你直接从摄像头获取rgb数据那解压缩就用不上.
单纯的H7片上内存是很少的根本不够,然而如果你上来就二值化处理那还是能凑合的。
SPI几个脚对应 TP几个脚电源地接好,FLASH CS 接高电平一直选择改LCD模块因为只用这一块LCD,要是需要两个LCD显示需要STM32另外提供引脚,需要ucos ii多任务显示比较好,然后说a17、a18、a19是FSMC引脚。
STM32有FSMC(其实其他芯片基本都有类似的总线功能),FSMC的好处就是一旦设置好之后,WR、RD、DB0-DB15这些控制线和数据线,都是FSMC自动控制的。
打个比方,当在程序中写到:
*(volatile unsigned short int *)(0x60000000)=val;
那么FSMC就会自动执行一个写的操作,其对应的主控芯片的WE、RD这些脚,就会呈现出写的时序出来(即WE=0,RD=1),数据val的值也会通过DB0-15自动呈现出来(即FSMC-D0:FSMC-D15=val)。
地址0x60000000会被呈现在数据线上(即A0-A25=0,地址线的对应最麻烦,要根据具体情况来,好好看看FSMC手册)。
本文标签:stm32哪款可以点rgb屏