历史上的今天
今天是:2025年06月03日(星期二)
2018年06月03日 | STM32F429中LTDC的DMA2D加速
2018-06-03 来源:eefocus
液晶屏的时序问题?
每个液晶屏的时序都不一样,但总体上是类似的。如下图:
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里面的数据导入显存中显示。
史海拾趣
|
据外电报道,手机制造商摩托罗拉周一表示,公司将把其汽车电子业务部以10亿美元的价格出售给德国的一家轮胎公司大陆公司,这样摩托罗拉就可以更加专心致志地把重点放在发展通讯技术上。 这个拥有4500名员工的部门去 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 2006年,在消费类电子产品制造继续快速发展的带动下,中国MCU市场依旧保持了较好的发展势头,增长率继续维持在25%以上的高水平。从应用领域来看,一方面,消费电子产品仍是中国MCU市场需求的主 ...… 查看全部问答> |
|
模数转换后的8路二进制数用7段译码显示器输出电路---要硬件的 模数转换后的8路二进制数用7段译码显示器输出电路---要硬件的。。。。。。。。。。。。。。急急急,我作的毕业设计急用,哪位高手指点指点,发个图过来啊谢谢了… 查看全部问答> |
|
21个详细且精湛的模拟电子技术问答,内容包括: 01 电压基准及时间基准 O2 压频转换器 03 高速比较器 04 运算放大器 05 数模转换器 06 Σ ?Δ模数转换器 07 数据转换器的噪声及其它问题 08 运算放大器的噪声 09 运算放大器的建立时间 10 串行数据转 ...… 查看全部问答> |
|
因为eewrold每个帖子指数限制是1万字,只能切开分几个帖子,顺便说下,这个字数限制实在是没理由。 LTIB (Linux Target Image Builder)是飞思卡尔公司开发的一个工具,用于简化嵌入式bsp开发的工具,基本上就是一些脚本加上预先制作成功交叉工 ...… 查看全部问答> |
|
我用数据线连接mobile的USB口和电脑的USB口。想用串口通信的方法,写程序让这两个设备通信,这样可行吗?用CreateFile函数,但我不知道具体到哪一个串口。一个一个的试过了也没有成功接收到数据。手机上面的那个USB口我怎么才能知道是哪个口呢?电 ...… 查看全部问答> |
|
知名公司招聘硬件产品工程师,要求有硬件电路设计经验,熟练使用各种电子测试设备。 如下jd,有意者可咨询alice Job Title Hardware PE (Shanghai) Roles and Responsibilities 1. This position will be to work as a member of ...… 查看全部问答> |




