OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1959|回复: 6

有人用过24C02和24C512共用一条总线吗

[复制链接]

16

主题

78

帖子

0

精华

高级会员

Rank: 4

积分
873
金钱
873
注册时间
2017-7-5
在线时间
130 小时
发表于 2019-3-2 10:53:29 | 显示全部楼层 |阅读模式
7金钱
24c20的地址是0xA0,24C512的地址是0xA4,有没有人这样用过,单片单独读写都是可以的,虽然地址不同两片连起来存储的数据会乱,不知道是我程序问题还是不可以这样串起来?
用的模拟iic,原子的例程修改的
[mw_shl_code=c,true]#define Package_Base_Addr 512
void Write_24C512_Byte(unsigned int WriteAddr,unsigned char DataToWrite)
{
WriteAddr= WriteAddr+ Package_Base_Addr;
          I2C_Start();
                I2C_SendByte(0xA4);            //发送写命令
                I2C_WaitAck();
                I2C_SendByte(WriteAddr>>8);//发送高地址
    I2C_WaitAck();
    I2C_SendByte(WriteAddr%256);   //发送低地址
    I2C_WaitAck();
    I2C_SendByte(DataToWrite);     //发送字节
    I2C_WaitAck();
    I2C_Stop();//产生一个停止条件
    delay_ms(5);
}

unsigned char Read_24C512_Byte (unsigned int ReadAddr)
{
          u8 temp=0;
ReadAddr = ReadAddr+ Package_Base_Addr;
    I2C_Start();
                I2C_SendByte(0xA4);           //发送写命令
                I2C_WaitAck();
                I2C_SendByte(ReadAddr>>8);//发送高地址
    //I2C_WaitAck();
    I2C_SendByte(ReadAddr%256);   //发送低地址
    I2C_WaitAck();
    I2C_Start();
    I2C_SendByte(0xA5);           //进入接收模式
    I2C_WaitAck();
    temp=I2C_ReceiveByte();
                I2C_NoAck();
    I2C_Stop();//产生一个停止条件
    return temp;
}[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

不同系列分开设计了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

78

帖子

0

精华

高级会员

Rank: 4

积分
873
金钱
873
注册时间
2017-7-5
在线时间
130 小时
 楼主| 发表于 2019-3-2 10:53:30 | 显示全部楼层
回复

使用道具 举报

16

主题

78

帖子

0

精华

高级会员

Rank: 4

积分
873
金钱
873
注册时间
2017-7-5
在线时间
130 小时
 楼主| 发表于 2019-3-2 11:16:59 | 显示全部楼层
24c02的是A0 A1 A2,24C512的只有A0 A1,是不是这方面的问题?
回复

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2014-12-4
在线时间
717 小时
发表于 2019-3-2 12:32:54 | 显示全部楼层
如果真的会导致数据变乱,可以使能保护脚
回复

使用道具 举报

16

主题

78

帖子

0

精华

高级会员

Rank: 4

积分
873
金钱
873
注册时间
2017-7-5
在线时间
130 小时
 楼主| 发表于 2019-3-2 12:58:25 | 显示全部楼层
loudianxin 发表于 2019-3-2 12:32
如果真的会导致数据变乱,可以使能保护脚

如果真是挂在同一总线的问题的话,这样还有个问题,写保护使能了会不会读取错乱。。。早知道就分开设计的
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8036
金钱
8036
注册时间
2014-8-13
在线时间
1595 小时
发表于 2019-3-2 13:06:24 | 显示全部楼层
楼主放弃吧。现在很多24系列的iic存储器,设计的并不严格,有的地址脚改做他用了(我碰到过的,地址脚干脆不起作用,或者挪做写保护),除非你能保证24系列存储器参数比较严格,要不然估计是不行了。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2019-3-2 23:26:51 | 显示全部楼层
mack13013 发表于 2019-3-2 13:06
楼主放弃吧。现在很多24系列的iic存储器,设计的并不严格,有的地址脚改做他用了(我碰到过的,地址脚干脆 ...

不是设计不严格,一开始的24系列EEPROM是1字节寻址,那么范围是0——255,那么大于256字节的EEPROM为了兼容老设计就“占用”了地址线,每超过256字节则占用一根地址线,24c04——24c16遵循这样的规则,芯片手册有明确说明。24c32以上是2字节寻址,不再“占用”地址线!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 00:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表