[开发板与模块] 【ESK32-30519 + ESK32-21001测评】+flash存储器读写及图像再现

[复制链接]
 楼主| jinglixixi 发表于 2022-10-8 15:50 | 显示全部楼层 |阅读模式
<
本帖最后由 eltonchang2001 于 2022-11-9 11:53 编辑

在使用显示屏显示图像时,往往是将图像数据存放到数组中,然后再通过相应的显示函数将其显示到屏幕上。当图像数据比较大,且程序存储空间又有限的情况下,则会限制正常的实现。那如何来解决此类问题呢?那就需要借助外部的存储器件来解决,由于ESK32-21001扩展板上配有FLASH型存储器MX25L6406E,为此可以使用它来存放图像数据以解决存储空间不知的问题。ESK32-21001上的MX25L6406E电路连接关系,如图1所示。
1.jpg
1 接口电路

有了存储介质,那又该如何来解决数据的来源问题呢?
将图像数据存放到数值的方式显然是行不通的,为此只好借助串行通讯来提供数据。
使用串口来发送数据文件并加以输出测试的效果,见图2所示。
2.jpg
2数据文件收发测试
实现图像文件转存到FLASH来再现图像的主程序如下:
  1. int main(void)
  2. {
  3.          u16 i,j,k,dat;
  4.          u8  sj[80]={0x00};
  5.          UxART_Configuration();  //串口初始化
  6.          app_tft_init();
  7.          ili9341_init();                 // 显示屏初始化
  8.          ili9341_clear(RED);        // 清屏
  9.          set_cursor(0,0);
  10.          gram_prepare();
  11.          SPI_FLASH_Init();         // FLASH初始化
  12.          SPI_FLASH_WriteStatus(0x00);
  13.          SPI_FLASH_SectorErase(FLASH_TEST_ADDR);
  14.          // 接收图像数据并转存到FLASH
  15.          k=0;
  16.          while(k<40)
  17.          {
  18.                i=0;
  19.                while(i<80)
  20.                {
  21.                     if(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == SET)
  22.                     {
  23.                             dat = USART_ReceiveData(HTCFG_UART_PORT);    // 接收串口数据
  24.                             sj[i]=(u8) dat;
  25.                              i=i+1;
  26.                      }
  27.                }
  28.                SPI_FLASH_BufferWrite(sj, FLASH_TEST_ADDR+k*80, 80);    // 将接收数据存入FLASH
  29.                k=k+1;
  30.          }

  31.          // 从FLASH读取数据以再现图像,图片规格为40*40像素点。
  32.          k=0;
  33.          while(k<40)
  34.          {
  35.                set_cursor(0,k);
  36.                gram_prepare();
  37.                SPI_FLASH_BufferRead(sj,  FLASH_TEST_ADDR+k*80, 80);    // 读取FLASH数据
  38.                for(j=0;j<80;j++)
  39.                {
  40.                       write_data(sj[j]);  // 再现图像
  41.                }
  42.               k=k+1;
  43.        }
  44.        while (1);
  45. }

经程序的编译与下载,其显示效果见图3所示。
这样再有高分辨率的图像显示问题,通过该处理方式就都可以较好地解决了。
3.jpg
3 图像再现



chenqianqian 发表于 2022-10-8 20:20 来自手机 | 显示全部楼层
该芯片的SPI速率可以达到多少?
 楼主| jinglixixi 发表于 2022-10-9 10:06 | 显示全部楼层
chenqianqian 发表于 2022-10-8 20:20
该芯片的SPI速率可以达到多少?

据说可达800 MHz
abotomson 发表于 2022-11-1 09:39 | 显示全部楼层
如何用单片机读写FLASH?  
hilahope 发表于 2022-11-1 09:54 | 显示全部楼层
如何用单片机读写FLASH?  
geraldbetty 发表于 2022-11-1 12:01 | 显示全部楼层
fatfs 怎么避免flash擦写寿命  
tifmill 发表于 2022-11-1 15:11 | 显示全部楼层
使用文件操作系统了吗              
 楼主| jinglixixi 发表于 2022-11-1 15:45 | 显示全部楼层
hilahope 发表于 2022-11-1 09:54
如何用单片机读写FLASH?

移植相应的功能函数
 楼主| jinglixixi 发表于 2022-11-1 15:46 | 显示全部楼层
tifmill 发表于 2022-11-1 15:11
使用文件操作系统了吗

没有
hearstnorman323 发表于 2022-11-1 16:05 | 显示全部楼层
单片机操作内存卡,读写文本文件?  
everyrobin 发表于 2022-11-1 16:52 | 显示全部楼层
怎么对单片机内部flash进行坏块检测?  
uiint 发表于 2022-11-1 17:44 | 显示全部楼层
fatfs文件系统读写申请多少内存空间
averyleigh 发表于 2022-11-1 18:35 | 显示全部楼层
存储器flash的读取速度是多少  
caigang13 发表于 2022-11-1 19:06 来自手机 | 显示全部楼层
下一步可以移植一个图形界面
louliana 发表于 2022-11-1 19:31 | 显示全部楼层
flash能不能移植一个fat文件系统?      
ingramward 发表于 2022-11-2 17:18 | 显示全部楼层
fatfs 会很费单片机内存吗  
 楼主| jinglixixi 发表于 2022-11-3 10:06 | 显示全部楼层
louliana 发表于 2022-11-1 19:31
flash能不能移植一个fat文件系统?

应该可以,在其他开发板上见过。
 楼主| jinglixixi 发表于 2022-11-3 10:07 | 显示全部楼层
ingramward 发表于 2022-11-2 17:18
fatfs 会很费单片机内存吗

应该是,比较是个文件系统呀!
 楼主| jinglixixi 发表于 2022-11-3 10:08 | 显示全部楼层
everyrobin 发表于 2022-11-1 16:52
怎么对单片机内部flash进行坏块检测?

写后在读,比较一下。
 楼主| jinglixixi 发表于 2022-11-3 10:10 | 显示全部楼层
tifmill 发表于 2022-11-1 15:11
使用文件操作系统了吗

没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

517

主题

2932

帖子

39

粉丝