OpenEdv-开源电子网

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

IIC_Send_Byte(0XA0+((WriteAddr/256)<<1))之我的见解

[复制链接]

18

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2015-1-16
在线时间
28 小时
发表于 2015-1-22 18:33:30 | 显示全部楼层 |阅读模式
因为是刚学习STM32,所以也看到很多人对这行代码不是很理解,我就来说说我自己的理解吧,也不知道是不是就这么,不对的话大神们多多指正,
首先因为EPPROM有不同型号,24C02 地址1010 A1 A2 A3 R/W 而其他的型号 A1 A2 A3 则变为 a10 a9 a8 。

其实0XA0相当于一扇门,而这一扇门里面有256位住户,也就是一个字节。WriteAddr/256这句话,就当于超过了一个字节,则需要移位了。
1010 A1 A2 a8 0 就等于另外一扇门, 里面也有256位住户。若再超过,则使用A2的门地址,依次类推。

不知道我的理解正不正确。请大家多多指教!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-9-10
在线时间
7 小时
发表于 2017-2-16 16:11:36 | 显示全部楼层
该类器件要通过iic总线操作,读写过程中都要先寻址,这类器件地址有两个字节组成,如下表,1010是固定的,A表示器件地址,可以拉高和拉低,iic总线上可以并接2的几次方个器件。P表示具体的内部地址数,比如at24c02共有256个字节,第二个地址字节完全可以满足,不用P。但是at24c04一个有512个字节,需要9位地址线,第一个字节中的p就表示地址线了,p=0表示低256字节,1表示高256字节。
注意:一般页写可以连续写8个数据。主机每发送一个字节都要接受从机的应答信号。


该类器件是采用iic总线进行操作的,器件地址根据容量的不同稍有不同,如下
对于芯片的A0,A1,A2脚:
24C01/02,A0,A1,A2都是从设备地址。
24C04,A1,A2是从设备地址,A0没用
24C08,A2是从设备地址,A0,A1没用
24C16及以上,A0,A1,A2都没用了。

其中,A表示期间地址,p表示也地址,在读写的时候首先是起始条件+器件地址
器件地址如上所示在16k中,需要两个字节表示内部地址,正是p2/1/0 和8位具体的地址
回复 支持 2 反对 0

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164817
金钱
164817
注册时间
2010-12-1
在线时间
2098 小时
发表于 2015-1-22 21:45:37 | 显示全部楼层
其实就是对于大容量的EEPROM型号,本来作为片选地址线的1~3位用来表示数据地址了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2015-1-16
在线时间
28 小时
 楼主| 发表于 2015-1-23 14:36:53 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,程序中的IIC_Wait_Ack();等待应答,我都修改为IIC_Ack(); 应答信号,程序也能够正常运行,那么为什么要用IIC_Wait_Ack()呢?
回复 支持 反对

使用道具 举报

9

主题

558

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1597
金钱
1597
注册时间
2014-6-27
在线时间
845 小时
发表于 2015-1-23 15:08:17 | 显示全部楼层
回复【3楼】Fong0716:
---------------------------------
只能说编程就死编程了,多联系下生活嘛,你发送东西给人家,是不是希望人家回应一下,东西收到了,人家发送东西给你,你是不是也要礼貌回应一下东西收到了,你发送数据,还发应答,你的假应答仍然代替不了别人的真应答,假的就是假的,有和没有一样。所以你写,就等待应答,读就发送应答,合情合理。
回复 支持 反对

使用道具 举报

28

主题

1497

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2015-1-23 15:18:47 | 显示全部楼层
何须琢磨出那么多类比,不过就是协议的首字节定义。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

39

主题

234

帖子

0

精华

高级会员

Rank: 4

积分
630
金钱
630
注册时间
2016-8-25
在线时间
57 小时
发表于 2017-2-22 16:07:51 | 显示全部楼层
Fong0716 发表于 2015-1-23 14:36
回复【2楼】正点原子:
---------------------------------
原子哥,程序中的IIC_Wait_Ack();等待应答,我都 ...

使用iic_wait_ack()我感觉方便查错
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-7-19
在线时间
6 小时
发表于 2017-7-21 16:38:11 | 显示全部楼层
wuxixiaoli 发表于 2017-2-16 16:11
该类器件要通过iic总线操作,读写过程中都要先寻址,这类器件地址有两个字节组成,如下表,1010是固定的,A ...

你这说的什么意思?表在哪?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2020-4-17
在线时间
5 小时
发表于 2020-4-17 22:29:14 | 显示全部楼层
CHANGEFu 发表于 2017-7-21 16:38
**** 作者被禁止或删除 内容自动屏蔽 ****

芯片手册里有
QQ截图20200417222750.png
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-3-29 22:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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