你的QQ多少?对于eeprom读和写功能上的实现应该都不是问题,最主要的是怎么保证eeprom读出来和写进去的就是我们想要的结果,比如在电压波动的时候怎么保证数据不会出错,怎么样保证读出来的就是我们写进去的数据,如果出错了怎么办? mark 呵呵,看大家的回复都很不错,发现自己还要继续啊 回复81楼,还是不行哦,编译时还是会出现那个警告,不知道何故??????
//地址处理函数,主要处理多芯片时,对于地址的处理
#if DEV_24CXX_MODLE == _24C1024
#if MAX_ADDR > 0xFFFF //如果地址大于65535
void _24CXXX_AddrProcess(unsigned long Addr)
#else
void _24CXXX_AddrProcess(unsigned int Addr)
#endif //#if MAX_ADDR > 0xFFFF
{
if( Addr>( (MEM_SIZE+1)/2-1 ) ) //如果地址大于65535
{
Addr /= (MEM_SIZE+1)/2;
}
else
{
Addr = 0x00;
}
HardAddr = Addr;
}
#else
#if DEV_24CXX_NUM > 1 //如果使用多个芯片
#if MAX_ADDR > 0xFFFF //如果地址大于65535
void _24CXXX_AddrProcess(unsigned long Addr)
#else
void _24CXXX_AddrProcess(unsigned int Addr)
#endif //#if MAX_ADDR > 0xFFFF
{
if( Addr> MEM_SIZE ) //如果地址大于单芯片地址范围
{
Addr /= MEM_SIZE+1;
}
else
{
Addr = 0x00;
}
HardAddr = Addr;
}
// #elif DEV_24CXX_NUM == 1 //如果使用单个芯片
#else
#if DEV_24CXX_NUM == 1 //如果使用单个芯
#if MAX_ADDR > 0xFFFF //如果地址大于65535
void _24CXXX_AddrProcess(unsigned long Addr)
#else
void _24CXXX_AddrProcess(unsigned int Addr)
#endif //#if MAX_ADDR > 0xFFFF
{
HardAddr = 0x00;
}
#endif //#if DEV_24CXX_NUM > 1
#endif //#if DEV_24CXX_MODLE==_24C1024
#endif MARK 标记 MARK 标记 !支持! 好程序。 谢谢楼主,刚转学avr,需要通过iic接口读取一个陀螺仪的数据,收藏了。 好贴啊! 能重发下吗。楼主。下不到了…… zfx19890921 发表于 2011-8-17 17:37 static/image/common/back.gif
使用楼主的程序,调试了一下,用的器件是128+24c08,一开始总都不行,后来终于发现,在_24CXXX_ReadByte函 ...
考虑不周,24c08一下的芯片只需要一个字节的地址!
我实验的都是比较大的!
谢谢,提出意见! 正需要用,楼主能再发一次吗? 刚要学这个 谢了 谢谢分享 记号,,,,,,,,,, mark~谢谢~ 楼主能上一个支持25系列 OTP区烧写的程序么。。。 记住了,有空看看 xie谢谢谢谢谢谢 不错 ;学习了 好贴子,感谢楼主! Mark 最近在学习I2C感觉有点难。 是硬件IIC还是模拟的?
mark 准备使用到项目中 {:smile:}测试一下~ 顶一个{:smile:} 收藏………… 不错不错果然强 感谢楼主,好帖!Make 非常感谢
这样说24C01到24C1024,的地址都是16位的?
我现在用AT24C08,要是读写8位地址时,可以正读写0~19地址数据,
要是读写16位地址时,写入去的数据和读出来的数据不一样!
你有测试过24C01到24C08吗? 不是很懂,纯顶。 zfx19890921 发表于 2011-8-17 17:37
使用楼主的程序,调试了一下,用的器件是128+24c08,一开始总都不行,后来终于发现,在_24CXXX_ReadByte函 ...
请问:AT24C08是8K的空间,也就是1K BYTE,哪也就是地址有1024=0x03FF。要是只写8位地十,也就是只可以用256个BYTE?你怎样能用完这1K的空间呢? 好东西,谢谢分享 mark 感谢,多多收着 谢谢了,收着 carbonxie 发表于 2014-10-7 08:46
请问:AT24C08是8K的空间,也就是1K BYTE,哪也就是地址有1024=0x03FF。要是只写8位地十,也就是只可以用 ...
不单单读有问题,写也有问题...这些问题我都解决了!谢谢!没有用上比24C28更大的MCU!
楼上有人说:24C08是16位地址,这句话是错的,准确说是10位地址!
对你的程式,只想说,没有说明细节问题,比如每个STOP后再开始的话,哪么就是有10ms才可以再START...还有你的连续写函数,只
能一次写16个BYTE,并且首地址只可以是if(0==addr%16)成立下才可以用...
要是说得不对的地方,请指点...谢谢! 谢谢楼主,收藏了!!! 还是喜欢单个地址的读写,主从都不受限。 kanprin 发表于 2009-7-8 23:26
感觉24C有个不是很爽的地方。
同一个系列,dataAddress有些是byte,有些是word。
搞的一个程序接口无法兼容 ...
安富莱开发板写的代码,挺好用。只需要配置,解决你的烦恼 ilan2003 发表于 2017-7-8 09:24
安富莱开发板写的代码,挺好用。只需要配置,解决你的烦恼
正好用到下载看看,谢谢 安富莱的程序写的挺好的
好帖子,楼主的探究精神值得学习
页:
1
[2]