打印

at24c1024的问题

[复制链接]
4210|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2012-1-18 22:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做一个项目,用到彩屏和at24c1024,因为程序空间有限,
把一些图片放到at24c1024里,读取显示。
图片总共19500字节,存放在at24c1024的第0~19499空间内,读取显示都没问题。
后来又把一些汉字字模放到at24c1024里。
结果读取出现问题。我原来显示图片写了两个连续读取
子程序,一个连续读240个字节,一个连续读取245个字节。
要显示的汉字是64*64的,每一个汉字512个字节,共8个汉字。从at24c1024
的19500地址开始存放。
我又写了一个连续读取512个字节的程序,显示不正常。
后来我做测试,我写了一个连续读取256个字节的程序,读取后放到一个数组内(eedata[256])。
连续读两次,分别从两次读取的数据中随即抽取两个字节显示在彩屏上。
发现第一次读的对,第二次不对。
AT24C1024里烧写的数据应该没错。
因为我先读取一个汉字的前256个字节,再读取后256个字节。先读取的对,后读取的不对。先读取一个汉字的后256个字节,再读取前256个字节,也是先读取的对,后读取的不对。
后来我又测试,读一个汉字,分两次读,把两次读到的数据组合存放在另一个
数组内(eedata1[512)。然后显示,多数汉字显示不正常,偶尔一个汉字正常。
但是连续读取8个,读取一个汉字显示一个,8个汉字都显示不正常。
我搞了很长时间,都搞不对。请高手指教,谢谢!

相关帖子

沙发
chen3bing|  楼主 | 2012-1-18 22:49 | 只看该作者
补充,原先读取图片的没问题,只是读取汉字字模有问题。

使用特权

评论回复
板凳
linjing| | 2012-1-18 23:17 | 只看该作者
不知道你图片显示的时候是怎么用的,感觉像是Page Length 的问题,24系列地址在页长范围内有个回卷的问题需要注意

使用特权

评论回复
地板
chen3bing|  楼主 | 2012-1-19 08:07 | 只看该作者
谢谢,我查查手册。

使用特权

评论回复
5
yewuyi| | 2012-1-19 08:38 | 只看该作者
使用的页读?如果是这样则需要注意页面的长度处理。

使用特权

评论回复
6
chen3bing|  楼主 | 2012-1-19 12:00 | 只看该作者
谢谢!不过我读图片数据时没问题,很奇怪。

使用特权

评论回复
7
a43770| | 2012-12-24 16:26 | 只看该作者
想问下楼主,24c1024当16位地址超过65535时该如何处理

使用特权

评论回复
8
mohanwei| | 2012-12-24 16:53 | 只看该作者
unsigned char Read24C1024(unsigned long addr,//起始地址:0-0x1FFFF
                          unsigned long len,//读取长度:1-0x20000
                          unsigned char *buff)//缓冲区,长度为len字节
unsigned char Write24C1024(unsigned long addr,//起始地址:0-0x1FFFF
                          unsigned long len,//读取长度:1-0x20000
                          unsigned char *buff)//缓冲区,长度为len字节
把这两个函数实现了,然后编一小段测试代码:
#define _FlashSize (128L*1024L)
unsigned long i=0,ulDat=0;
for(i=0;i<_FlashSize/4;i++)
{
    Write24C1024(i*4,4,(unsigned char*)&i);
}
for(i=0;i<_FlashSize/4;i++)
{
    Read24C1024(i*4,4,(unsigned char*)&ulDat);
    if(ulDat != i)
    {
         printf("addr[%0LX]Error!Write %0LX,Read %0LX\r\n",i*4,i,ulDat);
    }
}

使用特权

评论回复
9
a43770| | 2012-12-25 13:39 | 只看该作者
mohanwei 发表于 2012-12-24 16:53
unsigned char Read24C1024(unsigned long addr,//起始地址:0-0x1FFFF
                          unsigne ...

这样不行吧,数据手册上说用的P0位和一个16位数表示数据地址的。另外用的mcu是8位机

使用特权

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

本版积分规则

438

主题

2521

帖子

2

粉丝