Embedded 具有相同地址的i2c从设备

Embedded 具有相同地址的i2c从设备,embedded,rfid,i2c,stm32,eeprom,Embedded,Rfid,I2c,Stm32,Eeprom,我正在STM32 F107上开发一个嵌入式系统,它通过i2c与两个从设备进行通信:一个rfid阅读器和一个eeprom模块。 这两个设备具有相同的从机地址A0(用于写入操作)和A1(用于读取操作)。 如果一台机器只使用一个设备,它就可以正常工作。但是如果我同时使用它们,我就有问题了。 首先,我从rfid读卡器读取卡id,然后我将其写入eeprom(到目前为止,一切正常),当我再次尝试从rfid读卡器读取时,我会得到错误的输入数据,即使我更换了卡,输入数据也始终相同。 发生了什么,我能做些什么来解

我正在STM32 F107上开发一个嵌入式系统,它通过i2c与两个从设备进行通信:一个rfid阅读器和一个eeprom模块。 这两个设备具有相同的从机地址A0(用于写入操作)和A1(用于读取操作)。 如果一台机器只使用一个设备,它就可以正常工作。但是如果我同时使用它们,我就有问题了。 首先,我从rfid读卡器读取卡id,然后我将其写入eeprom(到目前为止,一切正常),当我再次尝试从rfid读卡器读取时,我会得到错误的输入数据,即使我更换了卡,输入数据也始终相同。
发生了什么,我能做些什么来解决问题?

设备必须有不同的地址。您应该重新配置任一设备以使用不同的地址以避免冲突。这通常通过跳线(rfid读卡器上的JP1、JP2)或芯片上的一些地址引脚(eeprom芯片上的A0和A1引脚)来完成。

如果没有额外的引脚可用于移动I2C设备,请尝试使用I2C缓冲区或I2C MUX。

您不能使用跳线修改其中一个设备的地址吗?jp1和jp2是您正在谈论的跳线吗?是的,手册第6页。虽然更改一个设备的地址是最好的选择,但如果出于某种原因您无法做到这一点,那么将其中一个设备移动到另一组引脚可能是一种选择-或者另一个I2C接口引擎(如果可用),或者只是在GPIOs上敲打(如果没有)。