打印

内部flash不够,字模想放外部串行Flash.可否?

[复制链接]
2631|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Swd21ic|  楼主 | 2008-1-9 13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在字模太多了,都是用 const 数组存在内部的flash中.随着图形的增加,越来于占空间了,占约20k,后续还要增加.. 

想把它移动带外部一个2MB的DataFlash AT45DB161中去..哪位有这方面的经验么.. 从理论上来说应该没问题, 原来是通过指针直接取数据,现在要则要通过SPI从外部读,然后再通过SPI写到LCM,不知道刷新速度能不能满足.. 
屏只有128x64点..(最大图片1K)现在是一点问题没有..

: )

相关帖子

沙发
xwj| | 2008-1-9 13:19 | 只看该作者

当然可以,但是会慢很多哦

使用特权

评论回复
板凳
LPcfANS| | 2008-1-9 13:32 | 只看该作者

哈哈.我做彩色TFT,字模占了200K...

使用特权

评论回复
地板
Swd21ic|  楼主 | 2008-1-9 21:30 | 只看该作者

~~~

200K.. 那是大型系统嘛..

挂外部并口的FLASH里也不是什么问题吧..

我是个小ARM7,总线不开放的..  

现在问题是怎么寻址字模.. 图片大小又不一样..

使用特权

评论回复
5
AIRWILL| | 2008-1-10 12:56 | 只看该作者

查表

使用特权

评论回复
6
mapleyang| | 2008-1-10 13:10 | 只看该作者

re

跟你SPI的时钟有关,自己计算一下刷新一次需要多长时间就行了

使用特权

评论回复
7
ijk| | 2008-1-10 13:13 | 只看该作者

如果芯片带并行EMI的就没问题了

使用特权

评论回复
8
Swd21ic|  楼主 | 2008-1-10 20:34 | 只看该作者

:)

总线不开放的..
我已经有办法写进去了..

呵呵,自己再琢磨琢磨.. 不知道一般各位的字模放哪里..

使用特权

评论回复
9
LPcfANS| | 2008-1-11 09:12 | 只看该作者

FLASH...

查表.

使用特权

评论回复
10
LPcfANS| | 2008-1-11 09:12 | 只看该作者

内部FLASH...

使用特权

评论回复
11
gyt| | 2008-1-11 12:32 | 只看该作者

显示的时候要想办法

使用特权

评论回复
12
mxh0506| | 2008-1-11 12:51 | 只看该作者

我做过DataFlash存放24X24点阵汉字库

SPI时钟够快就没问题

使用特权

评论回复
13
Swd21ic|  楼主 | 2008-1-11 19:13 | 只看该作者

呵呵

已经做好了..

一个函数实现写.(通过工装烧录字模到FLASH)

void WirteMODtoDataFlash(unint32 pageaddress, unint32 startbyte, unint8 *p, unint32 length, unint32 pNextPage, unint32 pNextStartByte) 




pageaddress 字模写入的开始页地址(0~4095 in AT45DB161) 
startbyte 字模写入的开始字节(0~527 in AT45DB161) 
p         指向字模数组的指针 
length       字模数组长度 
pNextPage 将本字模写入后,通过指针将下一个字模写入的页面地址给出 
pNextStartByte 将本字模写入后,通过指针将下一个字模写入的字节给出 


WriteMODtoDataFlash(0, 0, PICTURE1, sizeof(PICTURE1)/sizeof(*PICTURE1), NextPage, NextByte); 
WriteMODtoDataFlash(NextPage, NextByte, PICTURE2, sizeof(PICTURE1)/sizeof(*PICTURE1), &NextPage, &NextByte); 
WriteMODtoDataFlash(NextPage, NextByte, PICTURE3, sizeof(PICTURE1)/sizeof(*PICTURE1), &NextPage, &NextByte); 
... 

这样PICTURE1,PICTURE2,PICTURE3就顺序存在DATAFLASH里了,PICTURE1从第0页第0字节开始,PICTURE2开始的地方由PICTURE1大小决定. 
..函数内部只需要判断换页就行(用了递归)..(一页只有528字节) 



另一个函数实现读

void ReadMODFromFlash(unsigned int page_address, unsigned int start_byte, unsigned char *pMOD, unsigend int length)
{

}

pageaddress    需要读取字模的开始页地址(0~4095 in AT45DB161) 
startbyte      需要读取字模的开始字节(0~527 in AT45DB161) 
p              指向RAM缓冲区,用于暂存字模
length         读出的长度

ReadMODFromFlash(0, 0, RAMBuf, 1024);
读出位于0页0字节开始的1024个字节的字模到RAMBuf..


不过这样工程的时候,需要对FLASH芯片先编程一次.不知道AT的是不是有专门的烧录器.



使用特权

评论回复
14
Swd21ic|  楼主 | 2008-1-11 19:16 | 只看该作者

~~~Re

速度是够的.

FLASH的SPI是4MHz
LCD的SPI是1MHz

刷新全屏128x64没问题的.

使用特权

评论回复
15
蓝色日出| | 2008-1-11 21:19 | 只看该作者

我也在用AT45DB161

我也在用AT45DB161,不过CPU是51的
你的系统中SPI通讯时钟频率设为多少?
……
哦,看到了,是4MHz

使用特权

评论回复
16
mohanwei| | 2008-1-11 21:52 | 只看该作者

完全没问题……

使用特权

评论回复
17
msblast| | 2008-1-12 00:15 | 只看该作者

没问题的

我做过用AT45DB161存储HZK12,和其它数据,显示12864。

使用特权

评论回复
18
李冬发| | 2008-1-12 23:17 | 只看该作者

拿出些ram来存10-20个字的字模,这样速度就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

781

帖子

1

粉丝