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.

CC2650关闭spi相关的io,实现低功耗

效果如下:

1、当点击按钮后,关掉传感器电源,但是2650和传感器spi是相互连接的,但是spi的输出管脚有漏电流,所以进入低功耗的时候 调用DiableIOs,是输出管脚浮空。

2、再次点击按钮后,开启传感器电源,让传感器工作,调用EnableIOs开启spi的输出。

问题:

1、不知道我这种方式是否可行,下面两个函数是否写错。

2、PIN_setConfig的第二个参数是mask,不明白第二个参数的用途,这里使用的是PIN_BM_ALL,不知是否有问题

/*
#define PPG_CLK IOID_0
#define PPG_MISO IOID_1
#define PPG_MOSI IOID_2
#define PPG_CS IOID_3
*/

void DiableIOs()
{
PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_DIS);
PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_DIS);
PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_DIS);
}

void EnableIOs()
{
PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_EN);
PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_EN);
PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_EN);
}

  • 你只更改了管脚吗?SPI driver也需要关闭,PIN_setConfig的详细描述请看:

  • 那我还开了串口,还要关掉串口,还要关掉spi。
    那个standby demo感觉缺少参照性。感觉这一路下来stanby挺麻烦的。shutup应该不用管这么多吧,直接进入shutup模式就行了。

    另:
    你这里说的关闭spi具体调用哪个函数

  • void DiableIOs()
    {
    //PIN_setConfig(m_csPinHandle, PIN_BM_ALL, PPG_CS | PIN_GPIO_OUTPUT_DIS);
    //PIN_setConfig(m_mosiPinHandle, PIN_BM_ALL, PPG_MOSI | PIN_GPIO_OUTPUT_DIS);
    //PIN_setConfig(m_clkPinHandle, PIN_BM_ALL, PPG_CLK | PIN_GPIO_OUTPUT_DIS);

    mySPI_close(0);

    closeUart();

    PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_CS | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_MOSI | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_MISO | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_csPinHandle, PIN_BM_DRVSTR, PPG_CLK | PIN_INPUT_EN | PIN_NOPULL );


    PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_LED | PIN_INPUT_EN | PIN_NOPULL );

    PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_INT | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_POW_EN | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_RX | PIN_INPUT_EN | PIN_NOPULL );
    PIN_setConfig(m_ledPinHandle, PIN_BM_DRVSTR, PPG_TX | PIN_INPUT_EN | PIN_NOPULL );



    PINCC26XX_setWakeup(PpgBtnTableWakeUp);

    //hPins = PIN_open(&LedPinState, LedPinTable);
    Power_shutdown(NULL, 0);

    }

    这么干, 电流300多微安

    实测cs和clk还是高电平对外输出电流,是这么操作io不正确么?

  • 能否给点参考代码,该来改去,还剩300ua。