本帖最后由 jinglixixi 于 2021-11-27 01:23 编辑
星空派开发板是旗点科技推出的一款以GD32F303ZET6为核心的开发板,该GD32F303芯片同STM32F103 是 pin to pin级的兼容, 可直接实现芯片的替换及产品性能的升级。 该开发板的外设资源十分丰富,其资源布局见图1所示。
图1 资源布局 此外,该开发板的例程资源也十分的丰富,几乎遍及板上的各种硬件配置。 用于开发板并未随机配带显示屏,为此利用其所配置的LCD接口,添加了一个SPI接口的显示屏,从而可以免去接线的麻烦。 由于GD32F303所配置的程序空间只有512K,故在需要较大存储空间时,就只能依赖板载的FLASH存储芯片和SD卡。 所程序空间的限制,当进行图片的显示,即使以FLASH芯片来存储数据是一件麻烦的事,需要执行多次才能将程序中的图片数据分批地转存到FLASH芯片中。 因此较合理的使用方式是将图片文件存放到SD卡中,以供数据读取来再现图片内容。 由于在例程资源中,只提供了SD卡的读写,因此要进行文件的读写,需要自行移植文件系统。 在完成文件系统的移植后,即可提供串口来显示SD卡的存储容量,其结果如图2所示。
图2 读取SD卡容量(TF卡为4G) 在此基础上,该如何读写文件呢? 1.读取函数及使用 基于文件系统的读取函数为:
- uint8_t Fatfs_read(uint8_t*data,uint32_t len)
- {
- uint16_t i;
- uint32_t tlen=0;
- uint32_t bytesread;
- uint8_t *pdata = data;
- for(i=0;i
- {
- retSD=f_read(&openfile,pdata,512,&bytesread);
- if(retSD)
- {
- printf("ReadError:%drn",retSD);
- break;
- }else
- {
- tlen+=bytesread;
- pdata += bytesread;
- }
- }
- if(len%512)
- {
- retSD=f_read(&openfile,pdata,len%512,&bytesread);
- if(retSD)
- {
- printf("rnReadError:%drn",retSD);
- }else
- {
- tlen+=bytesread;
- printf("Readdata: %xrn",pdata);
- }
- }
- if(tlen)printf("rnReaded data len:%drn",tlen);
- printf("Read data overrn");
- returnretSD;
- }
复制代码
该函数的使用方式为: Fatfs_open(SDCard,"text.txt",1); Fatfs_read(filetxt,9); for(i=0;i<9;i++) { printf("Readdata: %xrn",filetxt); } 其执行结果如图3所示,说明结果正确。
图3读取文件测试 2.写入函数及使用 基于文件系统的写入函数为:
- uint8_t Fatfs_write(uint8_t*data,uint32_t len)
- {
- uint32_t byteswrite;
- printf("rnBegin Writefile...rn");
- printf("Write data len:%drn",len);
- retSD=f_write(&openfile,data,len,&byteswrite);
- if(retSD)
- {
- printf("Write Error:%drn",retSD);
- }else printf("Writed data len:%drn",byteswrite);
- printf("Write data over.rn");
- return retSD;
- }
复制代码
该函数的使用方式为: Fatfs_open(SDCard,"dat.txt",2); Fatfs_write(filetxt,9); Fatfs_close(); 其执行结果如图4所示,说明结果正确。
图4写入文件测试
图5生成文件内容 既然已实现了文本文件的读写,那可否对二进制文件读写呢? 进行测试的程序为:
- Fatfs_open(SDCard,"HY.BIN",1);
- Fatfs_read(filetxt,9);
- for(i=0;i<9;i++)
- {
- printf("Read data:%xrn",filetxt);
- }
- Fatfs_close();
复制代码
经测试,所读取的结果如图7所示,说明结果正确。
图6二进制文件内容
图7读取二进制文件 3.图片文件显示 实现多个图片文件再现的程序为:
- for(t=0;t<3;t++)
- {
- delay_ms(5000);
- Address_set(0,0,LCD_W-1,LCD_H-1);
- if(t==0)Fatfs_open(SDCard,"FJ.BIN",1);
- if(t==1)Fatfs_open(SDCard,"HY.BIN",1);
- if(t==2)Fatfs_open(SDCard,"YX.BIN",1);
- for(j=0;j<300;j++)
- {
- Fatfs_read(filetxt,512);
- for(i=0;i<512;i++)
- {
- LCD_WR_DATA8(filetxt);
- }
- }
- Fatfs_close();
- }
复制代码
该程序的执行结果如图8所示,说明结果正确。
图8显示图像文件 如此在为开发板配置了文件系统及读写功能后,就可轻松地实现图像文件显示及数码相框功能,也使开发板的性能有了大幅的提升,存储容量的限制得以彻底的摆脱。 此外,配合板载的FLASH、音频DAC、耳机等资源,可以FLASH芯片完成中文字库的构建,以音频DAC配合音频文件的读取来播放音乐或语音等。这样在星空派GD32F303开发板上要实现小型的多媒体应用便不再是难事了!
|