Embedded I2C主从地址

Embedded I2C主从地址,embedded,i2c,master-slave,Embedded,I2c,Master Slave,我正在做一个项目,我试图实现I2C主从通信,以便从磁传感器读取一些数据。没关系,我已经写了代码。但是,我不太确定通信实际发生所需的从属地址。我使用的板可以容纳STM32 ARM®Cortex™-M3和皮质™-M4微控制器。我不知道这是否重要,但我使用的MCU是STM32F107VCT6 我需要输入地址的代码部分位于以下标记为“SLAVE\u address\u GOES\u HERE”的函数中: 结果应该是一些数字,告诉我磁场有多强。它有三个不同的值作为输出,因为它为三个轴中的每个轴计算一个值(

我正在做一个项目,我试图实现I2C主从通信,以便从磁传感器读取一些数据。没关系,我已经写了代码。但是,我不太确定通信实际发生所需的从属地址。我使用的板可以容纳STM32 ARM®Cortex™-M3和皮质™-M4微控制器。我不知道这是否重要,但我使用的MCU是STM32F107VCT6

我需要输入地址的代码部分位于以下标记为“SLAVE\u address\u GOES\u HERE”的函数中:

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

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

以下是数据表:


已解决。

事实证明,董事会本身有问题。因此,无法建立连接。地址是写60小时,读61小时。30H是地址,但当在LSB位置添加0或1时,将得到60H或61H。

您提供的数据表第4页描述了传感器的I2C地址。您必须阅读设备包装上的标记,然后使用数据表中从“编号”到“零件号”的表格来确定确切的零件。最后,使用“订购指南”下的表格查找设备的出厂编程I2C从机地址

鉴于您后来指定7位I2C从机地址为0x30,则您必须具有零件号MMC34160PJ,该零件号应标记为:

0&bullet

XX

传感器上应该有两个数字-第一个是您的从机地址。从机地址在您链接的数据表第4页上有说明。你还不明白什么?您的设备的完整零件号是多少?或者设备上打印了什么号码?好的,谢谢您的快速回复。我可以在星期一试试。那时我可以使用硬件(你知道,大学设备等等)。我不熟悉STM32设备的库,但一定要小心如何将从机地址写入函数-不清楚是将从机地址写入7位数字(0XXXXXXX),还是在传递到函数(xxxxxxx 0)之前将7位数字移位1.我解决了这个问题。说明在编辑后的文章中。感谢您抽出时间阅读本文。:)@埃德金
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];
  }