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

[复制链接]
3508|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,总线不开放的..  

现在问题是怎么寻址字模.. 图片大小又不一样..
AIRWILL 发表于 2008-1-10 12:56 | 显示全部楼层
mapleyang 发表于 2008-1-10 13:10 | 显示全部楼层

re

跟你SPI的时钟有关,自己计算一下刷新一次需要多长时间就行了
ijk 发表于 2008-1-10 13:13 | 显示全部楼层

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

 楼主| Swd21ic 发表于 2008-1-10 20:34 | 显示全部楼层

:)

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

呵呵,自己再琢磨琢磨.. 不知道一般各位的字模放哪里..
LPcfANS 发表于 2008-1-11 09:12 | 显示全部楼层

FLASH...

查表.
LPcfANS 发表于 2008-1-11 09:12 | 显示全部楼层

内部FLASH...

gyt 发表于 2008-1-11 12:32 | 显示全部楼层

显示的时候要想办法

mxh0506 发表于 2008-1-11 12:51 | 显示全部楼层

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

SPI时钟够快就没问题
 楼主| 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的是不是有专门的烧录器.



 楼主| Swd21ic 发表于 2008-1-11 19:16 | 显示全部楼层

~~~Re

速度是够的.

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

刷新全屏128x64没问题的.
蓝色日出 发表于 2008-1-11 21:19 | 显示全部楼层

我也在用AT45DB161

我也在用AT45DB161,不过CPU是51的
你的系统中SPI通讯时钟频率设为多少?
……
哦,看到了,是4MHz
mohanwei 发表于 2008-1-11 21:52 | 显示全部楼层

完全没问题……

msblast 发表于 2008-1-12 00:15 | 显示全部楼层

没问题的

我做过用AT45DB161存储HZK12,和其它数据,显示12864。
李冬发 发表于 2008-1-12 23:17 | 显示全部楼层

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

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

本版积分规则

71

主题

780

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部