|
在做emwin,做bmp图片显示实验。发现使用文件系统读取bmp图片,可以正常显示图片(GUI_BMP_Draw(_acbuffer, x0, y0);参考安富莱V6第十六章 bmp显示实验程序。)如果将bmp图片存储到外部spi flash中,不使用文件系统,直接使用spi通讯读取,
将文件系统中的读取接口/* 读取文件到动态内存 */
/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.fsize);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
/* 读取文件到动态内存 */
result = f_read(&file, _acBuffer, file.fsize, &bw);
if (result != FR_OK)
{
return 0;
}
GUI_BMP_Draw(_acBuffer, 0, 0);
更换为spi读取接口
/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file.fsize);
/* 将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
/* 读取文件到动态内存 */
sf_ReadBuffer(_acBuffer, _uiReadAddr,_uiSize)
GUI_BMP_Draw(_acBuffer,0,0);
则不能正常显示。
然后添加串口测试函数,打印读取到的数据
for(num = 0;num<4096; num++)
{
printf("_acBuffer = %X\r\n",*_acBuffer);
_acBuffer++;
}
使用文件系统的数据,与使用spi 读取的数据不一致。但spi读取的数据与bmp图片一致
1、直接将bmp图使用 binary Viewer打开查看十六机制数据,或者使用visual studio(不是vscode)查看。
2、使用spi读取存入外部flash中的bmp数据(bmp未处理,直接以bmp格式存储)。通过串口打印,经对比,与软件打开bmp查看的十六进制 数据一致(99.9%)
3、使用fatfs从SD卡读取bmp,串口打印,发现数据与上面不一致
使用fatfs 读取初始化显示一次时,如图4,在屏幕一侧 有重影
如果将其放在whie 循环中一直显示。虽然有正常图片,但是一侧还是有重影,如图5
遇到的问题比较多
|
-
使用读取二进制软件直接打开bmp图片
-
使用spi读取数据,与软件查看一致
-
使用文件系统读取的数据,与前两者不一致
-
图片显示会在一侧,这是啥问题
-
放在while循环移植读,能显示正常,但是顶层还是有拉丝
|