我们正在使用DA14531开发套件,并尝试与两个I2C传感器,Azotec TrackPad模块和MCP23017 GPIO扩展器进行通信。我们为模块提供了写入驱动程序,并且能够独立地与模块通信,但是当我们同时尝试与两者进行通信时我们面临问题的模块。在我们的代码中,我们已声明I2C配置结构
//配置结构为I2C静态常量i2c_cfg_t i2c_cfg = {.clock_cfg.ss_hcnt = I2C_SS_SCL_HCNT_REG_RESET,.clock_cfg.ss_lcnt = I2C_SS_SCL_LCNT_REG_RESET,.clock_cfg.fs_hcnt = I2C_FS_SCL_HCNT_REG_RESET,.clock_cfg.fs_lcnt = I2C_FS_SCL_LCNT_REG_RESET,.restart_en = I2C_RESTART_ENABLE,。速度= I2C_SPEED_FAST,.mode = i2c_mode_master,.addr_mode = i2c_addressing_7b,.address = mcp23017_address,.tx_fifo_level = 1,.rx_fifo_level = 1,};
每次我们都与我们正在设置的I2C设备进行通信
i2c_set_target_address(i2cdevice_address);
并尝试与设备进行通信。
您可以将我们指向一些关于如何与多个I2C设备同时通信的示例。我们经历了EEPROM榜样,但事情尚不清楚。非常感谢您的帮助。
嗨Sripathi,
谢谢你的问题。因此,如果我能正确理解,您的要求是将2 x I2C从站连接到同一总线。我的理解是否正确?
谢谢,PM_DIALOG.
你好,
是的
您能否请告诉我们两个I2C从站的任何工作示例。谢谢
嗨Sripathi,
谢谢你的澄清。没有这样的示例,并且不可能同时和在同一总线上与2个I2C从站交互。您应该同时只与一个从属互动。
谢谢,PM_DIALOG.
你好,
不确定是否仍然相关,我通过创建I2C_Target_Select函数来解决它,该函数重新初始化具有新的参数集(例如,不同的目标地址)。通信不会严格地同时发生但顺序地发生,一旦一个转移完成,另一个开始就开始。
不幸的是,只有在禁止I2C外设时才调用I2C_SET_TARGET_ADDRESS功能,并且由I2C_INIT使用以设置外设。
BR,J.
嗨Jsagerer,
感谢您的评论和反馈!
谢谢,PM_DIALOG.