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.

[参考译文] CC1310:如何配置 DIO 以在调用睡眠后保持高电平(packet_interval);

Guru**** 2482105 points
Other Parts Discussed in Thread: CC1310

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1244083/cc1310-how-to-configure-the-dio-to-maintain-high-level-after-calling-sleep-packet_interval

器件型号:CC1310

您好!

SDK 为4.20、 项目为不带 RTOS 的 rfPacketTx。

如何配置 DIO4和 DIO5以在调用 sleep 后保持高电平(packet_interval);?

向 rfPacketTx 项目添加 I2C 函数。 调用 SLEEP (packet_interval)后、测得 DIO4和 DIO5为0.63V、不处于高电平。

相关代码如下所示:

I2C_init();
// initialize optional I2C bus parameters
I2C_Params params;
I2C_Params_init(&params);
params.bitRate = I2C_100kHz;
// Open I2C bus for usage
I2C_Handle i2cHandle = I2C_open(0, &params);
// Initialize slave address of transaction
I2C_Transaction transaction = {0};
transaction.slaveAddress = 0x44;

uint8_t iic_write_data[] = {0xCC,0x44};
uint8_t iic_read_data[3];

// Write to I2C slave device
transaction.writeBuf = iic_write_data;
transaction.writeCount = sizeof(iic_write_data);
transaction.readCount = 0;
I2C_transfer(i2cHandle, &transaction);

usleep(10000);

// Read from I2C slave device
transaction.readBuf = iic_read_data;
transaction.readCount = sizeof(iic_read_data);
transaction.writeCount = 0;
I2C_transfer(i2cHandle, &transaction);

//。。。

sleep(PACKET_INTERVAL);

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

    您好

    我在 rfPacketTX 示例中测试了您的 I2C 代码、无法看到相同的东西。 在调用睡眠后、我在 DIO 4和 DIO5上测量到3.3V 的输出。

    您可以尝试在调用 SLEEP 之前关闭 I2C 驱动程序、并 在 BoardGpioInitTable 中将 DIO4和 DIO5配置为高电平:

    /*
     *  =============================== PIN ===============================
     */
    #include <ti/drivers/PIN.h>
    #include <ti/drivers/pin/PINCC26XX.h>
    
    const PIN_Config BoardGpioInitTable[] = {
    
        CC1310_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,       /* LED initially off          */
        CC1310_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,       /* LED initially off          */
        CC1310_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS,          /* Button is active low       */
        CC1310_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS,          /* Button is active low       */
        CC1310_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MIN,  /* External flash chip select */
        CC1310_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN,                                              /* UART RX via debugger back channel */
        CC1310_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL,                         /* UART TX via debugger back channel */
        CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN,                                            /* SPI master out - slave in */
        CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN,                                            /* SPI master in - slave out */
        CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN,                                             /* SPI clock */
    
        CC1310_LAUNCHXL_I2C0_SCL0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
        CC1310_LAUNCHXL_I2C0_SDA0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
    
        PIN_TERMINATE
    };

    Siri

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

    你好、Siri、

    感谢你的帮助。

    我将代码配置如下、但睡眠时仍处于低电平。

    在我看来、上拉输入可能要好得多。 我错了吗?

    CC1310_LAUNCHXL_I2C0_SCL0 | PIN_INPUT_EN|PIN_PULLUP

    CC1310_LAUNCHXL_I2C0_SDA0  |  PIN_INPUT_EN|PIN_PULLUP

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

    我将邀请具有硬件专业知识的人来跟进此问题。  您是否在总线上连接了多个 I2C 外设、如果是、在您进入睡眠模式时如何配置这些外设?

    Siri

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

    你好、Siri、

    打开 I2C 以读取传感器数据、然后关闭。 在关闭时、处于待机模式下、I2C 的 DIO 保持高电平。

    我们发现功耗测试中存在泄漏、并且在连接逻辑分析仪时不会发生泄漏。 通过万用表、已知 I2C 的引脚处于悬空状态、不是0V 或 VCC 电压、而是处于中间状态。

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

    器件型号:CC1310

    您好!

    我的问题仍然存在。

    首先、打开 I2C 读取传感器数据、然后关闭。 在关闭时、处于待机模式下、 我希望 I2C 的 DIO 保持高电平。

    我们发现功耗测试中存在泄漏、并且在连接逻辑分析仪时不会发生泄漏。 通过万用表、已知 I2C 的引脚处于悬空状态、不是0V 或 VCC 电压、而是处于中间状态。

    如何处理这些问题?