This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC1350:将 CC1350与2个单独的 I2C 设备连接

Guru**** 2387080 points
Other Parts Discussed in Thread: CC1350
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1071427/cc1350-interfacing-cc1350-with-2-separate-i2c-devices

部件号:CC1350

您好,

客户在使用客户主板中的 IC 时遇到问题,请参阅以下详细信息。

您好,我正在尝试将 cc1350与2个单独的 I2C 设备连接。 它们目前不在同一个 PCB 总线上,这意味着它们连接到1350上的2组引脚(例如 dev1在1和2上,dev2在8,9上)。 是否可以使用 cc1350与双方通信? 我尝试在打开另一个接口之前确保关闭了一个接口,但在第一次尝试设置第二个接口时,程序挂起。”

请提前感谢。

此致,
五月纳德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只要您以前设置驱动程序,并在将驱动程序用于一组指定的引脚后关闭驱动程序,就可以这样做。  

    您如何在两个 IC 接口之间设置和切换物理针脚?  

    [引用 userid="451819" url="~ë/support/wireless-connectivity /蓝牙组/Bluetooth/f/Bluetooth-forum/1071427/cc1350- connecting-cc1350-带有-2个独立 i2c-devices "],但该程序在第一次尝试设置第二个接口时挂起

    此外,调试并找出程序在代码中的挂起位置。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    以下是客户的回应。


    “第一个驱动程序在打开第二个驱动程序之前已关闭。 当我使用调试器查看问题所在时,似乎正在等待着一个 hwi 文件”

    此致,
    五月纳德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是在哪个代码行? 此外,如果从不使用第一个接口,第二个 I2C 接口是否起作用?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    请参阅以下客户的回复。

    “我不知道确切的行,当行挂起时,我暂停执行,这就是它给我的表现

    "

    此致,
    五月纳德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ——如果只使用一个接口,两个 I2C 接口是否都能正常工作? (接口之间无切换)

    客户应将 I2C 驱动程序文件包括在项目中,并通过单一步骤来查看代码出现故障的行。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    刚刚收到客户的回复,请参见下面的详细信息。

    “这似乎是第二个接口的问题。 它打开了 I2C 接口,但在事务处理时,当我通过以下步骤时,它会在此行挂起:

    "

    此致,
    五月纳德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何设置接口? 以下代码显示了如何使用两个不同的针脚组在两个接口之间进行交换:

    void *mainThread(void *arg0)
    {
    uint8_t txBuffer[2];
    uint8_t rxBuffer[4];
    I2C_Handle i2c1, i2c2;
    I2C_Params i2cParams1, i2cParams2;
    I2CCC26XX_I2CPinCfg pinCfg;
    I2C_Transaction i2cTransaction;
    
    I2C_init();
    
    I2C_Params_init(&i2cParams1);
    i2cParams1.bitRate = I2C_100kHz;
    
    i2c1 = I2C_open(Board_I2C_TMP, &i2cParams1);
    if (i2c1 == NULL)
    {
    while (1);
    }
    
    i2cTransaction.writeBuf = txBuffer;
    i2cTransaction.readBuf = rxBuffer;
    
    // Write 0x01 to register 0x0F (start conversion)
    i2cTransaction.slaveAddress = 0x41;
    txBuffer[0] = 0x0F;
    txBuffer[1] = 0x01;
    i2cTransaction.writeCount = 2;
    i2cTransaction.readCount = 0;
    I2C_transfer(i2c1, &i2cTransaction);
    
    I2C_close(i2c1);
    
    
    
    I2C_Params_init(&i2cParams2);
    pinCfg.pinSDA = CC1310_LAUNCHXL_DIO12;
    pinCfg.pinSCL = CC1310_LAUNCHXL_DIO1;
    i2cParams2.custom = &pinCfg;
    
    
    i2c2 = I2C_open(Board_I2C_TMP, &i2cParams2);
    if (i2c2 == NULL)
    {
    while (1);
    }
    
    i2cTransaction.writeBuf = txBuffer;
    i2cTransaction.readBuf = rxBuffer;
    
    // Write 0x01 to register 0x0F (start conversion)
    i2cTransaction.slaveAddress = 0x41;
    txBuffer[0] = 0x0F;
    txBuffer[1] = 0x01;
    i2cTransaction.writeCount = 2;
    i2cTransaction.readCount = 0;
    I2C_transfer(i2c2, &i2cTransaction);
    
    I2C_close(i2c2);
    
    return (NULL);
    }

    另见 https://dev.ti.com/tirex/explore/content/simplelink_cc13x0_sdk_4_20_01_03/docs/tidrivers/doxygen/html/struct_i2_c_c_c26_x_x___i2_c_pin_cfg.html#details

    此外,在信号灯上出现代码之前,I2C 总线上是否有任何活动?