STM32驱动RA8875彩屏正确显示图像

经过一段时间的折腾,在磕磕绊绊的前进中,终于收获了成果。我的图像终于能正常显示了。 先晒下美图:

 
 
以下记录调试过程种遇到的问题。
 
1、我采用循序将近的方法,首先通过 image2LCD取图像的二进制文件,配置为:按照默认配置(不选高位在前,RGB(565))
 

取出图片的二进制 文件保存下来。做一个上位机软件通过串口下载到MCU,MCU再写入到FlashRom。通讯协议自己定的。

(取的图片文件是低位在前的,上位机软件可以选择高位在前。)
 
注:MCU从Flash中读取数据再送RA8875显示是低位在前。  
RA8875直接控制FlashRom是高位在前的。


图片下载后,通过MCU从Flash中读取数据再送RA8875能够显示图像,但速度比较慢,一屏慢慢地刷下来。

初步效果实现了,但这样的速度是不行的。动手开始第二步尝试,RA8875控制读取FlashRom的数据显示图片。

把显示上的PWM口线悬空(注:MCU读取时PWM要接3.3V)。配置RA8875的控制命令。

void RA8875_DMAReadBlock(uint32_t _usSSAR,uint16_t _usSPWR, uint16_t _usBHR,uint16_t _usBWR,uint16_t _usCURH,uint16_t _usCURV)
{
 uint8_t ucFB=0;
 //区块数据存储器直接存取模式. 
 ucFB = RA8875_ReadReg(0xE0);
  
  RA8875_WriteReg(0x30, 0);
  RA8875_WriteReg(0x31, 0);
  RA8875_WriteReg(0x32, 0);
  RA8875_WriteReg(0x33, 0);
 
  RA8875_WriteReg(0x34, (uint8_t)800);
  RA8875_WriteReg(0x35, 800>>8);
  RA8875_WriteReg(0x36, (uint8_t)480);
  RA8875_WriteReg(0x37, 480>>8);
 
  RA8875_WriteReg(0x46, (uint8_t)_usCURH);
  RA8875_WriteReg(0x47, _usCURH>>8);
  RA8875_WriteReg(0x48, (uint8_t)_usCURV);
  RA8875_WriteReg(0x49, _usCURV>>8);  
 
 //SF_CS0:字库。 SF_CS1:图库。
 //可以用 RA8875_WriteReg(0x05, (1 << 7) | (0 << 6) | (1 << 5) | (1 << 3) | (1 << 2) | (0 << 1) | 0);
RA8875_WriteReg(0x05, (1 << 7) | (0 << 6) | (0 << 5) | (0 << 3) | (1 << 2) | (0 << 1) | 0);
 
  RA8875_WriteReg(0xB0, _usSSAR);
  RA8875_WriteReg(0xB1, _usSSAR>>8);
  RA8875_WriteReg(0xB2, _usSSAR>>16);
 
  RA8875_WriteReg(0xB4, _usBHR);
  RA8875_WriteReg(0xB5, _usBHR>>8);
 
  RA8875_WriteReg(0xB6, _usBWR);
  RA8875_WriteReg(0xB7, _usBWR>>8);
 
  RA8875_WriteReg(0xB8, _usSPWR);
  RA8875_WriteReg(0xB9, _usSPWR>>8);
 
  ucFB = RA8875_ReadReg(0xBF);
  RA8875_WriteReg(0xBF, ucFB|0x03);
 
   //////RA8875_WriteReg(0xBF, ucFB|0x03);

  ucFB = RA8875_ReadReg(0xBF);
  while(ucFB & 0x01==1)
  {
   ucFB = RA8875_ReadReg(0xBF);
  }
//  RA8875_WriteReg(0x46, _usX);
//  RA8875_WriteReg(0x47, _usX >> 8);
//  RA8875_WriteReg(0x48, _usY);
//  RA8875_WriteReg(0x49, _usY >> 8);
 
经过不断的尝试,图像出来的是乱七八糟的,花的,不过总算出来了,说明RA8875读取到Flash了。
 
下面要解决花的问题。在排除了种种因素后,我找到RA8875的一个例子,比对里面的图片文件,发现图片数据竟然是“高字节在前”,而我的文件是低字节在前。找到原因,决定尝试,重新下载图像,图像再次出现,有了小小的进步,图像能看出来了,不过是斜的。

下面要解决斜的问题。我发现图像的最后一行显示了1/3,是不是和图像的宽度有关,我再次尝试把调用命令里图像宽度由原来的800,改为了799。这次图像正常出来了,又一个大的进步。仍然不理想,图像中有许多杂色。这让人头疼。
 
下面开始排除问题。图像RGB的顺序问题吗?经过反复测试,好像不是,程序问题?也没找出来。偶然间,我发现上位机下传图像很慢,于是监听了串口通讯,发现竟然有Flash写入失败的情况,莫非是flash没写进去,造成图像上的杂色?极有可能,检查程序也没找到问题,莫非是flash的写入速度快?原来spi是2分频,决定改为4分频。再次尝试,下载正常没有再出现写入错误,下载速度也提高了。运行程序,一副清晰的图像出来了,心情忽然开朗,一种无形的预约涌上心头。一副图像在艰难曲折的道路上出来了。仍然有些美中不足,最下面一行有480个像素没显示。留下待解决。
 
最后的问题已经解决,调用函数的参数如下:
        
RA8875_DMAReadBlock(0,0,799,479, SPI1_tu1_ADDR,800, 800,480,0,0);

最后来张完整的照片:

永不止步步 发表于11-28 09:10 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:307167个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号