STM32F429中LTDC的DMA2D加速

发布者:advancement4最新更新时间:2018-06-03 来源: eefocus关键字:STM32F429  LTDC  DMA2D加速 手机看文章 扫描二维码
随时随地手机看文章

液晶屏的时序问题?

每个液晶屏的时序都不一样,但总体上是类似的。如下图:
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里。

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)  

    {  

    }  

}  

先定义好输入指针,这个函数实现的就是把flash里面的数据导入显存中显示。

关键字:STM32F429  LTDC  DMA2D加速 引用地址:STM32F429中LTDC的DMA2D加速

上一篇:STM32F429--LTDC寄存器详解
下一篇:使用STM32CubeMX进行STM32F429 LCD编程<二>层配置

推荐阅读最新更新时间:2024-03-16 16:04

STM32F429--STM32的PWM占空比产生与测量
一、PWM波形的产生; 使用定时器2 (TIM2)PA5端口输出。 通过配置 TIM_TimeBaseStructure.TIM_Period= 1000 - 1; TIM_TimeBaseStructure.TIM_Prescaler= 9000 - 1; TIM_OCInitStructure.TIM_Pulse= 300 ; 三个参数,TIM_Prescaler控制计数频率,此处9000即计数频率为90M/9000 = 10Khz,即计数一次的时间为0.1ms,TIM_Period控制PWM波周期时间,此处1000即PWM波的周期为1000*0.1ms = 100ms;TIM_Pulse控制有效电平时
[单片机]
STM32F429--STM32的PWM占空比产生与测量
STM32F429 >> 10. DMA_直接存储器访问
本工程板级支持包文件适用于野火stm32f429 开发板。 DMA 传输实现高速数据移动过程无需任何CPU 操作控制 其支持以下三种传输方式: 外设到存储器传输; 存储器到外设传输; 存储器到存储器传输。 功能框图: ① 外设通道选择 外设通道选择所解决的问题是决定哪一个外设作为数据传输的源地址或目标地址。 DMA1 请求映射: DMA2 请求映射: 每个外设请求都占用一个数据流通道,相同外设请求可以占用不同数据流通道。 ② 仲裁器 仲裁器管理数据流方法分为两个阶段。 第一阶段属于软件阶段,我们在配置数据流时可以通过寄存器设定其优先级别,具体配置DMA_SxCR 寄存器PL 位,可以设置为
[单片机]
<font color='red'>STM32F429</font> >> 10. DMA_直接存储器访问
STM32F429 如何使用NAND Flash
(1)原理介绍: http://www.51hei.com/stm32/3609.html Flash即是存储芯片的一种,其结合了ROM和RAM的特点,既具备电可擦除编程的性能,又可以快速读取数据,数据不会因断电丢失。目前市面上Flash主要有NOR Flash和NAND Flash。 NOR Flash具有随机存取和随字节执行写操作的能力,即可以访问到存储器内部的任意一个字节,且具有读取速度快等特点,它占据1MB—16MB闪存的大部分市场,根据其读取数据速度快的特点主要应用在代码存储; NAND Flash以“页”为单位进行对数据的读写操作,且具有写入和擦除速度快等特点,它应用在8MB—256MB的产品中,根据其特点
[单片机]
STM32F429 PWM配置
void TIM4_PWM_Init(u32 arr,u32 psc, u32 dutyCycle) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM4时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Pe
[单片机]
STM32F429之使用FPU和DSP
CMSIS的DSP库提供了一类高级数学处理功能,包括: Basic math functions Fast math functions Complex math functions Filters Matrix functions Transforms Motor control functions Statistical functions Support functions Interpolation functions 该库使用不同的函数来处理8位、16位和32位整型以及32位浮点型数据。 STM32F429具有浮点处理器(FPU),在开启FPU的情况下,浮点数运算性能大大提高,配以DSP库的
[单片机]
STM32F429 >> 8. 系统定时器
本工程板级支持包文件适用于野火stm32f429 开发板。 bsp_systick.c /** ****************************************************************************** * @file bsp_systick.c * @author Waao * @version V1.0.0 * @date 22-Dec-2018 * @brief This file contains some board support package's functions for the configuration of the SysTic
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved