MPU6050 和 DS3231 之间的 i2c 地址冲突

问题描述 投票:0回答:2

我正在使用 GY-86 模块上的 MPU6050。我还有一个 DS3231 RTC 模块。当我搜索每个数据表时,我发现 DS3231 和 MPU6050 具有相同的 i2c 地址,即 0x68。我在 MPU 数据表中读到,如果我将 AD0 引脚连接到 3.3,则地址变为 0x69。但我在我的模块上找不到任何 AD0 。我只有 vcc-3.3v-SCL-SDA-INTa-FSYNC-DROY 我想我必须更改mpu6050或ds3231的i2c地址。这样他们就不会发生冲突。如何更改 MPU 或 DS 模块的 i2c 外观。

i2c
2个回答
1
投票

查看GY-86原理图我发现,AD0引脚在板上硬接地。这意味着除非您能在板上找到要切割的痕迹(不太可能),否则无法更改 MPU6050 从机地址。据我所知,DS2321也无法更改其地址。

这给你留下了几个选择:

  1. 将设备更改为具有不同地址的不同型号。我想你真的不想这样做。
  2. 如果您的主设备(您未指定)有多个 I2C 总线控制器,请将每个设备连接到不同的总线。
  3. 使用 I2C 多路复用器将设备放置在不同的“虚拟”总线上。这是一个带有 1-8 多路复用器的模块,它应该可以完成这项工作(尽管实际上只需要 1-2 个)。

0
投票

在解决这个确切的问题后,我很幸运地来到了这个问题。 我知道这是一篇非常旧的帖子,但它可能会帮助人们节省时间来解决问题。 MPU 上有一个 A0 引脚,将电源连接到该引脚 5V 或 3.3V 都适合我。

然后转到

Adafruit_MPU6050.h
文件并找到这一行

#define MPU6050_I2CADDR_DEFAULT                                                \
  0x68                         ///< MPU6050 default i2c address w/ AD0 high

将值更改为

0x69
所以它应该是

#define MPU6050_I2CADDR_DEFAULT                                                \
  0x69                         ///< MPU6050 default i2c address w/ AD0 high
© www.soinside.com 2019 - 2024. All rights reserved.