极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9784|回复: 1

请教各位I2C是怎么分辨位址的?

[复制链接]
发表于 2013-11-18 13:53:49 | 显示全部楼层 |阅读模式
用I2C跟ADXL345做沟通,碰到几个问题想请教

1.int ADXL345_ADDRESS=0xA7>> 1;// ADXL345地址
请问为什么用0xA7>>1而不是直接用0x53呢?是纯粹是作者的习惯,还是都这样?

2.
  1. Wire.beginTransmission(ADXL345_ADDRESS);
  2. Wire.write(0x2C);//省電/速率
  3. Wire.write(26);//省電模式/100Hz  11010
  4. Wire.endTransmission();
复制代码
请问这个我可以理解先进入0xA7后在进入0x2c为然后输入模式(11010)
那我想再重新进入0X2D内将它设置为1010我可以直接写成下面这样吗?
  1.   Wire.beginTransmission(ADXL345_ADDRESS);
  2.   Wire.write(0x2C);//省電/速率
  3.   Wire.write(26);//省電模式/100Hz  11010

  4.   Wire.write(0x2D);//喚醒
  5.   Wire.write(10);//1010
  6.   Wire.endTransmission();
复制代码
还是我必须再用一次Wire.beginTransmission();
然后写成这样呢?
  1.   Wire.beginTransmission(ADXL345_ADDRESS);
  2.   Wire.write(0x2C);//省電/速率
  3.   Wire.write(26);//省電模式/100Hz  11010
  4.   Wire.endTransmission();

  5.   Wire.beginTransmission(ADXL345_ADDRESS);
  6.   Wire.write(0x2D);//喚醒
  7.   Wire.write(10);//1010
  8.   Wire.endTransmission();
复制代码
回复

使用道具 举报

发表于 2013-11-23 17:23:07 | 显示全部楼层
0xA7就是这个器件的I2C 7位地址!

但是,真正用的时候,是对I2C器件先进行写操作,这时候是要用八位地址,是在原来七位地址的基础上后边加一位,叫做读写标志位,写入时叫写地址,读操作时,要用到读地址+具体寄存器.......具体建议你去看I2C协议,上面全有!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 11:27 , Processed in 0.035703 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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