OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4269|回复: 7

TFT显示BMP图片错位问题

[复制链接]

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-4-8
在线时间
13 小时
发表于 2018-4-19 21:52:14 | 显示全部楼层 |阅读模式
5金钱
error.jpg
问题现象:如图,红框中的图片错位问题。整张图其他部分都好好的,但是错位的部分本应该在另一侧显示。文件数据是从SD卡读出来的。
DEBUG模式下发现一个问题:
error1.jpg error3.jpg
前者是DEBUG模式下看到的从SD卡读出来的BMP数据(BMP头部信息都已经读完了,当前读取的数据起始位置就是0x46),后者是我用BMP解析工具查看到的真正的图片部分的数据。DEBUG模式中数据区的前16个字节之后才是工具解析出来的图片数据,不知道为何数据有问题?之前看到有资料说的什么字节对齐,地址偏移的问题,但是现在找不到那个资料了,希望论坛里有前辈可以指点一下这个问题。
显示图片代码如下

           fres = f_read(pfil,&infoHead,sizeof(BITMAP_INFO_HEADER),&nbw);//读取BMP文件信息头

           if(fres == FR_OK)//读取成功
           {
               if(infoHead.biWidth==240 &&  infoHead.biHeight==320)
                   LCD_Scan_Dir(0);
               else if(infoHead.biWidth==320 &&  infoHead.biHeight==240)//横屏显示照片
                   LCD_Scan_Dir(5);
               LCD_Clear(WHITE);//清屏
               LCD_SetCursor(0,0);//设置刷图起始点
               LCD_WriteRAM_Prepare();

               for(u8 j=0;j<12;j++)//每次读取12800bytes字节,总共12次。
               {
                  nbw=0;
                  fres = f_read(pfil,&databuf,12800,&nbw);
                  for(u16 i=0;i<SIZE;i++)//SIZE=6400 因为两个字节为一个像素点。12*6400==320*240.图片大小和屏幕大小是一致的
                  {
                      LCD_WriteRAM((databuf[i*2+1]<<8)|databuf[i*2]);
                  }
               }
               return 1;
           }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-21 02:46:17 | 显示全部楼层
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2016-8-3
在线时间
51 小时
发表于 2018-4-21 14:00:34 | 显示全部楼层
巧了我最近也跟你一样的问题,不过我的是上位机在对图片转化成RGB565格式时出错造成的
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-4-8
在线时间
13 小时
 楼主| 发表于 2018-4-21 16:52:07 | 显示全部楼层

仿真就发现从SD卡读出来的文件数据有点偏移
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-4-8
在线时间
13 小时
 楼主| 发表于 2018-4-21 16:52:32 | 显示全部楼层
277522260 发表于 2018-4-21 14:00
巧了我最近也跟你一样的问题,不过我的是上位机在对图片转化成RGB565格式时出错造成的

我本来就是用PS做的565格式的图片,就不必解码了。就是显示位置出了问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-22 02:05:54 | 显示全部楼层
菜鸟L 发表于 2018-4-21 16:52
我本来就是用PS做的565格式的图片,就不必解码了。就是显示位置出了问题

先整个小点的线试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2016-8-3
在线时间
51 小时
发表于 2018-4-23 15:37:45 | 显示全部楼层
菜鸟L 发表于 2018-4-21 16:52
我本来就是用PS做的565格式的图片,就不必解码了。就是显示位置出了问题

PS做出来的565图像正确不
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-4-8
在线时间
13 小时
 楼主| 发表于 2018-5-7 00:02:10 | 显示全部楼层
277522260 发表于 2018-4-23 15:37
PS做出来的565图像正确不

这个是没毛病的,我在PC上用软件看过
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 20:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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