特权同学

SD卡里的BMP

0
阅读(4021)

本以为SDRAM+232调试完 成,加上之前的SD+232完成。也就是说单模块完成,粘合在一块应该也不是难事。但是调试中还是比较费尽周折的。

首先单说这个BMP,之前的文章归纳里 漏提了BMP数据的第三部分应该是色彩表。比如我的图片是8位色即256色的,那么这个色彩表应该是有256个色彩单元的数据, 而每一个色彩单元数据是由4个字节即R一个字节、G一个字节、B一个字节、另一字节保 留。就是说单单我的256色位图的色彩表数据应该是1024字节,所以加上之 前提到的54个字节的位图头数据,那么8位图的BMP数据的起始1078个字节以后的数据 才是真正意义上的色彩信息。那么这个色彩信息和色彩表有怎样一种关系呢,其实也比较简单,只有根据色彩数据对应找到色彩表里以4个字节为单位的单元里的数据就是其相应的色彩信息了。个人感觉这个对于本人的应用,即RGB的位数固定时像是有点多此一举。

此外,色彩信息数据的存放也不是想当然的从第一个有效数据开始对应的是屏幕左上角的第一个像素点, 最后一个对应右下角最后一个点。不是这样,而是第一个有效数据对应右下角第一个像素,最后一个数据对应右上角最后一个像素,呵呵,和常理恰恰相反!也让特 权同学蒙了好一阵子。

最后出现的问题当数原本以为SDRAM的一次8个数据读取足够VGA显示需要了,结果调 试中回头再细算了一下,还是发现了一些问题,因为这个SDRAM的控制器做的读取效率不是很高,基本是230ns读取8个字节(有待优化),所以满足不了在50M下800*600分辨率的VGA刷新,降到200ns读取8个字节后一切OK了。呵呵,同时测试SD卡的SPI读速率50Mb也很正常。

下面看看实际的一个800*600的256色位图和特权同学通过读取SD卡缓存到SDRAM里再送VGA显示的图片。

实际图片:


显示效果:


色彩有些丢失是因为在XP下位图的B是3bit的,而特权同学用电阻搭了B色彩只有2bit。

做到这一步了,基本的数码相框的雏形算是出来了,下一步就是不断的优化代码以及完善功能。

Baidu
map