OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 35179|回复: 86

将字库及UNIGBK.BIN放到SD卡,从此告别外部Flash芯片

  [复制链接]

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
发表于 2013-9-19 11:53:31 | 显示全部楼层 |阅读模式
忙碌了,学习了,经过自己的慢慢尝试终于将UNIGBK.BIN文件移到SD卡了;
而将字库移到SD卡参考的是
“灰太狼”-冰封嗜魔的做法
应原子哥的要求现将字库及UNIGBK.BIN(FATFS源码中cc936.c里面的两个大数组oem2uni,uni2oem转换而成的二进制文件)
放到SD卡的做法贴出来,方便还未学汉字显示或者想把
字库及UNIGBK.BIN
放到SD卡的朋友们参考。
1.
UNIGBK.BIN
放到SD卡:
  首先新建SDFont.cSDFont.h文件
(1).
SDFont.c文件中输入如下代码:
#include "SDFont.h"
/*
****************************************
*
*说明:该文件定义了一个函数,用来获取存放
*     在SD卡的UNIGBK.BIN文件的相关信息,
*     UNIGBK.BIN文件在SD卡的位置为:
*     SYSTEM/FONT/UNIGBK.BIN
*     (SYSTEM文件夹为SD卡根目录下的文件夹)
*
*By:ailson jack
*
*Date:2013.09.19
*****************************************
*/
u32 UGBKADDR=0;//UNIGBK.BIN在SD卡的扇区号
u32 UGBKSIZE=0;//UNIGBK.BIN文件的大小
//此函数用来获取存放在SD卡的UNIGBK.BIN文件的相关信息
//注意:此函数必须在SD卡被注册之后调用
void SDFont_Init(void)
{
FIL *uni_oem;
uni_oem=(FIL*)mymalloc(SRAMIN,sizeof(uni_oem));
//UGBKADDR:此地址是UNIGBK.BIN文件在SD卡的扇区号
//要获得该地址可以用winhex软件查看
//不同的SD卡,不同的存储方式,都会导致该地址不同,
//但是一旦你将文件存储好后,只要你不去将它删除或者去
//改变它所在文件夹的路径,它的扇区号一般是不会改变的
UGBKADDR=35440;//这个地址是我用winhex软件查看得到的   
f_open(uni_oem,"0:SYSTEM/FONT/UNIGBK.BIN",FA_OPEN_EXISTING|FA_READ);
UGBKSIZE=uni_oem->fsize;
f_close(uni_oem);
myfree(SRAMIN,uni_oem);
}
(2).
SDFont.h文件中输入如下代码:
#ifndef _SDFONT_H
#define _SDFONT_H
/*
****************************************
*
*说明:该文件是SDFont.c的头文件
*
*By:ailson jack
*
*Date:2013.09.19
*****************************************
*/
#include "ff.h"
#include "malloc.h"
extern u32 UGBKADDR;//UNIGBK.BIN在SD卡的扇区号
extern u32 UGBKSIZE;//UNIGBK.BIN文件的大小
void SDFont_Init(void);
#endif
(3).修改mycc936.c
文件的
ff_convert()函数
(mycc936.c
FATFS源码中cc936.c去掉两个大数组oem2uni,uni2oem的更名文件
)
ff_convert()函数修改如下:
//此函数是根据原子哥的程序修改的,并且经过自己的不断调试才将
//UNIGBK.BIN文件转移到SD卡里面使用
//Modified By:ailson jack
//Date:2013.09.19
WCHAR ff_convert ( /* Converted code, 0 means conversion error */
WCHAR src, /* Character code to be converted */
UINT dir /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
)
{
WCHAR t[2];
WCHAR c;
u8 buf[512];
u32 i, li, hi;
u16 n;  
u32 gbk2uni_offset=0;
u32 temp1=0;
u32 temp2=0;  
 
if (src < 0x80)c = src;//ASCII,直接不用转换.
else 
{
  if(dir) //GBK 2 UNICODE
{
gbk2uni_offset=UGBKSIZE/2;  
}else //UNICODE 2 GBK  
{   
gbk2uni_offset=0;
}    
/* Unicode to OEMCP */
hi=UGBKSIZE/2;//对半开.
hi =hi / 4 - 1;
li = 0;
for (n = 16; n; n--)
{
i = li + (hi - li) / 2;
temp1=i*4+gbk2uni_offset;
temp2=(int)(temp1>>9);//相对于UGBKADDR偏移的扇区数
temp1=temp1-(temp2<<9);//在目标扇区偏移的位置
SD_ReadBlocks(UGBKADDR+temp2,buf);//读取目标扇区(512B)的数据
t[0]=buf[temp1]+(buf[temp1+1]<<8);
t[1]=buf[temp1+2]+(buf[temp1+3]<<8);
if (src == t[0]) break;
if (src > t[0])li = i;  
else hi = i;    
}
c = n ? t[1] : 0;      
}
return c;
}
将UNIGBK.BIN文件放到SD卡的操作结束;
2.
将字库
放到SD卡:
---此过程参考的是“灰太狼”-冰封嗜魔的做法,自己稍微改动了一点儿,如下:
//code 字符指针开始
//从字库中查找出字模
//code 字符串的开始地址,GBK码
//mat  数据存放地址 size*2 bytes大小  
void Get_HzMat(unsigned char *code,unsigned char *mat,u8 size)
{
FIL *sdfile;
UINT br;    
unsigned char qh,ql;
unsigned char i;  
unsigned long foffset;
sdfile=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); 
qh=*code;
ql=*(++code);
if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//非 常用汉字
{      
   for(i=0;i<(size*2);i++)*mat++=0x00;//填充满格
   return; //结束访问
}          
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;   
foffset=((unsigned long)190*qh+ql)*(size*2);//得到字库中的字节偏移量    
if(size==16)//SPI_FlashRead(foffset+ftinfo.f16addr,mat,32);
{
f_open(sdfile,"0:SYSTEM/FONT/GBK16.fon",FA_OPEN_EXISTING|FA_READ);
f_lseek(sdfile,foffset);
f_read(sdfile,mat,32,&br);
f_close(sdfile);
}
else //SPI_FlashRead(foffset+ftinfo.f12addr,mat,24); 
{
f_open(sdfile,"0:SYSTEM/FONT/GBK12.fon",FA_OPEN_EXISTING|FA_READ);
f_lseek(sdfile,foffset);
f_read(sdfile,mat,24,&br);
f_close(sdfile);
myfree(SRAMIN,sdfile);
}
Get_HzMat()函数在原子哥写的程序text.c文件里面。
到此我们就完成了将字库及UNIGBK.BIN放到SD卡的工作。
忙碌了一上午来整理及发帖,希望各位帮忙顶顶帖子,不要让帖子及我的辛苦白费,以便让更多有需要的人了解到
外部flash芯片,在不要求速度的情况下,可以暂时不用了

附件:





SDFont.c

1.05 KB, 下载次数: 2609

mycc936.c

5.29 KB, 下载次数: 2543

SDFont.h

371 Bytes, 下载次数: 2348

一言一行一字一句一心一意一生一世
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 17:41:35 | 显示全部楼层
回复【6楼】冰封嗜魔:
---------------------------------
也不叫举一反三啦,只是想把那个二进制文件放到SD卡里面,在网上找例子也木有,这些事总得有人来做,所以自己就来研究了,这样其他想学的人就可以少走些弯路了
一言一行一字一句一心一意一生一世
回复 支持 1 反对 0

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 11:54:33 | 显示全部楼层
一楼就给我吧,我先顶
补充:
1、winhex中查看UNIGBK.BIN文件的地址,见41楼,有点远哈………
2、鉴于有些坛友问
SD_ReadBlocks()函数,因此我在这里贴出来了:
//读取一个扇区(512字节)的数据
u8 SD_ReadBlocks(u32 addr,u8* buf)
{
u8 err=0;
u8 res=1;
u8 str=0;
u16 wait=0;
u16 i=0;
u8 temp=1;
SD_SelCS();
do
{
res=SD_SendCmd(CMD17,addr,0X01);
err++;
}while(res!=0X00&&err<0XFE);
err=0;
if(res==0X00)
{
do
{
str=SD_SPI_ReadWriteByte(0XFF);
if(str==0XFE)
{
for(i=0;i<512;i++)
{
buf=SD_SPI_ReadWriteByte(0XFF);
}
SD_SPI_ReadWriteByte(0XFF);
SD_SPI_ReadWriteByte(0XFF);
temp=0;
break;
}
wait++;
}while(wait<0XFFFE);
}
SD_EscCS();
return temp;
}
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

13

主题

63

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
326
金钱
326
注册时间
2013-3-15
在线时间
6 小时
发表于 2013-9-19 12:33:06 | 显示全部楼层
赞,学习一下
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-9-19 12:44:56 | 显示全部楼层
不错,赞一个。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165427
金钱
165427
注册时间
2010-12-1
在线时间
2113 小时
发表于 2013-9-19 16:35:27 | 显示全部楼层
cool
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-9-19 17:01:22 | 显示全部楼层
举一反三,好样的。
态度决定一切
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2384
金钱
2384
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-9-19 17:05:44 | 显示全部楼层
这个是小灰灰喔,哈哈。
态度决定一切
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 17:24:34 | 显示全部楼层
回复【7楼】冰封嗜魔:
---------------------------------
抱歉,抱歉
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 17:44:37 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,此等帖子有木有机会晋升为酷贴哦
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 17:50:58 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
刚刚刷新了一把,奇迹出现了,竟然变为酷贴了,灰常感谢原子哥哦
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165427
金钱
165427
注册时间
2010-12-1
在线时间
2113 小时
发表于 2013-9-19 18:40:29 | 显示全部楼层
回复【11楼】jackailson:
---------------------------------
不客气,中秋节还在逛论坛,不容易啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 21:42:59 | 显示全部楼层
回复【13楼】keyway:
---------------------------------
速度是有点慢,原子哥的程序就是Flash的方式,你可以看一下原子哥的程序
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 22:02:40 | 显示全部楼层
回复【15楼】keyway:
---------------------------------
参考原子哥的代码吧,原子哥的代码是将字库先存在SD卡,如果你想更新的话通过按按键就可以将字库从SD卡更新到flash里
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-19 22:50:01 | 显示全部楼层
回复【17楼】keyway:
---------------------------------
http://ajb4uhjfpj.l37.yunpan.cn/lk/QGdcd6em9XIdp
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2013-9-19 22:53:11 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

头像被屏蔽

275

主题

327

帖子

0

精华

禁止访问

积分
1065
金钱
1065
注册时间
2011-7-7
在线时间
34 小时
发表于 2013-9-20 07:39:10 | 显示全部楼层
MAAAAAARK
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-20 08:19:31 | 显示全部楼层
回复【20楼】keyway:
---------------------------
在我给你的链接里找到“STM32开发指南 V1.2.pdf”把它下载下来,然后看那个文档里的“汉字显示实验”,
而它的源代码在我给你的链接里有一个“程序源码”选项,点击一下它,进入它的文件夹里,然后下载“标准例程.rar”文件,这个文件里面就有汉字显示的源码
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2013-3-27
在线时间
4 小时
发表于 2013-9-20 14:51:19 | 显示全部楼层
谢谢分享,太需要了!
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-9-20 19:02:12 | 显示全部楼层
谢谢分享,顺便说下,那是灰太狼的儿子。
一直努力就很好。
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-20 20:45:48 | 显示全部楼层
回复【24楼】qq942266575:
---------------------------------
知道了,其实吧,我也看过"喜洋洋与灰太狼",只是当时写的时候忘记了那幅图片的狼叫什么名字了,所以就写了灰太狼,莫怪莫怪啊
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-4-7
在线时间
29 小时
发表于 2013-9-25 16:15:34 | 显示全部楼层
Undefined symbol SD_ReadBlocks (referred from mycc936.o).
SD_ReadBlocks(UGBKADDR+temp2,buf);//读取目标扇区(512B)的数据
怎么报了这啊?!是不是函数有什么问题啊?
天生我才必有用,千金散尽还复来!
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
发表于 2013-9-25 17:18:13 | 显示全部楼层
好贴
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-25 23:01:48 | 显示全部楼层
回复【26楼】wyming210:
---------------------------------
这个函数是我学SD卡的时候自己写的,名称和原子哥的差不多,但参数顺序有点变化
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-9-26 08:40:55 | 显示全部楼层
换大容量MCU,直接FATFS用官方转换数组来实现长文件名,从此告别UNIGBK.bin文件。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2013-9-26 09:37:40 | 显示全部楼层
回复【29楼】Tardis:
---------------------------------
言之有理啊
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-9-26 11:36:12 | 显示全部楼层
回复【30楼】jackailson:
---------------------------------
正解
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-9-30
在线时间
3 小时
发表于 2014-3-10 23:27:46 | 显示全部楼层
回复【26楼】wyming210:
---------------------------------
我最近也在调这个程序,请问你是怎么解决这个问题的?
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-9-30
在线时间
3 小时
发表于 2014-3-10 23:48:22 | 显示全部楼层
回复【28楼】jackailson:
---------------------------------
我是刚刚接触,请问具体要怎么改啊
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-11 07:43:26 | 显示全部楼层
回复【32楼】小土匪:
---------------------------------
我这个帖子就是要告诉不会的坛友们该
怎么做啊,你参照着我写的改就行了
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-9-30
在线时间
3 小时
发表于 2014-3-11 22:10:06 | 显示全部楼层
回复【34楼】jackailson:
---------------------------------
但是 SD_ReadBlocks(UGBKADDR+temp2,buf)我没有找到啊
回复 支持 反对

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-10-29
在线时间
6 小时
发表于 2014-3-20 17:38:04 | 显示全部楼层
楼主,这个函数 SD_ReadBlocks(UGBKADDR+temp2,buf)的代码能否贴出来看看
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-23 11:04:34 | 显示全部楼层
回复【35楼】小土匪:
---------------------------------
这个函数是我学SD卡的时候自己写的,可以参考下一楼的代码
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-23 11:16:12 | 显示全部楼层
回复【36楼】gzw19900817:
---------------------------------
这个函数是我学SD卡的时候自己写的,可以参考下一楼的代码,刚贴出来的
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-10-29
在线时间
6 小时
发表于 2014-3-25 11:30:47 | 显示全部楼层
感谢楼主!再问一下楼主,UGBKADDR在SD的地址用winhex查看的话是看那个offset地址码?


回复 支持 反对

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
875
金钱
875
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-3-25 12:04:11 | 显示全部楼层
力挺楼主,,收藏一下,,呵呵
避免犯错本是错误所在,我错故我在……
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-26 09:10:45 | 显示全部楼层
回复【40楼】zhang164534:
---------------------------------
呵呵,哈哈,嘿嘿
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-26 09:31:56 | 显示全部楼层
不是那个offset,我的如下图:



一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-3-26 09:32:42 | 显示全部楼层
回复【39楼】gzw19900817:
---------------------------------
见41楼
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-9-30
在线时间
3 小时
发表于 2014-4-11 15:56:33 | 显示全部楼层
回复【38楼】jackailson:
---------------------------------
一张SD卡是不是只能被一个CPU识别?
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2013-9-30
在线时间
3 小时
发表于 2014-4-11 16:27:16 | 显示全部楼层
回复【39楼】gzw19900817:
---------------------------------
亲问一张SD卡是不是只能被一个CPU识别?
回复 支持 反对

使用道具 举报

15

主题

94

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2012-11-8
在线时间
7 小时
 楼主| 发表于 2014-4-11 23:42:14 | 显示全部楼层
什么意思?你是要做多个CPU的系统?
SD卡和手机的TF卡一样的,TF卡可以插到其他手机上使用
SO,你懂的
一言一行一字一句一心一意一生一世
回复 支持 反对

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-5-4 21:02:55 | 显示全部楼层
我正好研究到这边, SD_ReadBlocks(u32 addr,u8* buf) 中的  SD_EscCS() 是哪来的啊?  没找到啊? 求解?
回复 支持 反对

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-3-17
在线时间
0 小时
发表于 2014-5-4 21:04:36 | 显示全部楼层
貌似看懂了回复【47楼】TXD1216:
---------------------------------
貌似看懂了,是片选的意思吧
回复 支持 反对

使用道具 举报

15

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-1-3
在线时间
2 小时
发表于 2014-5-5 11:27:25 | 显示全部楼层
牛!!学习一下
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-5-16 16:50:46 | 显示全部楼层
原来的例程不是将UNIGBK.BIN、GBK12.BIN 和 GBK16.FON放在SD卡里,然后从SD卡复制字库到外部flash,那楼主的这个方法有什么不同?
回复 支持 反对

使用道具 举报

12

主题

87

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-5-31 21:40:20 | 显示全部楼层
回复【46楼】jackailson:
---------------------------------
请问刷了原子的例程之后可以刷你这个吗
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13072
金钱
13072
注册时间
2012-11-26
在线时间
3808 小时
发表于 2014-6-18 16:35:45 | 显示全部楼层
cool  mark
学无止境
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-9-21
在线时间
0 小时
发表于 2014-9-21 22:07:42 | 显示全部楼层
UGBKADDR可以在程序中得到吗?不然的话如果换一张SD卡就又要改程序了
回复 支持 反对

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2014-10-6 16:47:49 | 显示全部楼层
UGBKADDR的地址好像可以用: 
f_lseek(uni_oem,1);
UGBKADDR = uni_oem->dsect;
好像可以解决。

void SDFont_Init(void)      //必须调用SD_Init();exfuns_init();f_mount(0,fs[0]);
{
FIL *uni_oem;

SD_Init();
  exfuns_init(); //为fatfs相关变量申请内存  
  f_mount(0,fs[0]);       //挂载SD卡

uni_oem=(FIL*)mymalloc(SRAMIN,sizeof(uni_oem));    

f_open(uni_oem,"0:/SYSTEM/FONT/UNIGBK.BIN",FA_OPEN_EXISTING|FA_READ);//路径自己修改
UGBKSIZE=uni_oem->fsize;
f_lseek(uni_oem,1);
UGBKADDR = uni_oem->dsect;
f_close(uni_oem);
myfree(SRAMIN,uni_oem);
}
https://github.com/WZTENG
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-11 06:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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