I2C主从地址

时间:2017-12-01 20:34:45

标签: embedded i2c master-slave

我正在开展一个项目,我正在尝试实现I2C主从通信,以便从磁传感器读取一些数据。这一切都好,我已经编写了代码。但是,我不太确定通信实际发生所需的从地址。我正在使用的主板可以容纳STM32ARM®Cortex™-M3和Cortex™-M4 MCU。我不知道它是否重要,但我使用的MCU是STM32F107VCT6。

我需要输入地址的代码部分位于以下标记为“SLAVE_ADDRESS_GOES_HERE”的函数中:

uint8_t Magnet_readReg(const uint8_t regAdd)
  {
    uint8_t pom[1] = {0};
    pom[0] = regAdd;
    I2C1_Start();
    I2C1_Write(SLAVE_ADDRESS_GOES_HERE, pom, 1, END_MODE_RESTART);
    I2C1_Read(SLAVE_ADDRESS_GOES_HERE, pom, 1, END_MODE_STOP);

    return pom[0];
  }

结果应该是一些能告诉我磁场有多强的数字。它有三个不同的值作为输出,因为它计算三个轴中每个轴的值(是的,它是单词轴的正确复数),因此它可以用作例如指南针。

现在的诀窍是我没有得到任何结果,因为我不知道传感器的实际地址。因此,我将分享我正在使用的传感器的数据表。我不确定我是否正确阅读。

这是数据表:

https://www.memsic.com/userfiles/files/Datasheets/Magnetic-Sensors-Datasheets/MMC3416xPJ_Rev_C_2013_10_30.pdf

解决。
事实证明,董事会本身存在问题。因此,无法建立连接。写入地址为60H,读取地址为61H。 30H是地址,但是当您在LSB位置添加零或一个时,您将获得60H或61H。

1 个答案:

答案 0 :(得分:0)

传感器的I2C地址在您提供的数据表的第4页中有所描述。您必须阅读设备包装上的标记,然后使用" Number"中的表格。至"零件编号"在数据表中确定您的确切部分。最后,使用"订购指南"下的表格。找到设备的工厂编程的I2C从设备地址。

鉴于您后来指定您的7位I2C从机地址为0x30,那么您必须将部件号MMC3416 0 PJ,应标记为:

0
XX