Swordman 发表于 2008-1-10 14:13:57

字模太大,想存到外部DataFlash - AT45DB161

.. 字模占了20K,片子(AT91SAM7S64)受不了了..

想把原来定义在FLASH里的字模数组如const unsigned char picture[] = {0x20, 0x90, 0xFF. ...... 0x99};

放到一个外部的2M串行FLASH中去 ..

理论上应该是可行的,不知道会不会影响刷新显示的速度...      显示和FLASH都是4M SPI控制.

再有个问题就是,每个字模对应在FLASH中哪一页哪一字节开始到哪一页哪一个字节结束.还是个问题..因为每一个图片的大小都不一样..

希望兄弟门给点建议~~:)   regard Swordman~

AWEN2000 发表于 2008-1-10 14:34:53

放在串行falsh 问题不大。以前我们做过,刷新速度还行。

用的是8051f020 ,20Mhz
320*240
我们比较偷懒,在pc上作了个组态软件,把界面按bmp格式生成文件保存在falsh中。
需要更改界面时,调出所在页面的bmp数据写屏,然后再写可变部分(变量)

二级字库全部写入串行flash

--------------------------

再简单一点的办法
你不要把全部字库都装入cpu 的flash,20k呢,太浪费。

做一个程序,将系统要用到的字做小字库,字模大小就很小了。

你用到200个不同的字,才2.4k

_yuming 发表于 2008-1-10 16:05:58

没问题的,我用的是凌阳的单片机做的液晶显示+串行Flash(字库),速度挺快的,没有迟缓现象。

Swordman 发表于 2008-1-10 20:52:34

做字库?
我用都是非标准的东西.. 自己取的字模..也有自己画的..呵呵.应该不能那样搞..

2楼没看懂你说的在PC上做的事情.. 我的屏很小128x64,CPU不快8MHz(SPI 1/2 Syscycle), 我已经想到办法把字模写到串行Flash了..

把字模挨个写进去...

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

void WirteMODtoDataFlash(unint32 pageaddress, unint32 startbyte, unint8 *p, unint32 length, unint32 pNextPage, unint32 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字节)


问题要显示的时候是读到一个固定大小的缓冲区?还是读一个字节显示一个字节..在考虑ing.
欢迎大家讨论阿

nyszx 发表于 2012-2-11 12:42:23

mark

wazhiyi 发表于 2012-2-18 14:02:50

mark

Lucky_Lucky 发表于 2012-6-20 11:07:43

你问题解决了吗?怎么解决的?我也遇到同样问题。求帮助

zqliao88 发表于 2012-12-25 10:02:08

本帖最后由 zqliao88 于 2012-12-25 10:03 编辑

我也遇到类似的问题,我的是:TFT+AT45DB321D+MCU的,将图片分割成小图片,但还是有20多K,存入AT45DB321D中,每次换屏的时候总是从AT45DB321D中按每页读取数据,来驱动TFT的像素点来显示的。但遇到问题是,第一次读取读取数据后显示到TFT,接着从AT45DB321D读取下一页,这时的数据变成了一整排列0XFF和0x00,怎么回事?有做过类似的大哥,提出建议,帮忙解决!谢了,补充一点,第一次读取数据是正确的

lgnativs 发表于 2012-12-25 10:33:35

http://www.amobbs.com/thread-5512073-1-1.html
我写的一个位图转换工具.请大家试用.

baitao 发表于 2012-12-25 10:34:29

问题搞定没

zqliao88 发表于 2012-12-25 10:42:39

没有,有搞过的吗,请出手帮忙回帖!{:smile:}

mcu_lover 发表于 2012-12-25 10:44:45

2楼是最简单方便可行,易于维护修改的方法,当然前提条件是需要有人会组态上位机程序开发。液晶界面开发,组态一定是趋势,到时候就不会存在你们说的这些问题了,所有界面设计几分钟就可以完成。

zqliao88 发表于 2012-12-25 10:57:59

我这个没有和PC上位机的接口通讯的,是不是这样就实现不了!

jetli 发表于 2012-12-25 11:09:25

{:titter:} 选 at45db会让你生不如死,,,,选其他傢的吧

zqliao88 发表于 2012-12-25 11:18:49

有什么好推荐?

bbssilverkey 发表于 2013-3-22 10:12:52

jetli 发表于 2012-12-25 11:09 static/image/common/back.gif
选 at45db会让你生不如死,,,,选其他傢的吧

为什么阿?这个不是很经典的芯片么?
页: [1]
查看完整版本: 字模太大,想存到外部DataFlash - AT45DB161