OpenEdv-开源电子网

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

iic代码的部分解释

[复制链接]

42

主题

208

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2014-6-12
在线时间
35 小时
发表于 2014-10-12 17:49:40 | 显示全部楼层 |阅读模式
看到群里面好多问iic的问题我来解释一下下面这个代码的意思
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0);   //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//发送高地址
IIC_Wait_Ack();  
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据
首先at24c16/32/64/128/256的存储阵列地址字地址 需要两个字节的;此时IIC_Send_Byte(ReadAddr>>8);//发送高地址
IIC_Send_Byte(ReadAddr%8);//发送低地址
else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));这个是考虑到at24c04/08/16的a8,a9,a10的ReadAddr/256得到的对应的a8,a9,a10的值,左移1位就跑到了对应的1010xxxR/W(X可能为a8,a9,a10,A0,A1,A3的任意一个)xxx,具体大家看那个对应芯片的器件地址)然后在和0xa0进行相加得到的就是 1010xxxR/W(X可能为a8,a9,a10,A0,A1,A3的任意一个)


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-12 23:18:52 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

208

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2014-6-12
在线时间
35 小时
 楼主| 发表于 2014-10-13 07:46:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
若是理解有误,还请原子哥指出来啊
回复 支持 反对

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13138
金钱
13138
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-10-13 09:11:28 | 显示全部楼层
回复【3楼】郭刘阳:
---------------------------------
理解的对
学无止境
回复 支持 反对

使用道具 举报

42

主题

208

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2014-6-12
在线时间
35 小时
 楼主| 发表于 2014-10-13 09:43:49 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 12:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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