打印

SPI Flash的图片数据以DMA方式送TFT显示

[复制链接]
5970|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
byrin|  楼主 | 2011-10-28 14:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
SPI Flash 只支持8位传输,TFT却是16位的。我想用DMA去提高速度。但是源和目的地的数据宽度不一致。
  有想过先DMA把SPI Flash 的数据取到RAM中,转化成16位宽的数据再DMA送至GRAM(TFT显存)中去。由于屏是320x480的,所以RAM中建缓冲区是行不通的。。
怎么样去做呢?现在。。
大家帮忙头脑风暴一下,给点idea!!!
沙发
airwill| | 2011-10-28 14:47 | 只看该作者
RAM中建缓冲区不可行的原因是 RAM 不够大. 那就把 SPI Flash 的数据分小块. 那个 3~5K RAM 做缓冲还是可以的

使用特权

评论回复
板凳
byrin|  楼主 | 2011-10-28 16:10 | 只看该作者
哥哥。。你这想法我也有过,但是不行。把数据分割太小的话,DMA就失去了意义。分割小的话,对应的量就大了。严重影响DMA工作效率!!!。。。

使用特权

评论回复
地板
airwill| | 2011-10-28 19:26 | 只看该作者
那就看你怎么选择合适的缓冲区大小了。

使用特权

评论回复
5
香水城| | 2011-10-28 23:11 | 只看该作者
那就看你怎么选择合适的缓冲区大小了。
airwill 发表于 2011-10-28 19:26


是的LZ的想法可行,选择合适的缓冲区大小是一个关键点。

另外,请LZ看看手册上这一段,你直接用DMA应该可以实现8位Flash至16位TFT的数据传送,但具体怎么做要看你的硬件连接。

STM32_FSMC_SRAM.GIF (16.2 KB )

STM32_FSMC_SRAM.GIF

使用特权

评论回复
6
byrin|  楼主 | 2011-10-29 18:35 | 只看该作者
香水大哥,不行滴..DMA 的datasheet 我也看过..

使用特权

评论回复
7
byrin|  楼主 | 2011-10-29 18:37 | 只看该作者
本帖最后由 byrin 于 2011-10-29 18:39 编辑

8位到16位只是简单的高位补0..这会将8位数据 合并成16位的..

今天在RAM 里面设置 了一个缓冲区 16位数组.从SPI Flash 中DMA 以byte 宽度传送过来存进缓冲区数组.自动拼接成功!!!

使用特权

评论回复
8
lianshumou| | 2011-10-30 08:34 | 只看该作者
你可以用两个DMA通道加两个缓冲区,乒乓操作,这样就可解决你的问题了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
byrin + 1
9
byrin|  楼主 | 2011-10-31 20:26 | 只看该作者
乒乓DMA? 嗯,好主意.去试试,以前没用过..

使用特权

评论回复
10
byrin|  楼主 | 2011-11-2 22:01 | 只看该作者
乒乓DMA 失败,,不知道是什么原因!回来的数据是乱的,

使用特权

评论回复
11
sh007| | 2011-11-17 20:07 | 只看该作者
最近也在做这个尝试,LZ 目前进展得怎样了?大家交流交流!我的是320×240 的

使用特权

评论回复
12
1066950103| | 2015-11-15 13:59 | 只看该作者
实现了没有呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

104

帖子

1

粉丝