我们正在使用da14531开发套件,并尝试与两个i2c传感器、azotec trackpad模块和mcp23017 gpio扩展器通信。我们已经为模块编写了驱动程序,并且能够与模块独立通信,然而,当我们同时尝试与两个模块通信时,我们面临一个问题。在我们的代码中,我们将i2c配置结构声明为
// I2C静态的配置结构const i2c_cfg_t i2c_cfg = {.clock_cfg. 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, .speed = 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 slave的工作示例。谢谢
嗨sripathi,
谢谢你的澄清。不存在这样的例子,并且不可能在同一总线上同时与2个I2C从站进行交互。你同一时间只能和一个奴隶互动。
谢谢,PM_Dialog
你好,
不确定它是否仍然相关,我通过创建一个i2c_target_select函数来解决这个问题,该函数使用一组新的参数重新初始化i2c外设(例如。不同的目标地址)。通信不是严格地同时发生,而是按顺序发生,一个传输一结束,另一个就开始了。
不幸的是,i2c_set_target_address函数只能在i2c外设被禁用时调用,并且由i2c_init用来设置外设。
Br J
嗨jsageder,
谢谢你的评论和反馈!
谢谢,PM_Dialog