我们使用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, .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个I2C从服务器连接到同一总线。我的理解正确吗?
谢谢,PM_Dialog
你好,
是的
你能让我们知道任何工作的例子与两个i2c奴隶。谢谢
嗨sripathi,
谢谢你的解释。没有这样的例子,它不可能与2 I2C从服务器同时和在同一总线上交互。你应该在同一时间只与一个slave进行交互。
谢谢,PM_Dialog
你好,
不确定它是否仍然相关,我通过创建i2c_target_select函数解决了这个问题,该函数使用一组新的参数重新初始化i2c外设(例如。不同的目标地址)。通信不是严格地同时发生,而是按顺序发生的,一旦一个传输完成,另一个就开始。
不幸的是,i2c_set_target_address函数只能在i2c外设被破坏并由i2c_init用于设置外设时调用。
Br J
嗨jsageder,
谢谢你的评论和反馈!
谢谢,PM_Dialog