本帖最后由 xiangliverygood 于 2019-10-17 09:19 编辑
这条指令是对应方法就是这样的,Flash的地址和变量地址都是按字来的,请参照以下说明数据保存的地方是借用放图片的flash区域存放的,存放的地址设置是由下面图片的公式计算得到的, 以 800*600 的屏为例,设置要保存的变量地址 0000 ,0010这两个地址的数据, 假设历程有 50 张图片,计算数据库最小首地址: {(50*4)-128}*64*1024=4718592,这里得到的地址是10进制地址 即最小首地址只要大于 04718592=0X0048 0000都可。 例如最小首地址是 0X0049 0000 发送指令 5A A5 05 82 0000 0002 变量地址 0000 上会显示 2, 再发送 80 指令使用 56 寄存器将上述数据存入存储器中: 5A A5 0C 80 56 5A(申请更新) 50(写入数据库) 0049 0000(数据库首地 址) 0000(变量地址) 0001(写入数据的长度) 5A A5 0C 80 56 5A 50 0049 0000 0000 0001 将屏断电之后再发送如下指令读出图片存储器中的数据在屏上显示: 5A A5 0C 80 56 5A A0 0049 0000 0000 0001 三条蓝色指令即:写变量地址、写地址到数据库、读数据库到地址 向 0x0010 地址写入的数据库首地址是 0X0049 0010 发送指令 5A A5 05 82 0010 0004 变量地址 0010 上会显示 4, 再发送 80 指令使用 56 寄存器将上述数据存入存储器中: 5A A5 0C 80 56 5A(申请更新) 50(写入数据库) 0049 0010(数据库首地 址) 0010(变量地址) 0001(写入数据的长度) 将屏断电之后再发送如下指令读出图片存储器中的数据在屏上显示: 5A A5 0C 80 56 5A A0 0049 0010 0010 0001
根据上图假设是800*600的屏,他的数据库0000 0000地址 应该就是33张图片的位置开始,如果用户的屏图片很少,假设只有32张图片之内,用不着公式计算,可以直接从定义的数据库存放地址00000000开始 单片机一个周期内读写次数1次 如果用os MOVXL 指令处理则没有这个周期指令限制 1、想要获得最大89MB的数据库空间0x0000 0000 ~0x02C7 FFFF,首地址必须是从0x0000 0000开始(对应第64MB物理存储器)吗? (一个汉字是两个字节,1M=1024*1024=1048576字节,所以1M可以容纳524288个汉字89*524288=4661632=0X2C80000.) 是的。也就是图片空间只有32MB了。 2、假如我1024*768的图片需存储50张,依据公式(50*6-128)*64*1024计算出首地址为0x00AC 0000,那么实际能用的空间为0x02C8 0000-0x00AC 0000=67.5MB; 还是说这个89MB空间是可以自动从0x00AC 0000往后推移的,数据库地址可以变为0x00AC 0000-0x0374 0000? 不是的,地址就必须从0x00AC0000,但是空间小了(结束地址0x02C7 FFFF不变)。 3、简单介绍一下我们256MB Flash的各个功能是怎么分配: 前32MB是128个字库。 后面224MB,可以存储图片或者切割一部分做数据库。 每1Byte数据库存储器占据2Byte物理存储器。 |