野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12907|回复: 6

谁有没有从SD卡里读出数据,写到外部FLASH的例子?

[复制链接]
发表于 2016-1-9 16:45:33 | 显示全部楼层 |阅读模式
谁有没有从SD卡里读出数据,写到外部FLASH的例子?
回复

使用道具 举报

发表于 2016-1-9 18:01:32 | 显示全部楼层
没现成的         
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 21:00:34 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2016-1-11 07:22:33 | 显示全部楼层
本帖最后由 11kxmx 于 2016-1-11 07:24 编辑

我整过,用文件系统,很简单的
void save32GBKCode_to_flash(void)  /*将字库从SD卡写入FLASH ,我生成的是大汉字*/
{   
       unsigned int i;
        unsigned char pBuffer[128];
     f_mount(0, &myfs[0]);
    myres = f_open(&myfsrc , "0:/GB31232x32.FON", FA_OPEN_EXISTING | FA_READ); //GB31232x32.FON是字库文件名
          if ( myres == FR_OK )     
      {
     for (i=0;i<6773;i++)//GB2312有6773个汉字
     {
      f_lseek (&myfsrc, i*128);  //定位
      myres = f_read( &myfsrc, pBuffer,128,&mybr );   //读出,每个32*32的汉字占128个字节         
      SPI_FLASH_BufferWrite(pBuffer, i*128, 128);//写入
      }
      f_close(&myfsrc);
    }        
  }
写之前要擦一下FLASH
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-11 18:43:05 | 显示全部楼层
11kxmx 发表于 2016-1-11 07:22
我整过,用文件系统,很简单的
void save32GBKCode_to_flash(void)  /*将字库从SD卡写入FLASH ,我生成的 ...

谢谢你,我也自己做了一下。
void Sd_to_Flash(u32 SectorAddr, uint16_t volume_k,uint16_t volume_b,unsigned char *file_name)
{
        uint8_t buffer[4096];               
        uint16_t i=0,j=0;
        uint16_t k4=0;
       
        k4 = volume_k / 4;
       
        LCD_DispStr(5, 5, (uint8_t *)"please wait...", RED);       
       
        for(i=0;i < k4+1; i++)
        {
                SPI_FLASH_SectorErase(SectorAddr + 4096*i);               
        }
               
        if(volume_k > 0)
        {
                for(i=0; i < volume_k ; i++)
                {
                        GetGBKCode_from_sd(buffer,1024,SectorAddr, file_name);         
                        for(j=0;j<1024;j++)
                        printf("%c",buffer[j]);               
                       
                        SPI_FLASH_BufferWrite(buffer, SectorAddr, 1024);       
                        SectorAddr +=1024;
                }                       
        }
        if(volume_b > 0)
        {
        GetGBKCode_from_sd(buffer,volume_b,SectorAddr, file_name);                                
                        for(j=0;j<volume_b;j++)
                        printf("%c",buffer[j]);                               
        SPI_FLASH_BufferWrite(buffer, SectorAddr, volume_b);               
        }
       
        LCD_DispStr(5, 5, (uint8_t *)"OK!               ", RED);
       
       
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-11 18:45:23 | 显示全部楼层
11kxmx 发表于 2016-1-11 07:22
我整过,用文件系统,很简单的
void save32GBKCode_to_flash(void)  /*将字库从SD卡写入FLASH ,我生成的 ...

好像FLASH擦写了4K,然后子函数里没有写够4K的内容,再擦写一次,内容就覆盖了,好像。
回复 支持 反对

使用道具 举报

发表于 2016-1-12 07:46:03 | 显示全部楼层
xiao华110 发表于 2016-1-11 18:45
好像FLASH擦写了4K,然后子函数里没有写够4K的内容,再擦写一次,内容就覆盖了,好像。

FLASH一次至少擦写4K
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-23 05:28 , Processed in 0.036754 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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