微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC1788读取SD卡图片问题

LPC1788读取SD卡图片问题

时间:10-02 整理:3721RD 点击:
我用lpc1788做一个图片显示的程序。刚开始试验时,是将24位图片转换成C语言数组,直接映射到显存地址,显示图片,图片显示正常。后来我按照这个思路,从SD卡读取显示图片,发现图片像素值错位了。我将pDst16数据通过串口发送出来发现和数组的形式是一样的,所以我现在不知道是哪个地方出了问题。
这个是正确的:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
pBmp8 = (uint8_t *)ac480x272Pic01;//数组转换成指针,并把高低位组合   
for(i=0;i<(C_GLCD_H_SIZE * C_GLCD_V_SIZE);i++)
{
  *pDst16 =*pBmp8++<<16;
  *pDst16 +=*pBmp8++<<8;
  *pDst16 +=*pBmp8++;
  *pDst16++;
}
错误的:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
for (i=0;i<480*272;i++)
{
  f_read(&bmpfsrc,&pColorData,3,&read_num);  // 每次读取三个像素
  pBmp8 = (uint8_t *)pColorData;             // 数组转换成指针
  *pDst16 =*pBmp8++<<16;
  *pDst16 +=*pBmp8++<<8;
  *pDst16 +=*pBmp8++;                        //  三个像素高低位组合,映射到LCD地址上
  //xprintf("%d:%x\r\n",i,*pDst16++);      
}

ac480x272Pic01是个数组,里面存放着24位图片的270*480*3个像素值。

把代码上传看看

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top