野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11749|回复: 2

想请教一个STemWin的问题

[复制链接]
发表于 2016-4-23 00:05:46 | 显示全部楼层 |阅读模式
最近在学习STemWin,用的429的开发板,第一次接触,没有老师指导感觉好难,很多代码都得不到解释,特别是LTDC和DMA2D的驱动问题。
首先想问的是在emWin里,第X层绘图和LTDC的第X层是不是指的同一块buff?或者说,在emWin里,是将几层混合完了直接送给LTDC的第1层,而LTDC的第0层不需要考虑数据的更新?
第二点就是各种驱动的编写,到底是怎样的流程,现在看到好多版本的驱动,写法都不一样。
还有就是在这个《06. emWin_touch_V5.28_ARGB1555》工程中的源代码里,有这样一段代码
static void _LCD_CopyBuffer(int LayerIndex, int IndexSrc, int IndexDst)
{
  U32 BufferSize, AddrSrc, AddrDst;
  BufferSize =_GetBufferSize(LayerIndex); //800*480;
  AddrSrc    = _aAddr[LayerIndex] + BufferSize * IndexSrc;
  AddrDst    = _aAddr[LayerIndex] + BufferSize * IndexDst;
  _DMA_Copy(LayerIndex, (void *)AddrSrc, (void *)AddrDst, _axSize[LayerIndex], _aySize[LayerIndex], 0, 0);
}
好像最终要将该函数用于emWin,但完全不懂那个IndexSrc和IndexDst,_aAddr[LayerIndex]好像是LTDC的显存,AddrSrc、AddrDst计算结果这两个都是LTDC显存的首地址+屏幕一层所占显存数的整数倍?这地址是不是应该由emWin来确定?
恳请老师解答。
最后希望老师们能够早点出点参考书,辛苦了

回复

使用道具 举报

发表于 2016-4-23 08:58:55 | 显示全部楼层
LTDC驱动的教程已经更新了:http://pan.baidu.com/s/1qYlAqgk

emwin例程里,只给了一层给emwin,另一层直接显示背景
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-26 22:57:38 | 显示全部楼层
去年提出的问题今年终于搞明白了, _LCD_CopyBuffer()不是在层与层之间拷贝,而是在每一层各自的连续多缓冲内存块中拷贝数据。以前没有仔细看说明文档,觉得英语的不想看。传递的参数IndexSrc和IndexDst就是缓冲块的索引,每一块缓冲块都贮存显示器一帧画面的数据。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 02:40 , Processed in 0.251064 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表