OpenEdv-开源电子网

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

IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)),(EE_TYPE>AT24C16),IIC_Wait_Ack()的理解

[复制链接]

69

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2014-6-21
在线时间
0 小时
发表于 2014-8-24 15:19:06 | 显示全部楼层 |阅读模式
5金钱
看了以前询问的几个帖,但是还是有些疑问。
(1)选择AT24C16做为比较基准,说是把A2、A1、A0当做地址,再加上一个字节的地址就是十一位地址2k空间,这里我想问一下A2、A1、A0不是用于选择器件地址吗?与操作的内存单元有何关系?别说datasheet。
(2)24C02与24WC02还是有些不同的,但是编程时你是用24wc02编的吧?
(3)IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)),(ReadAddr/256)<<1)看的不是太懂,请言简意赅的回答。
(4)IIC_Wait_Ack();返回0(应答),返回1(没应答)。之前有问这个的,说是连续读写的时候才起作用,问题时程序中也没有对没应答情况的处理啊?

最佳答案

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

回复【3楼】mengxiao1980: --------------------------------- 看24cXX的数据手册。 一切都在数据手册里面。 看不懂就多看几遍。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-24 15:19:07 | 显示全部楼层
回复【3楼】mengxiao1980:
---------------------------------
看24cXX的数据手册。
一切都在数据手册里面。
看不懂就多看几遍。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-24 23:33:31 | 显示全部楼层
楼主自己写一套代码吧.
这样你的问题不但都解决了,还能帮人解决问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

69

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-25 09:40:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
看不懂怎么写,现在学习才看你的代码。
回复

使用道具 举报

69

主题

173

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2014-6-21
在线时间
0 小时
 楼主| 发表于 2014-8-25 21:17:54 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
请原子哥简单回答一下第四条,不理解何用法。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-25 23:10:46 | 显示全部楼层
回复【5楼】mengxiao1980:
---------------------------------
很多时候忽略了这个应答判断.
你可以自己加上去.
另外,我们例程没有连续读写.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2015-4-28
在线时间
2 小时
发表于 2015-11-20 18:22:30 | 显示全部楼层
唉,想要个答案这么难
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2013-11-5
在线时间
4 小时
发表于 2017-11-24 18:08:45 | 显示全部楼层

AT24CXX数据手册之设备寻址解读

本帖最后由 华兄 于 2017-11-28 17:19 编辑

详细解读:https://wenku.baidu.com/view/689 ... 4e852458fb39cd.html
http://huaxiongshangpu.taobao.com
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-29
在线时间
50 小时
发表于 2018-2-5 20:35:30 | 显示全部楼层
(1)24C02、04、08、16的A2.A1.A0不一定就是器件地址,他们三个有可能被字地址占用了,比如说24C04它是4K的,包含512个字节,这样之前的8位字地址就不够了,占用了一个A0凑了9个位的地址来对512个字节进行寻址,对于2408,2416依次累加。
(2)没看过24WC02没看过,不过应该差不多,顶多是建立和保持时间不一样?
(3)看懂第一个基本这个就明白了,E2PROM的读写时序:起始位后跟的器件地址其实不一定是器件地址,对于2402是标准的器件地址,但对于2404它的A0位被字地址占用了,ReadAddr就是字地址,拿24C04打比方,ReadAddr/256就是把字地址的最高位提出来给A0了(凑成了器件地址),左移一位是给读写位留出位置。
(4)IIC_Wait_Ack()返不返回的没多大意思(我觉摸着返回值的作用就是为了退出那个while死循环。。。),但是不管是不是连续读写它都有存在的必要,因为AT24的时序要求有应答么。
关于24C32以上就去球的吧,估计我也用不上。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2018-3-26
在线时间
10 小时
发表于 2018-8-28 21:33:57 | 显示全部楼层
蹦蹦蹦 发表于 2018-2-5 20:35
(1)24C02、04、08、16的A2.A1.A0不一定就是器件地址,他们三个有可能被字地址占用了,比如说24C04它是4K ...

多谢,看你一席话瞬间明白了,多谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 21:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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